Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyebarkan Percona XtraDB Cluster 8 untuk Ketersediaan Tinggi

Percona XtraDB Cluster 8.0 didasarkan pada Server Percona untuk MySQL 8.0 yang disematkan dengan API replikasi writeset Galera dan perpustakaan replikasi Galera, untuk membentuk replikasi multi-master yang sangat tersedia untuk server database berbasis MySQL. Percona XtraDB Cluster hadir dengan mesin penyimpanan XtraDB (pengganti drop-in InnoDB) dan mengikuti rilis Oracle MySQL hulu dengan sangat dekat (termasuk semua perbaikan bug di dalamnya), dengan beberapa variabel tambahan dan status khusus untuk build ini.

Dalam posting blog ini, kita akan melihat cara menerapkan Percona XtraDB Cluster 8.0 untuk ketersediaan tinggi menggunakan cara manual dan otomatis.

Fitur Penting

Sebelum kita melangkah lebih jauh dengan langkah-langkah penerapan, ada baiknya menyebutkan fitur penting dan peningkatan signifikan dalam versi utama ini yang didasarkan pada Server Percona untuk MySQL 8.0 (tanpa plugin Replikasi Grup) dan Galera 4:

  • Replikasi streaming - Ini memungkinkan replikasi writeset untuk memproses transaksi data besar dalam fragmen yang lebih kecil dan lebih mudah dikelola, meminimalkan konflik data.
  • Sinkronisasi MySQL berfungsi untuk koordinasi tindakan (wsrep_last_seen_gtid, wsrep_last_written_gtid, wsrep_sync_wait_upto_gtid).
  • Tabel sistem Galera baru, yang akan membantu memantau status cluster di bawah skema "mysql" - wsrep_cluster, wsrep_cluster_members, dan wsrep_streaming_log.
  • Enkripsi Gcache.
  • Infrastruktur wsrep Galera 4 lebih kuat daripada Galera 3. Ini menampilkan eksekusi kode yang lebih cepat dengan penanganan status yang lebih baik, prediktabilitas yang lebih baik, dan penanganan kesalahan.

Untuk daftar lengkap perubahan, lihat catatan rilis.

Penerapan Manual Percona XtraDB Cluster 8.0

Langkah Instalasi

Untuk Cluster Percona XtraDB, kita membutuhkan setidaknya tiga node:

  • db1 (192.168.20.61)
  • db2 (192.168.20.62)
  • db3 (192.168.20.63)

Langkah-langkah yang dijelaskan di bagian ini harus dilakukan pada semua node database (db1, db2 dan db3) yang berjalan di CentOS 8. Pertama, nonaktifkan SELinux (jika tidak, proses IST akan gagal):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

Instal paket repositori Percona:

$ yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Versi stabil terbaru saat ini adalah Percona XtraDB Cluster 8.0, tetapi secara default, paket repositori dikonfigurasi hingga versi 5.7. Paket percona-release berisi skrip yang dapat mengaktifkan repositori tambahan untuk produk yang lebih baru. Mari jalankan skrip itu dan aktifkan repositori khusus pxc80:

$ percona-release setup pxc80
* Disabling all Percona Repositories

On RedHat 8 systems it is needed to disable dnf mysql module to install Percona-Server
Do you want to disable it? [y/N]

Pilih "y" untuk menonaktifkan modul DNF mysql. Ini diperlukan untuk memprioritaskan repositori Percona untuk paket terkait MySQL.

Kemudian, instal Percona XtraDB Cluster dan Percona Xtrabackup terbaru:

$ dnf -y install percona-xtradb-cluster percona-xtrabackup-80

Saat ini, Anda harus menginstal Percona XtraDB Cluster 8.0.0-11.3. Semua paket dependensi akan diinstal seperti paket shared-compat, shared, dan klien. Kami kemudian dapat memulai layanan MySQL untuk konfigurasi awal:

$ systemctl start mysql

Kata sandi root baru akan dibuat selama startup pertama. Kita perlu mengambil informasi kata sandi root terlebih dahulu dari log kesalahan MySQL (defaultnya adalah /var/log/mysqld.log di sistem berbasis RHEL):

$ cat /var/log/mysqld.log | grep 'temporary password'
2020-11-27T06:53:05.929661Z 6 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: <eqo+jXNw2lk

Seperti yang Anda lihat, kata sandi yang dihasilkan adalah "

$ mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Using existing password for root.
Estimated strength of the password: 100

Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:

Estimated strength of the password: 100

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Success.

