MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Mengonfigurasi Replikasi Cluster-to-Cluster untuk Cluster Percona XtraDB atau Cluster MariaDB

Di blog sebelumnya, kami mengumumkan fitur ClusterControl 1.7.4 baru yang disebut Replikasi Cluster-ke-Cluster. Ini mengotomatiskan seluruh proses penyiapan cluster DR dari cluster utama Anda, dengan replikasi di antaranya. Untuk informasi lebih rinci, silakan merujuk ke entri blog yang disebutkan di atas.

Sekarang di blog ini, kita akan melihat cara mengkonfigurasi fitur baru ini untuk cluster yang sudah ada. Untuk tugas ini, kami akan menganggap Anda telah menginstal ClusterControl dan Master Cluster telah di-deploy menggunakannya.

Persyaratan untuk Master Cluster

Ada beberapa persyaratan agar Master Cluster dapat berfungsi:

  • Percona XtraDB Cluster versi 5.6.x dan yang lebih baru, atau MariaDB Galera Cluster versi 10.x dan yang lebih baru.
  • GTID diaktifkan.
  • Logging Biner diaktifkan pada setidaknya satu node database.
  • Kredensial cadangan harus sama di seluruh Cluster Master dan Slave Cluster.

Menyiapkan Master Cluster

Kluster Master harus siap untuk menggunakan fitur baru ini. Ini membutuhkan konfigurasi dari sisi ClusterControl dan Database.

Konfigurasi ClusterControl

Di node database, periksa kredensial pengguna cadangan yang disimpan di /etc/my.cnf.d/secrets-backup.cnf (Untuk OS Berbasis RedHat) atau di /etc/mysql/secrets-backup .cnf (Untuk OS Berbasis Debian).

$ cat /etc/my.cnf.d/secrets-backup.cnf

# Security credentials for backup.

[mysqldump]

user=backupuser

password=cYj0GFBEdqdreZEl



[xtrabackup]

user=backupuser

password=cYj0GFBEdqdreZEl



[mysqld]

wsrep_sst_auth=backupuser:cYj0GFBEdqdreZEl

Dalam node ClusterControl, edit file konfigurasi /etc/cmon.d/cmon_ID.cnf (di mana ID adalah Nomor ID Cluster) dan pastikan file tersebut berisi kredensial yang sama yang disimpan di secret-backup. cnf.

$ cat /etc/cmon.d/cmon_8.cnf

backup_user=backupuser

backup_user_password=cYj0GFBEdqdreZEl

basedir=/usr

cdt_path=/

cluster_id=8

...

Setiap perubahan pada file ini memerlukan restart layanan cmon:

$ service cmon restart

Periksa parameter replikasi database untuk memastikan bahwa Anda telah mengaktifkan GTID dan Binary Logging.

Konfigurasi Basis Data

Pada node database, periksa file /etc/my.cnf (Untuk OS Berbasis RedHat) atau /etc/mysql/my.cnf (Untuk OS Berbasis Debian) untuk melihat konfigurasi yang terkait dengan proses replikasi.

Percona XtraDB:

$ cat /etc/my.cnf

# REPLICATION SPECIFIC

server_id=4002

binlog_format=ROW

log_bin = /var/lib/mysql-binlog/binlog

log_slave_updates = ON

gtid_mode = ON

enforce_gtid_consistency = true

relay_log = relay-log

expire_logs_days = 7

Kluster MariaDB Galera:

$ cat /etc/my.cnf

# REPLICATION SPECIFIC

server_id=9000

binlog_format=ROW

log_bin = /var/lib/mysql-binlog/binlog

log_slave_updates = ON

relay_log = relay-log

wsrep_gtid_domain_id=9000

wsrep_gtid_mode=ON

gtid_domain_id=9000

gtid_strict_mode=ON

gtid_ignore_duplicates=ON

expire_logs_days = 7

Insted memeriksa file konfigurasi, Anda dapat memverifikasi apakah itu diaktifkan di UI ClusterControl. Pergi ke ClusterControl -> Pilih Cluster -> Nodes. Di sana Anda harus memiliki sesuatu seperti ini:

