Amazon에서 RDS 인스턴스로 실행되는 상당히 큰 MySQL (5.1) 데이터베이스가 있습니다. 아마존에서 마이그레이션하는 중입니다. 이를 원활하게하기 위해 새 하드웨어를 RDS 인스턴스의 읽기 전용 복제본으로 설정하고 싶습니다.
RDS가 RDS 내에서 복제를 지원한다는 것을 알고 있습니다. RDS에없는 호스트로 복제하도록 구성 할 수있는 방법이 있습니까?
Amazon에서 RDS 인스턴스로 실행되는 상당히 큰 MySQL (5.1) 데이터베이스가 있습니다. 아마존에서 마이그레이션하는 중입니다. 이를 원활하게하기 위해 새 하드웨어를 RDS 인스턴스의 읽기 전용 복제본으로 설정하고 싶습니다.
RDS가 RDS 내에서 복제를 지원한다는 것을 알고 있습니다. RDS에없는 호스트로 복제하도록 구성 할 수있는 방법이 있습니까?
답변:
이제 RDS에서 외부 MySQL 슬레이브로 복제 할 수 있습니다 : http://www.ruempler.eu/2013/07/07/replicating-aws-rds-mysql-databases-to-external-slaves/
아마존이 현재 이것을 금지하기로 선택한 것 같습니다.
https://forums.aws.amazon.com/thread.jspa?threadID=46377&tstart=0
다음 시나리오가있는 경우
이처럼 RDS에서 사용자를 만들 수 있습니다
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'%' IDENTIFIED BY 'repl_password';
Amazon이 호스트 이름으로 '%'를 허용하지 않으면 특정 퍼블릭 IP 주소가 필요합니다
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
다음으로 mysql은 RDS에서 단일 트랜잭션으로 데이터를 덤프합니다.
mysqldump -u... -p... --single-transaction --master-data=1 --all-databases --routines --triggers > /root/MySQLData.sql
leopd@'xxx.xx.xx.xxxx '를 사용자로 사용하여 CHANGE MASTER TO 명령을 실행하십시오 (xxx.xx.xx.xxxx는 RDS의 IP 주소입니다)
CHANGE MASTER TO
master_host = 'xxx.xx.xx.xxxx',
master_port = 3306,
master_user = 'leopd',
master_passwowrd = 'repl_pass'
master_log_file='slsnbj',
master_log_pos=1;
새 서버에 데이터를로드하십시오. master_log_file = 'slsnbj'및 master_log_pos = 1에 대해 걱정하지 마십시오. 덤프의 22 행에는 올바른 로그 파일과 위치가 있습니다.
START SLAVE를 실행하십시오. 새 서버에서
작동을 시작해야합니다. 방화벽 고려 사항에 대해 걱정해야 할 수도 있습니다.
시도 해봐 !!!
한 번의 기회 만 남았습니다. 다음을 사용하여 마지막 권한을 설정할 수 있는지 확인하십시오.
UPDATE mysql.user SET Repl_slave_priv = 'Y' WHERE user='root' AND host='%';
FLUSH PRIVILEGES;
아마도 이것은 mysql.user의 호스트 열에 %가있는 사용자에 대해 차단되었을 것입니다.
앞에서 제안한 것처럼 하드 퍼블릭 IP로 다른 사용자를 만들어야 할 수도 있습니다.
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
RDS의 복제 슬레이브도 RDS 여야합니다.
GRANT REPLICATION SLAVE
의 결과ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
SHOW GRANTS
. 에 대한 모든 권한이 있습니까 ? ?
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD <snip> WITH GRANT OPTION
.. 아마존은 이것을 허용하지 않는 것 같습니다.