업그레이드 중에 다운 타임을 피하는 것도 가능합니다.
이를 수행하는 방법은 읽기 전용 복제본 스냅 샷에서 새 RDS를 잠깐 시작하여 활성 / 활성 마스터-마스터 복제로 구성하는 것입니다. 일단 구성되면 다운 타임없이 한 번에 하나의 APP 서버로 애플리케이션 트래픽을 전환 할 수 있습니다. AWS는 예정된 유지 관리 중뿐만 아니라 다운 타임을 피하기 위해 AWS가 RDS 유지 관리를 발표 할 때마다이 방법을 사용합니다.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2
세부 사항은 다음과 같습니다.
M1- 오리 그널 마스터
R1 -M1의 읽기 전용 복제본
SNAP1 -R1의 스냅 샷
M2- 새로운 마스터
M2 생성 순서 :
M1 → R1 → SNAP1 → M2
RDS에 대해 SUPER 권한을 사용할 수 없으므로 — master_data2
M1 에서 옵션 과 함께 mysqldump를 사용하지 않습니다 . 대신 R1을 시작 하여 M1 의 binlog 위치 를 얻 습니다. 그런 다음 R1에서 스냅 샷 (SNAP1)을 생성 한 다음 SNAP1에서 M2를 시작하십시오.
PK 충돌을 피하기 위해 다음 오프셋으로 두 개의 별도 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. M1에서 R1 생성
-- 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. R1에서 SNAP1 생성
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. AWS 콘솔을 통해 M2 업그레이드
표준 절차에 따라 필요에 따라 인스턴스를 수정하십시오.
7. M2 로의 원활한 전환 수행
M / M 복제가 성공적으로 설정되면 App 서버를 한 번에 하나씩 정상적으로 전환하여 다운 타임없이 DB 유지 관리를 진행할 수 있습니다.
작동 방식에 대한 자세한 내용은 다음과 같습니다.
https://workmarket.tech/zero-downtime-maintenances-on-mysql-rds-ba13b51103c2