Peran "Master" yang ditambahkan di simpul pertama berarti bahwa Logging Biner diaktifkan.

Mengaktifkan Logging Biner

Jika Anda tidak mengaktifkan logging biner, buka ClusterControl -> Pilih Cluster -> Nodes -> Node Actions -> Enable Binary Logging.

Kemudian, Anda harus menentukan retensi log biner, dan jalur untuk menyimpan dia. Anda juga harus menentukan apakah Anda ingin ClusterControl memulai ulang node database setelah mengonfigurasinya, atau jika Anda lebih suka memulai ulang sendiri.

Perlu diingat bahwa Mengaktifkan Logging Biner selalu memerlukan restart layanan database .

Membuat Cluster Slave dari GUI ClusterControl

Untuk membuat Cluster Slave baru, buka ClusterControl -> Pilih Cluster -> Cluster Actions -> Buat Cluster Slave.

Kluster Budak dapat dibuat dengan mengalirkan data dari Kluster Master saat ini atau dengan menggunakan cadangan yang ada.

Di bagian ini, Anda juga harus memilih master node dari cluster saat ini dari mana data akan direplikasi.

Saat Anda melanjutkan ke langkah berikutnya, Anda harus menentukan Pengguna, Kunci atau Kata sandi dan port untuk terhubung dengan SSH ke server Anda. Anda juga memerlukan nama untuk Slave Cluster Anda dan jika Anda ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk Anda.

Setelah menyiapkan informasi akses SSH, Anda harus menentukan vendor database dan versi, datadir, port database, dan kata sandi admin. Pastikan Anda menggunakan vendor/versi dan kredensial yang sama seperti yang digunakan oleh Master Cluster. Anda juga dapat menentukan repositori mana yang akan digunakan.

Pada langkah ini, Anda perlu menambahkan server ke Slave Cluster baru. Untuk tugas ini, Anda dapat memasukkan Alamat IP atau Nama Host dari setiap node basis data.

Anda dapat memantau status pembuatan Klaster Budak baru dari Monitor aktivitas ClusterControl. Setelah tugas selesai, Anda dapat melihat cluster di layar utama ClusterControl.

Mengelola Replikasi Cluster-to-Cluster Menggunakan GUI ClusterControl

Sekarang Anda memiliki dan menjalankan Replikasi Cluster-to-Cluster Anda, ada beberapa tindakan yang harus dilakukan pada topologi ini menggunakan ClusterControl.

Konfigurasi Cluster Aktif-Aktif

Seperti yang Anda lihat, secara default Slave Cluster diatur dalam mode Read-Only. Dimungkinkan untuk menonaktifkan tanda Read-Only pada node satu per satu dari ClusterControl UI, tetapi perlu diingat bahwa pengelompokan Aktif-Aktif hanya disarankan jika aplikasi hanya menyentuh kumpulan data yang terpisah di kedua cluster karena MySQL/MariaDB tidak menawarkan Deteksi atau Penyelesaian Konflik.

Untuk menonaktifkan mode Read-Only, buka ClusterControl -> Pilih Slave Cluster -> Node. Di bagian ini, pilih setiap node dan gunakan opsi Nonaktifkan Read-Only.

Membangun Kembali Cluster Budak

Untuk menghindari inkonsistensi, jika Anda ingin membangun kembali Cluster Slave, ini harus menjadi cluster Read-Only, ini berarti bahwa semua node harus dalam mode Read-Only.

Buka ClusterControl -> Pilih Slave Cluster -> Node -> Pilih Node terhubung ke Master Cluster -> Node Actions -> Rebuild Replication Slave.

Perubahan Topologi

Jika Anda memiliki topologi berikut:

Dan untuk beberapa alasan, Anda ingin mengubah simpul replikasi di Master Gugus. Dimungkinkan untuk mengubah master node yang digunakan oleh Slave Cluster ke master node lain di Master Cluster.

Untuk dianggap sebagai node master, harus mengaktifkan logging biner .

Buka ClusterControl -> Pilih Slave Cluster -> Node -> Pilih Node terhubung ke Master Cluster -> Node Actions -> Stop Slave/Start Slave.