All done!

Kata sandi root yang dihasilkan akan segera kedaluwarsa setelah login root pertama. Skrip pembantu di atas membantu kita untuk mengonfigurasi kata sandi root MySQL baru, mengatur kebijakan validasi kata sandi, menonaktifkan login jarak jauh untuk root, menghapus database pengujian dan pengguna anonim dan juga memuat ulang tabel hak istimewa.

File konfigurasi default (/etc/my.cnf) dikonfigurasi dengan string koneksi gcomm:// kosong di bawah variabel wsrep_cluster_address, seperti yang ditunjukkan di bawah ini:

wsrep_cluster_address=gcomm://

Baris di atas harus disetel dengan daftar alamat IP dari semua node yang berpartisipasi dalam cluster. Jika Anda melewatkan langkah ini, cluster Galera baru akan dibuat di setiap node (3 cluster 1-node terpisah) setelah layanan di setiap node dimulai. Oleh karena itu, baris berikut harus dimodifikasi sesuai di bawah bagian [mysqld]:

wsrep_cluster_address=gcomm://192.168.20.51,192.168.20.52,192.168.20.53
wsrep_node_address=192.168.20.51 # IP address of this DB host
wsrep_node_name=db1 # any name to identify this DB host
pxc-encrypt-cluster-traffic=OFF

Harapan agar wsrep_cluster_address identik di semua host database, sedangkan wsrep_node_address dan wsrep_node_name harus berbeda di setiap host database. Baris terakhir pxc-encrypt-cluster-traffic=OFF berarti kami ingin menonaktifkan enkripsi untuk lalu lintas cluster. Perhatikan bahwa ini dimaksudkan untuk menyederhanakan langkah penerapan kami, atau jika tidak, kami harus melakukan langkah-langkah manajemen kunci/sertifikat. Jika Anda ingin mengaktifkan enkripsi, lihat artikel ini.

Ulangi langkah-langkah di atas untuk node database yang tersisa sebelum melanjutkan ke bootstrap cluster.

Bootstrap Cluster

Galera mengharuskan Anda untuk memulai sebuah node dalam sebuah cluster sebagai titik referensi sebelum node yang tersisa dapat bergabung dan membentuk cluster. Proses ini dikenal sebagai cluster bootstrap. Bootstrap adalah langkah awal untuk memperkenalkan node database sebagai komponen utama sebelum orang lain melihatnya sebagai titik referensi untuk menyinkronkan data.

Dalam contoh ini, kita akan menggunakan db1 sebagai node referensi dan memulainya dengan perintah bootstrap (Anda juga dapat memilih node lain karena ini adalah cluster baru tanpa data):

$ systemctl stop mysql
$ systemctl start [email protected]
$ systemctl status [email protected]

Setelah dimulai, kita dapat memulai node lain (db2 dan db3) dengan perintah start standar (satu node pada satu waktu):

$ systemctl stop mysql
$ systemctl start mysql

Anda dapat memverifikasi dengan baris berikut di dalam /var/log/mysqld.log:

2020-11-27T08:09:01.964152Z 2 [Note] [MY-000000] [WSREP] Synchronized with group, ready for connections

Pada titik ini, layanan Percona XtraDB Cluster kami telah dimulai dan penerapan manual sekarang telah selesai. Untuk informasi lebih lanjut mengenai proses bootstrap Percona XtraDB Cluster, lihat posting blog ini Cara Bootstrap MySQL atau MariaDB Galera Cluster.

Penerapan Otomatis dengan ClusterControl

Ada dua cara Anda dapat menerapkan Percona XtraDB Cluster 8.0 menggunakan ClusterControl. Anda dapat menggunakan ClusterControl UI (GUI berbasis web) atau ClusterControl CLI yang disebut s9s. Kami akan menunjukkan kepada Anda kedua cara di bagian ini. ClusterControl harus berada di host yang terpisah, jauh dari cluster database Anda. Oleh karena itu, arsitektur kita dapat diilustrasikan seperti ini:

Menginstal ClusterControl

SSH ke server ClusterControl dan instal ClusterControl dengan perintah berikut:

$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 744 install-cc
$ ./install-cc

Ikuti wizard penginstalan hingga penginstalan selesai. Setelah instalasi selesai, buka browser web dan buka http://192.168.20.19/clustercontrol . Buat pengguna admin dan lisensi akan diinstal secara otomatis. Semua penginstalan baru dilengkapi dengan lisensi uji coba untuk edisi perusahaan selama 30 hari. Setelah lisensi uji coba ini kedaluwarsa, versi default akan kembali ke edisi komunitas yang gratis selamanya.

