InnoDB Cluster에서 계획된 primary 스위치오버
MySQLInnoDB Cluster명령어
# Shell: planned switchover
mysqlsh icadmin@db1:3306 -- cluster set-primary-instance db2:3306
-- SQL alternative: target member's server_uuid, 30 s timeout for open transactions
SELECT MEMBER_HOST, MEMBER_ID, MEMBER_ROLE FROM performance_schema.replication_group_members;
SELECT group_replication_set_as_primary('3f06e651-c356-11f1-8aac-927a9034ef99', 30);하는 일
single-primary 모드에서 primary 역할을 다른 멤버로 제어된 방식으로 옮긴다. 이전 primary는 super_read_only가 되고, 새 primary는 밀린 트랜잭션을 적용한 후 쓰기를 연다. MySQL Router는 새 primary를 자동으로 인식한다.
사용 시점
primary의 유지보수, OS 패치, 업그레이드 전과 하드웨어 이전 시.
주의
timeout이 만료되면 이전 primary의 열린 트랜잭션은 종료된다. timeout이 없으면 전환이 이 트랜잭션들을 기다리므로 더 오래 걸린다. 애플리케이션이 Router를 통해 연결하지 않으면 직접 리디렉션해야 한다. BEFORE_ON_PRIMARY_FAILOVER에서는 새 primary가 밀린 트랜잭션을 모두 처리할 때까지 쓰기가 대기하므로 먼저 cluster status에서 apply_queue가 비어 있는지 확인한다. InnoDB Cluster에서는 메타데이터와 일관성이 유지되는 Shell 명령을 권장한다.