นอกจากนี้ยังเป็นไปได้ที่จะหลีกเลี่ยงการหยุดทำงานในระหว่างการอัพเกรด
วิธีที่จะทำได้คือการเปิดตัว RDS ใหม่สั้น ๆ จากสแน็ปช็อตการอ่านแบบจำลองและกำหนดค่าเป็น Active / active Master เป็น Master replication เมื่อกำหนดค่าแล้วคุณสามารถสลับแอปพลิเคชันทราฟฟิกของเซิร์ฟเวอร์ APP หนึ่งตัวในเวลานั้น เราใช้วิธีการทุกครั้งที่ AWS ประกาศการบำรุงรักษา RDS เพื่อหลีกเลี่ยงการหยุดทำงานเช่นเดียวกับในระหว่างการบำรุงรักษาตามกำหนดเวลาของเรา
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2
นี่คือรายละเอียด:
M1 - อาจารย์ดั้งเดิม
R1 - อ่านแบบจำลองของ M1
SNAP1 - ภาพรวมของ R1
M2 - ปรมาจารย์ใหม่
ลำดับการสร้าง M2:
M1 → R1 → SNAP1 → M2
เนื่องจากเราไม่สามารถใช้สิทธิ์พิเศษบน RDS ได้เราจึงไม่ใช้ mysqldump กับ— master_data2
ตัวเลือกใน M1 แต่เราเปิดตัว R1 เพื่อรับตำแหน่ง binlog ของ M1จากมัน จากนั้นสร้างสแน็ปช็อต (SNAP1) จาก R1 จากนั้นเปิด M2 จาก SNAP1
สร้างกลุ่มพารามิเตอร์ RDS แยกกันสองกลุ่มด้วย offsets ต่อไปนี้เพื่อหลีกเลี่ยงการสับสน PK:
M1: auto_increment_ increment = 4 and auto_increment_offset = 1
M2: auto_increment_ increment = 4 and auto_increment_offset = 2
สร้างผู้ใช้การจำลองแบบบน M1
GRANT EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO
‘repl’@’%’ IDENTIFIED BY PASSWORD <secret>;
1. สร้าง R1 จาก 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. สร้าง SNAP1 จาก R1
4. ตั้งค่าการจำลองแบบ 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. ลบ R1 และ SNAP1 เนื่องจากไม่ต้องการอีกต่อไป
6. อัปเกรด M2 ผ่าน AWS Console
ใช้ขั้นตอนมาตรฐานเพื่อปรับเปลี่ยนอินสแตนซ์ตามความต้องการของคุณ
7. ดำเนินการเปลี่ยนแปลงอย่างสง่างามเป็น M2
เนื่องจากการตั้งค่าการจำลองแบบ M / M สำเร็จแล้วเราพร้อมที่จะดำเนินการบำรุงรักษาฐานข้อมูลโดยไม่ต้องหยุดทำงานโดยสลับเซิร์ฟเวอร์แอปหนึ่งครั้ง
นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงาน
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2