Hentikan/Mulai Replikasi Budak

Anda dapat menghentikan dan memulai replikasi slave dengan cara yang mudah menggunakan ClusterControl.

Buka ClusterControl -> Pilih Slave Cluster -> Node -> Pilih Node terhubung ke Master Cluster -> Node Actions -> Stop Slave/Start Slave.

Setel Ulang Replikasi Budak

Dengan menggunakan tindakan ini, Anda dapat mengatur ulang proses replikasi menggunakan RESET SLAVE atau RESET SLAVE ALL. Perbedaan di antara keduanya adalah, RESET SLAVE tidak mengubah parameter replikasi apa pun seperti host master, port, dan kredensial. Untuk menghapus informasi ini, Anda harus menggunakan RESET SLAVE ALL yang menghapus semua konfigurasi replikasi, jadi dengan menggunakan perintah ini tautan Replikasi Cluster-to-Cluster akan dimusnahkan.

Sebelum menggunakan fitur ini, Anda harus menghentikan proses replikasi (silakan merujuk ke fitur sebelumnya).

Buka ClusterControl -> Pilih Slave Cluster -> Node -> Pilih Node terhubung ke Master Cluster -> Node Actions -> Reset Slave/Reset Slave All.

Mengelola Replikasi Cluster-to-Cluster Menggunakan CLI ClusterControl

Di bagian sebelumnya, Anda dapat melihat cara mengelola Replikasi Cluster-to-Cluster menggunakan UI ClusterControl. Sekarang, mari kita lihat bagaimana melakukannya dengan menggunakan baris perintah.

Catatan:Seperti yang kami sebutkan di awal blog ini, kami akan menganggap Anda telah menginstal ClusterControl dan Master Cluster telah digunakan untuk menggunakannya.

Buat Cluster Budak

Pertama, mari kita lihat contoh perintah untuk membuat Slave Cluster dengan menggunakan ClusterControl CLI:

$ s9s cluster --create --cluster-name=Galera1rep --cluster-type=galera  --provider-version=10.4 --nodes="192.168.100.166;192.168.100.167;192.168.100.168"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=root --db-admin-passwd=xxxxxxxx --vendor=mariadb --remote-cluster-id=11 --log

Sekarang Anda menjalankan proses slave create Anda, mari kita lihat setiap parameter yang digunakan:

  • Cluster:Untuk membuat daftar dan memanipulasi cluster.
  • Buat:Buat dan instal cluster baru.
  • Cluster-name:Nama dari Cluster Budak yang baru.
  • Cluster-type:Jenis cluster yang akan dipasang.
  • Versi penyedia:Versi perangkat lunak.
  • Node:Daftar node baru di Slave Cluster.
  • Os-user:Nama pengguna untuk perintah SSH.
  • Os-key-file:File kunci yang digunakan untuk koneksi SSH.
  • Db-admin:Nama pengguna admin database.
  • Db-admin-passwd:Kata sandi untuk admin database.
  • Remote-cluster-id:ID Cluster Master untuk Replikasi Cluster-to-Cluster.
  • Log:Tunggu dan pantau pesan pekerjaan.

Menggunakan tanda --log, Anda akan dapat melihat log secara real time:

Verifying job parameters.

Checking ssh/sudo on 3 hosts.

All 3 hosts are accessible by SSH.

192.168.100.166: Checking if host already exists in another cluster.

192.168.100.167: Checking if host already exists in another cluster.

192.168.100.168: Checking if host already exists in another cluster.

192.168.100.157:3306: Binary logging is enabled.

192.168.100.158:3306: Binary logging is enabled.

Creating the cluster with the following:

wsrep_cluster_address = 'gcomm://192.168.100.166,192.168.100.167,192.168.100.168'

Calling job: setupServer(192.168.100.166).

192.168.100.166: Checking OS information.

…

Caching config files.

Job finished, all the nodes have been added successfully.

Konfigurasi Cluster Aktif-Aktif

Seperti yang Anda lihat sebelumnya, Anda dapat menonaktifkan mode Read-Only di cluster baru dengan menonaktifkannya di setiap node, jadi mari kita lihat cara melakukannya dari baris perintah.

