DB & AWS Knowledge
Aurora Cluster 간 replication 연결 본문
해당 페이지에서는 RDS, Aurora Cluster 에서 자주 사용되는 DBInstanceClassMemory 값에 대하여 다룬다.
해당 내용은 아래의 공식 문서를 참조하여 기재한다.
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.html
또한 해당 글은 이전 개시글중에서 아래의 게시글을 먼저 읽고 오면 좋다.
2021.07.01 - [MySQL/Replication] - MySQL / MariaDB Replication 구성 방법 (mysqldump)
2021.07.09 - [MySQL/기타 지식] - MySQL / MariaDB Replication -Slave 서버 데이터 기입
2022.04.22 - [AWS 및 클라우드 지식/AWS 지식] - RDS 및 Aurora Cluster 개요
2022.05.10 - [AWS 및 클라우드 지식/AWS 지식] - RDS, Aurora Cluster 에서의 AWS, DBA 관리 영역
Aurora Cluster 에서 Replication 의 사용 의의
이전 게시글에서 설명을 했듯이, Aurora Cluster 자체에서는 Replication 을 사용하는 구조가 아니다.
하지만, 회사마다 운영하는 환경이나 기타 사유가 있을 시, 동일 Aurora Cluster 나 RDS, Bastion Host, 외부 OS 환경 등에서 Replication 을 사용해야 하는 경우가 있다. (ex : AWS 이외의 온프레미스에서 관리하는 서비스와 AWS 서비스를 연동 시키고 싶을 경우) AWS 에서도 이를 인지하여 Aurora Cluster 에서 Replication 에 사용할 binlog 설정 및 기타 Replication 명령어를 제공한다.
Aurora Cluster 간 Replication 의 사용 의의
Aurora Cluster 간에도 이를 응용하여 Replication 을 구성 할 수 있다.
Aurora Cluster 간에 Replication 을 사용하는 대표적인 작업 중 하나는 업그레이드 된 버전 혹은 인스턴스 class 를 사용하는 Cluster 를 기존 운영 서비스가 사용하는 Cluster 와 연결 한 뒤, application 이 새로 구성된 cluster 와 연결을 하게 함으로써 무중단으로 버전 업그레이드 및 인스턴스 class 업그레이드를 수행하는 것이다.
Aurora Cluster 에서 replication 을 구성하는 방법
온프레미스에서 구성하는 MySQL, MariaDB 의 replication 구성 방법 순서는 유사하나
사용하는 파라미터 및 명령어는 다르다. 이는 온프레미스에서 replication 을 구성 할 때,
사용하는 superuser 인 root 계정을 RDS, Aurora Cluster 에서는 사용 할 수 없기 때문이다.
Aurora Cluster 에서 replication 사용 및 구성 방법은 다음과 같다.
여기서 설명하는 master slave 클러스터는 AS-IS, TO-BE 로 표현한다.
- Aurora Cluster 파라미터 그룹에서 binlog_format 을 OFF 이외의 값으로 선택하여 binlog 를 사용하도록 설정
- AS-IS 의 writer 인스턴스에서 binlog 설정 확인
MySQL [test]> show master status\G;
*************************** 1. row ***************************
File: mysql-bin-changelog.000002
Position: 120
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.06 sec)
- TO-BE 에서 CALL mysql.rds_set_external_master 명령어로 연결할 AS-IS 정보 기입
단, 이는 Aurora 1,2 / 3 버전 차이가 있다.
For Aurora MySQL version 1 and 2:
CALL mysql.rds_set_external_master ('mydbinstance.123456789012.us-east-1.rds.amazonaws.com', 3306,
'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0);
For Aurora MySQL version 3 and higher:
CALL mysql.rds_set_external_source ('mydbinstance.123456789012.us-east-1.rds.amazonaws.com', 3306,
'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0);
- 이에 따라 위에서 참고한 master status 정보 기입을 한다.
필자는 Aurora 3 버전에서 테스트를 했기에 아래와 같은 추가 Message 가 나온다.
MySQL [(none)]> CALL mysql.rds_set_external_master ('test-instance-1.csssomh1rwkc.ap-northeast-2.rds.amazonaws.com', 3306, 'admin', 'password', 'mysql-bin-changelog.000002', 120, 0);
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Message |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| rds_set_external_master is deprecated and will be removed in a future release. Use rds_set_external_source instead. Refer to the documentation for more information on deprecated statements |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
- 그 후, TO-BE 에서 CALL mysql.rds_start_replication 명령어로 start slave 기능을 실행한다.
MySQL [(none)]> CALL mysql.rds_start_replication;
+---------------------------+
| Message |
+---------------------------+
| Replica running normally. |
+---------------------------+
1 row in set (1.01 sec)
- 정상 결과가 나온다면 추가로 show slave status 로 연결 상황을 확인 한다.
MySQL [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: test-instance-1.csssomh1rwkc.ap-northeast-2.rds.amazonaws.com
Master_User: admin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin-changelog.000002
Read_Master_Log_Pos: 120
Relay_Log_File: relaylog.000002
Relay_Log_Pos: 329
Relay_Master_Log_File: mysql-bin-changelog.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table: mysql.%
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 120
Relay_Log_Space: 531
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 2093118851
Master_UUID: 5c8bda1a-61af-3a36-b47e-1abb61e6b61a
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.00 sec)
ERROR: No query specified
- 연결이 정상적으로 되었다면 AS-IS 에서 테스트 작업을 통하여 정상적으로 복제가 수행되는지 확인한다.
- AS-IS
MySQL [test]> create database mig_test;
Query OK, 1 row affected (0.01 sec)
- TO-BE
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mig_test |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
'AWS 및 클라우드 지식 > AWS RDS, Aurora 및 관련 지식' 카테고리의 다른 글
Aurora Cluster 의 엔드포인트 (endpoint) 유형 및 의의 (0) | 2022.10.14 |
---|---|
RDS, Aurora Cluster 의 CloudWatch 와 Enhanced Monitoring 간의 측정 값 차이 (0) | 2022.10.12 |
RDS, Aurora Cluster 의 DBInstanceClassMemory (0) | 2022.06.15 |
AWS CLI 를 통한 CloudWatch metric 수집 (0) | 2022.06.14 |
AWS CLI 개요 및 의의 (0) | 2022.06.10 |