Ini juga MUNGKIN untuk menghindari downtime selama upgrade.
Cara untuk melakukannya adalah dengan meluncurkan RDS baru dari snapshot replika baca dan mengkonfigurasinya sebagai replikasi Master ke Master yang aktif / aktif. Setelah dikonfigurasi, Anda dapat mengalihkan lalu lintas aplikasi satu server aplikasi pada saat itu tanpa downtime. Kami menggunakan pendekatan ini setiap kali AWS mengumumkan pemeliharaan RDS untuk menghindari waktu henti serta selama perawatan terjadwal kami.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2
Berikut detailnya:
M1 - Master Orignal
R1 - Baca Replika M1
SNAP1 - Cuplikan dari R1
M2 - Master Baru
Urutan pembuatan M2:
M1 → R1 → SNAP1 → M2
Karena kami tidak dapat menggunakan hak istimewa SUPER pada RDS, kami tidak menggunakan — master_data2
opsi mysqldump pada M1. Sebagai gantinya, kami meluncurkan R1 untuk mendapatkan posisi binlog dari M1 darinya. Kemudian buat snapshot (SNAP1) dari R1 dan kemudian jalankan M2 dari SNAP1.
Buat dua grup parameter RDS terpisah dengan offset berikut untuk menghindari konflik PK:
M1: auto_increment_ increment = 4 and auto_increment_offset = 1
M2: auto_increment_ increment = 4 and auto_increment_offset = 2
Buat pengguna replikasi di M1
GRANT EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO
‘repl’@’%’ IDENTIFIED BY PASSWORD <secret>;
1. Buat R1 dari M1
-- Connect to the R1 and stop replication
CALL mysql.rds_stop_replication;
-- Obtain M1’s (!!) current binlog file and position
`mysql> show slave status\G
Master_Log_File: mysql-bin.000622
Exec_Master_Log_Pos: 9135555
2. Buat SNAP1 dari R1
4. Atur replikasi M / M
-- Configure M2 as a slave of M1
CALL mysql.rds_set_external_master (‘m1.xyxy24.us-east-1.rds.amazonaws.com’, 3306, ‘repl’, ‘mypassword’, ‘mysql-bin.000622, 9135555, 0);
CALL mysql.rds_start_replication;
-- Connect to M2 and obtain its current binlog file and position
mysql> show master status\G
File: mysql-bin.004444
Position: 6666622
-- Connect to M1 and configure it to be a slave of the M2
CALL mysql.rds_set_external_master (‘m2.xyxy24.us-east-1.rds.amazonaws.com’, 3306 , ‘repl’, ‘mypassword’, ‘mysql-bin.004444, 6666622, 0);
CALL mysql.rds_start_replication;
5. Hapus R1 dan SNAP1 karena tidak lagi diperlukan
6. Tingkatkan M2 melalui Konsol AWS
Gunakan prosedur standar untuk Memodifikasi Mesin Virtual sesuai kebutuhan Anda.
7. Lakukan Graceful Switchover ke M2
Karena replikasi M / M berhasil diatur, kami siap untuk melanjutkan dengan pemeliharaan DB tanpa downtime dengan beralih dari server aplikasi satu per satu.
Berikut ini rincian lebih lanjut tentang cara kerjanya.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2