$ s9s node --set-read-write --nodes="192.168.100.166" --cluster-id=16 --log

Mari kita lihat setiap parameter:

  • Node:Untuk menangani node.
  • Set-read-write:Menyetel node ke mode Baca-Tulis.
  • Node:Node tempat untuk mengubahnya.
  • Cluster-id:ID cluster tempat node berada.

Kemudian, Anda akan melihat:

192.168.100.166:3306: Setting read_only=OFF.

Membangun Kembali Cluster Budak

Anda dapat membangun kembali Cluster Slave menggunakan perintah berikut:

$ s9s replication --stage --master="192.168.100.157:3306" --slave="192.168.100.166:3306" --cluster-id=19 --remote-cluster-id=11 --log

Parameternya adalah:

  • Replikasi:Untuk memantau dan mengontrol replikasi data.
  • Tahap:Panggung/Bangun Ulang Budak Replikasi.
  • Master:Master replikasi di cluster master.
  • Slave:Slave replikasi di cluster slave.
  • Cluster-id:ID Cluster Budak.
  • Remote-cluster-id:ID Cluster Master.
  • Log:Tunggu dan pantau pesan pekerjaan.

Log tugas harus serupa dengan yang ini:

Rebuild replication slave 192.168.100.166:3306 from master 192.168.100.157:3306.

Remote cluster id = 11

Shutting down Galera Cluster.

192.168.100.166:3306: Stopping node.

192.168.100.166:3306: Stopping mysqld (timeout=60, force stop after timeout=true).

192.168.100.166: Stopping MySQL service.

192.168.100.166: All processes stopped.

192.168.100.166:3306: Stopped node.

192.168.100.167:3306: Stopping node.

192.168.100.167:3306: Stopping mysqld (timeout=60, force stop after timeout=true).

192.168.100.167: Stopping MySQL service.

192.168.100.167: All processes stopped.

…

192.168.100.157:3306: Changing master to 192.168.100.166:3306.

192.168.100.157:3306: Changed master to 192.168.100.166:3306

192.168.100.157:3306: Starting slave.

192.168.100.157:3306: Collecting replication statistics.

192.168.100.157:3306: Started slave successfully.

192.168.100.166:3306: Starting node

Writing file '192.168.100.167:/etc/mysql/my.cnf'.

Writing file '192.168.100.167:/etc/mysql/secrets-backup.cnf'.

Writing file '192.168.100.168:/etc/mysql/my.cnf'.

Perubahan Topologi

Anda dapat mengubah topologi Anda menggunakan node lain di Master Cluster dari mana mereplikasi data, jadi misalnya, Anda dapat menjalankan:

$ s9s replication --failover --master="192.168.100.161:3306" --slave="192.168.100.163:3306" --cluster-id=10 --remote-cluster-id=9 --log

Mari kita periksa parameter yang digunakan.

  • Replikasi:Untuk memantau dan mengontrol replikasi data.
  • Failover:Ambil peran master dari master lama/gagal.
  • Master:Master replikasi baru di Master Cluster.
  • Slave:Budak replikasi di Klaster Budak.
  • Cluster-id:ID dari Cluster Budak.
  • Remote-Cluster-id:ID Master Cluster.
  • Log:Tunggu dan pantau pesan pekerjaan.

Anda akan melihat log ini:

192.168.100.161:3306 belongs to cluster id 9.

192.168.100.163:3306: Changing master to 192.168.100.161:3306

192.168.100.163:3306: My master is 192.168.100.160:3306.

192.168.100.161:3306: Sanity checking replication master '192.168.100.161:3306[cid:9]' to be used by '192.168.100.163[cid:139814070386698]'.

192.168.100.161:3306: Executing GRANT REPLICATION SLAVE ON *.* TO 'cmon_replication'@'192.168.100.163'.

Setting up link between  192.168.100.161:3306 and 192.168.100.163:3306

192.168.100.163:3306: Stopping slave.

192.168.100.163:3306: Successfully stopped slave.

