(1)Aurora --> RDS MySQL
レプリケーションソース: 5.7.mysql_aurora.2.10.0
レプリカターゲット: MySQL 5.7.34
--0. レプリカターゲット作成
aws rds create-db-instance \
--db-instance-identifier mysql01 \
--allocated-storage 20 \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username root \
--master-user-password 'password' \
--no-multi-az \
--engine-version 5.7.34 \
--storage-type gp2 \
--no-publicly-accessible
-- 1.レプリケーションソースのバイナリログ記録を有効にする
aws rds create-db-cluster-parameter-group \
--db-parameter-group-family aurora-mysql5.7 \
--db-cluster-parameter-group-name cpg01 \
--description cpg01
aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=binlog_format,ParameterValue=MIXED,ApplyMethod=pending-reboot
aws rds create-db-cluster \
--db-cluster-identifier cluster11 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password' \
--db-cluster-parameter-group-name cpg01
aws rds create-db-instance \
--db-instance-identifier cluster11-instance01 \
--db-cluster-identifier cluster11 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade
-- 2.レプリケーションソースのバイナリログを不要になるまで保持する
CALL mysql.rds_set_configuration('binlog retention hours', 24);
-- 3.レプリケーションソースのスナップショットを作成する
mysqldump --databases test --single-transaction --order-by-primary -r backup.sql -u root -h cluster11.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p
※"--master-data=2"を指定すると下記エラーとなる
mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'root'@'%' (using password: YES) (1045)
DB クラスターのスナップショットを作成→復元することでイベントからbinlog ファイルの名前と場所を確認する必要がある
aws rds create-db-cluster-snapshot \
--db-cluster-snapshot-identifier snap01 \
--db-cluster-identifier cluster11
aws rds restore-db-cluster-from-snapshot \
--db-cluster-identifier dummy01 \
--snapshot-identifier snap01 \
--engine aurora-mysql \
--db-cluster-parameter-group-name cpg01
aws rds create-db-instance \
--db-instance-identifier dummy01-instance01 \
--db-cluster-identifier dummy01 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade
aws rds describe-events
aws rds delete-db-instance \
--db-instance-identifier dummy01-instance01 \
--skip-final-snapshot
aws rds delete-db-cluster \
--db-cluster-identifier dummy01 \
--skip-final-snapshot
aws rds delete-db-cluster-snapshot \
--db-cluster-snapshot-identifier snap01
-- 4.レプリカターゲットにスナップショットをロードする
mysql -h mysql01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p
source backup.sql;
-- 5.レプリカターゲットでレプリケーションを有効にする
host mysql01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
-- レプリケーションソースでの作業
CREATE USER 'repl_user'@'172.31.555.555' IDENTIFIED BY 'password';
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'172.31.555.555';
-- レプリカターゲットでの作業
CALL mysql.rds_set_external_master ('cluster11-instance01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000003', 123, 0);
CALL mysql.rds_start_replication;
-- 6.レプリカをモニタリングする
SHOW SLAVE STATUS\G
-- 7.レプリカターゲットでバイナリログのレプリケーションを停止する
CALL mysql.rds_stop_replication;
-- 8.レプリケーションソースのバイナリログ記録を無効にする
aws rds modify-db-cluster \
--db-cluster-identifier cluster11 \
--db-cluster-parameter-group-name default.aurora-mysql5.7
aws rds stop-db-cluster --db-cluster-identifier cluster11
aws rds start-db-cluster --db-cluster-identifier cluster11
CALL mysql.rds_set_configuration('binlog retention hours', NULL);
(2)Aurora --> 外部 MySQL
レプリケーションソース: 5.7.mysql_aurora.2.10.0
レプリカターゲット: MySQL 5.7.35
--0. レプリカターゲット作成
sudo yum remove mysql
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
sudo yum info mysql-community-server
sudo yum -y install mysql-community-server
sudo mysqld --version
sudo systemctl enable mysqld.service
sudo systemctl restart mysqld.service
sudo systemctl status mysqld.service
sudo cat /var/log/mysqld.log | grep password
sudo mysql_secure_installation
-- 初期設定
sudo vim /etc/my.cnf
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
character_set_server=utf8mb4
-- 1.レプリケーションソースのバイナリログ記録を有効にする
aws rds create-db-cluster-parameter-group \
--db-parameter-group-family aurora-mysql5.7 \
--db-cluster-parameter-group-name cpg01 \
--description cpg01
aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=binlog_format,ParameterValue=MIXED,ApplyMethod=pending-reboot
aws rds create-db-cluster \
--db-cluster-identifier cluster11 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password' \
--db-cluster-parameter-group-name cpg01
aws rds create-db-instance \
--db-instance-identifier cluster11-instance01 \
--db-cluster-identifier cluster11 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade
-- 2.レプリケーションソースのバイナリログを不要になるまで保持する
CALL mysql.rds_set_configuration('binlog retention hours', 24);
-- 3.レプリケーションソースのスナップショットを作成する
mysqldump --databases test --single-transaction --order-by-primary -r backup.sql -u root -h cluster11.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p
※"--master-data=2"を指定すると下記エラーとなる
mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'root'@'%' (using password: YES) (1045)
DB クラスターのスナップショットを作成→復元することでイベントからbinlog ファイルの名前と場所を確認する必要がある
aws rds create-db-cluster-snapshot \
--db-cluster-snapshot-identifier snap01 \
--db-cluster-identifier cluster11
aws rds restore-db-cluster-from-snapshot \
--db-cluster-identifier dummy01 \
--snapshot-identifier snap01 \
--engine aurora-mysql \
--db-cluster-parameter-group-name cpg01
aws rds create-db-instance \
--db-instance-identifier dummy01-instance01 \
--db-cluster-identifier dummy01 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade
aws rds describe-events
aws rds delete-db-instance \
--db-instance-identifier dummy01-instance01 \
--skip-final-snapshot
aws rds delete-db-cluster \
--db-cluster-identifier dummy01 \
--skip-final-snapshot
aws rds delete-db-cluster-snapshot \
--db-cluster-snapshot-identifier snap01
-- 4.レプリカターゲットにスナップショットをロードする
mysql -h localhost -P 3306 -u root -p
source backup.sql;
-- 5.レプリカターゲットでレプリケーションを有効にする
host cluster11-instance01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
-- レプリケーションソースでの作業
CREATE USER 'repl_user'@'172.31.444.444' IDENTIFIED BY 'password';
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'172.31.444.444';
-- レプリカターゲットでの作業
CHANGE MASTER TO MASTER_HOST = '172.31.333.333', MASTER_PORT = 3306, MASTER_USER = 'repl_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin-changelog.000003', MASTER_LOG_POS = 123;
START SLAVE;
-- 6.レプリカをモニタリングする
SHOW SLAVE STATUS\G
-- 7.レプリカターゲットでバイナリログのレプリケーションを停止する
STOP SLAVE;
-- 8.レプリケーションソースのバイナリログ記録を無効にする
aws rds modify-db-cluster \
--db-cluster-identifier cluster11 \
--db-cluster-parameter-group-name default.aurora-mysql5.7
aws rds stop-db-cluster --db-cluster-identifier cluster11
aws rds start-db-cluster --db-cluster-identifier cluster11
CALL mysql.rds_set_configuration('binlog retention hours', NULL);