MOŻLIWE jest również uniknięcie przestojów podczas aktualizacji.
Można to zrobić przez krótkie uruchomienie nowego RDS z migawki repliki do odczytu i skonfigurowanie go jako aktywnej / aktywnej replikacji typu Master na Master. Po skonfigurowaniu możesz przełączać ruch aplikacji na jednym serwerze aplikacji naraz, bez żadnych przestojów. Stosujemy to podejście za każdym razem, gdy AWS ogłasza konserwację RDS, aby uniknąć przestojów, a także podczas naszych zaplanowanych konserwacji.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2
Oto szczegóły:
M1 - Mistrz Orignal
R1 - Przeczytaj replikę M1
SNAP1 - Migawka R1
M2 - Nowy mistrz
Sekwencja tworzenia M2:
M1 → R1 → SNAP1 → M2
Ponieważ nie możemy używać uprawnień SUPER na RDS, nie używamy mysqldump z — master_data2
opcją na M1. Zamiast tego uruchamiamy R1, aby uzyskać z niego pozycję binlog M1 . Następnie utwórz migawkę (SNAP1) z R1, a następnie uruchom M2 z SNAP1.
Utwórz dwie oddzielne grupy parametrów RDS z następującymi przesunięciami, aby uniknąć konfliktów PK:
M1: auto_increment_ increment = 4 and auto_increment_offset = 1
M2: auto_increment_ increment = 4 and auto_increment_offset = 2
Utwórz użytkownika replikacji na M1
GRANT EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO
‘repl’@’%’ IDENTIFIED BY PASSWORD <secret>;
1. Utwórz R1 z 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. Utwórz SNAP1 z R1
Utwórz M2 z SNAP1 z atrybutami uzyskanymi z M1
Przypisz grupę parametrów do M2 z innym przesunięciem auto_increment_ od M1, aby uniknąć konfliktów kluczy replikacji M / M
4. Skonfiguruj replikację 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. Usuń R1 i SNAP1, ponieważ nie są już potrzebne
6. Zaktualizuj M2 za pomocą konsoli AWS
Skorzystaj ze standardowej procedury, aby zmodyfikować instancję zgodnie z własnymi potrzebami.
7. Wykonaj płynne przejście na M2
Ponieważ replikacja M / M została pomyślnie skonfigurowana, jesteśmy gotowi kontynuować konserwację DB bez przestojów, z wdziękiem przełączając serwery aplikacji po jednym na raz.
Oto więcej informacji o tym, jak to działa.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2