192.168.100.163:3306: Setting up replication using MariaDB GTID: 192.168.100.161:3306->192.168.100.163:3306.

192.168.100.163:3306: Changing Master using master_use_gtid=slave_pos.

192.168.100.163:3306: Changing master to 192.168.100.161:3306.

192.168.100.163:3306: Changed master to 192.168.100.161:3306

192.168.100.163:3306: Starting slave.

192.168.100.163:3306: Collecting replication statistics.

192.168.100.163:3306: Started slave successfully.

192.168.100.160:3306: Flushing logs to update 'SHOW SLAVE HOSTS'

Hentikan/Mulai Replikasi Budak

Anda dapat berhenti untuk mereplikasi data dari Master Cluster dengan cara ini:

$ s9s replication --stop --slave="192.168.100.166:3306" --cluster-id=19 --log

Anda akan melihat ini:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Stopping slave.

192.168.100.166:3306: Successfully stopped slave.

Dan sekarang, Anda dapat memulainya lagi:

$ s9s replication --start --slave="192.168.100.166:3306" --cluster-id=19 --log

Jadi, Anda akan melihat:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Starting slave.

192.168.100.166:3306: Collecting replication statistics.

192.168.100.166:3306: Started slave successfully.

Sekarang, mari kita periksa parameter yang digunakan.

  • Replikasi:Untuk memantau dan mengontrol replikasi data.
  • Stop/Start:Untuk membuat slave berhenti/mulai mereplikasi.
  • Slave:Node slave replikasi.
  • Cluster-id:ID cluster tempat node slave berada.
  • Log:Tunggu dan pantau pesan pekerjaan.

Setel Ulang Replikasi Budak

Dengan menggunakan perintah ini, Anda dapat mengatur ulang proses replikasi menggunakan RESET SLAVE atau RESET SLAVE ALL. Untuk informasi lebih lanjut tentang perintah ini, silakan periksa penggunaannya di bagian UI ClusterControl sebelumnya.

Sebelum menggunakan fitur ini, Anda harus menghentikan proses replikasi (silakan lihat perintah sebelumnya).

SETEL ULANG BUDAK:

$ s9s replication --reset  --slave="192.168.100.166:3306" --cluster-id=19 --log

Log harus seperti:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Executing 'RESET SLAVE'.

192.168.100.166:3306: Command 'RESET SLAVE' succeeded.

RESET BUDAK SEMUA:

$ s9s replication --reset --force  --slave="192.168.100.166:3306" --cluster-id=19 --log

Dan log ini seharusnya:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Executing 'RESET SLAVE /*!50500 ALL */'.

192.168.100.166:3306: Command 'RESET SLAVE /*!50500 ALL */' succeeded.

Mari kita lihat parameter yang digunakan untuk RESET SLAVE dan RESET SLAVE ALL.

  • Replikasi:Untuk memantau dan mengontrol replikasi data.
  • Setel Ulang:Setel ulang simpul budak.
  • Force:Menggunakan flag ini, Anda akan menggunakan perintah RESET SLAVE ALL pada node slave.
  • Slave:Node slave replikasi.
  • Cluster-id:ID Cluster Budak.
  • Log:Tunggu dan pantau pesan pekerjaan.

Kesimpulan

Fitur ClusterControl baru ini akan memungkinkan Anda untuk membuat Replikasi Cluster-to-Cluster dengan cepat dan mengelolanya dengan cara yang mudah dan bersahabat. Lingkungan ini akan meningkatkan topologi database/cluster Anda dan akan berguna untuk Rencana Pemulihan Bencana, lingkungan pengujian, dan bahkan lebih banyak opsi yang disebutkan di blog ikhtisar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara Mendapatkan Koleksi yang Tersedia di MariaDB

  2. MariaDB BENCHMARK() Dijelaskan

  3. Meningkatkan Kinerja Backend Bagian 2/3:Menggunakan Indeks Basis Data

  4. Meningkatkan Kinerja dengan Menggunakan Pemisahan Baca Tulis dari Lalu Lintas Basis Data dengan Moodle 3.9

  5. Manajemen Kunci SSL dan Enkripsi Data MySQL dalam Transit