Можливо також уникати простоїв під час оновлення.
Спосіб це зробити, коротко запустивши новий RDS із знімка репліки читання та налаштуйте його як активну / активну реплікацію Master на Master. Після налаштування ви можете перемикати трафік додатків на один сервер APP одночасно без простоїв. Ми використовуємо підхід щоразу, коли AWS оголошує технічне обслуговування RDS, щоб уникнути простоїв, а також під час планового обслуговування.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2
Ось деталі:
М1 - оригінальний майстер
R1 - Прочитайте репліку M1
SNAP1 - Знімок R1
М2 - новий майстер
Послідовність створення M2:
M1 → R1 → SNAP1 → M2
Оскільки ми не можемо використовувати привілей SUPER на RDS, ми не використовуємо mysqldump з — master_data2
опцією на M1. Замість цього ми запускаємо R1, щоб отримати з нього бінлогічне положення M1 . Потім створіть знімок (SNAP1) з R1, а потім запустіть M2 з SNAP1.
Створіть дві окремі групи параметрів RDS із наступними зрушеннями, щоб уникнути конфліктів ПК:
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
Створіть M2 з SNAP1 з атрибутами, отриманими від M1
Призначте групі параметрів M2 з іншим зміщенням auto_increment_ від M1, щоб уникнути конфліктів ключів M / M реплікації
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
Використовуйте стандартну процедуру, щоб змінити Екземпляр відповідно до ваших потреб.
7. Виконайте витончений перехід на M2
По мірі того, як реплікація M / M налаштована успішно, ми готові продовжувати обслуговування БД без простоїв, граціозно перемикаючи один на один сервери додатків.
Ось докладніше про те, як це працює.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2