SSH Tanpa Sandi

ClusterControl memerlukan SSH tanpa kata sandi untuk disiapkan dari server ClusterControl ke semua node yang dikelola. Untuk mencapai ini, kita perlu membuat kunci SSH di server ClusterControl terlebih dahulu. Pengguna SSH harus memiliki hak pengguna super (sudo atau root). Dalam hal ini, kita akan menggunakan pengguna root:

$ whoami
root

Sekarang buat kunci SSH untuk root pengguna:

$ ssh-keygen -t rsa # press Enter on all prompts

Selanjutnya, salin kunci publik ke semua node database yang akan kita terapkan dan kelola. Dalam hal ini, semua 3 node Galera:

$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]

Masukkan kata sandi root dari masing-masing host saat diminta.

Uji dengan perintah berikut dan pastikan Anda mendapatkan respons yang benar:

$ ssh [email protected] "ls /root"

Sekarang kita siap untuk men-deploy cluster kita menggunakan ClusterControl UI atau CLI, seperti yang ditunjukkan di bagian selanjutnya.

Penerapan PXC menggunakan UI ClusterControl

Sangat mudah untuk menerapkan Percona XtraDB Cluster dengan ClusterControl, dan secara default, ClusterControl akan mengonfigurasi cluster dengan enkripsi Galera diaktifkan. Setelah SSH tanpa kata sandi dikonfigurasi, buka ClusterControl -> Deploy -> MySQL Galera dan tentukan detail yang diperlukan seperti di bawah ini:

Kemudian, klik "Lanjutkan" untuk melanjutkan ke langkah berikutnya di mana kita mengkonfigurasi spesifikasi MySQL:

Pilih "Percona" untuk Vendor dan 8.0 sebagai Versi. Simpan sisanya sebagai default dan masukkan kata sandi root MySQL. Tentukan alamat IP atau nama host dari database host satu per satu dan pastikan Anda mendapatkan ikon centang hijau setelah setiap penyisipan. Ini menunjukkan bahwa ClusterControl dapat menjangkau host yang sesuai melalui SSH tanpa kata sandi dengan pengguna dan kunci SSH yang disediakan seperti yang didefinisikan pada langkah 1. Klik tombol "Deploy" untuk memulai penerapan.

ClusterControl kemudian memicu tugas penerapan di mana Anda dapat memantau kemajuan penerapan dengan membuka ClusterControl -> Aktivitas -> Pekerjaan -> Buat Cluster -> Detail Pekerjaan Lengkap, seperti yang ditunjukkan pada tangkapan layar berikut:

Setelah proses selesai, Anda akan melihat cluster terdaftar di Dasbor :

Itu dia. Penerapan sekarang selesai.

Penerapan PXC menggunakan ClusterControl CLI

Jika Anda lebih suka menyebarkan cluster menggunakan baris perintah, kita cukup menggunakan alat klien baris perintah ClusterControl yang disebut "s9s". Alat ini akan mengirimkan tugas penerapan ke pengontrol ClusterControl dan akan melakukan semua langkah yang diperlukan untuk menerapkan cluster.

Jalankan perintah berikut di server ClusterControl:

$ s9s cluster --create \
--cluster-type=galera \
--nodes="192.168.20.51;192.168.20.52;192.168.20.53" \
--vendor=percona \
--provider-version=8.0 \
--db-admin-passwd='P4ssw0rdSecr3t' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='My Percona XtraDB Cluster 8.0' \
--log

Anda akan melihat pesan pekerjaan akan muncul dan Anda dapat memantau kemajuan penerapan di sana dan Anda juga dapat memantau kemajuan pekerjaan dari ClusterControl UI -> Aktivitas -> Pekerjaan . Tunggu selama 15-20 menit (tergantung koneksi internet) hingga Anda melihat pemberitahuan penyelesaian pekerjaan. Percona XtraDB Cluster 8.0 kami sekarang telah diterapkan dan Anda dapat melihatnya tercantum di UI ClusterControl.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan MySQL 1241:Operan harus berisi 1 kolom

  2. Cara Menjalankan host flush mysqladmin di Amazon RDS

  3. Mengimpor CSV ke MySQL dengan format tanggal berbeda

  4. MySQL:Tambahkan kolom urutan berdasarkan bidang lain

  5. TAMPAK DROP MySQL