RDS数据库做从库步骤
一、准备工作:
部署mysql
1、服务器上自建数据
2、RDS上启动数据库
二、开始配置mysql主从的源库
1、源库配置
vim /etc/my.cnf 或者 vi /etc/my.cnf
#增加以下配置
log-bin=mysql-bin server_id=101
#选择增加的参数
binlog-do-db= 数据库名 #需要同步的数据库
binlog-ignore-db = 数据库名 #不需要同步的数据库
完成之后,重启数据库:
systemctl resatrt mysqld
2、源机上创建用于复制的数据库账号,可以使用已经创建好的,也可以新建,需要注意的是mysql8及之后版本,需要先创建好数据库账号
#mysql -uxxx -pxxx 进入数据库
#mysql8以下使用
mysql> grant replication slave on *.* to '数据库用户'@'%'identified by '123';
mysql> grant replication client on *.* to '数据库用户'@'%'identified by '123';
#mysql8及以上使用
mysql> grant replication client,replication slave on *.* to '数据库用户'@'%';
#刷新
mysql> flush privileges;
三、配置从库(RDS版本)
1、将源 MySQL 或 MariaDB 实例设置为只读。
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SET GLOBAL read_only = ON;
2、对源 MySQL 或 MariaDB 实例运行 SHOW MASTER STATUS 命令以确定二进制日志位置。
您将收到类似于以下示例的输出。
File Position
------------------------------------------------------
mysql-bin-changelog.000031 107
-------------------------------------------------------
记住这两个值,从库配置需要。
3、使用 mysqldump 将数据库从外部实例(自建库)复制到 Amazon RDS 数据库实例。
mysqldump --databases database_name \
--single-transaction \
--compress \
--order-by-primary \
-u local_user \
-plocal_password | mysql \
--host=hostname \
--port=3306 \
-u RDS_user_name \
-pRDS_password
确保 -p 选项和输入的密码之间没有空格。
主机名(hostname)是 Amazon RDS 数据库实例端点中的域名服务 (DNS) 名称。
4、再次将源 MySQL 或 MariaDB 实例设置为可写。
mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
5、对于外部实例,向复制用户授予 REPLICATION CLIENT 和 REPLICATION SLAVE 权限。例如,要为您的域的“REPLICATION CLIENT”用户授予对所有数据库的 REPLICATION SLAVE 和 repl_user 权限,请发出以下命令。
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
6、将 Amazon RDS 数据库实例设置为副本。为此,请先以主用户身份连接到 Amazon RDS 数据库实例。 然后使用 mysql.rds_set_external_master 命令,将外部 MySQL 或 MariaDB 数据库标识为源实例。使用在步骤 2 中确定的主日志文件名和主日志位置。以下是示例。
CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 'Position', 0);
7、在 Amazon RDS 数据库实例上,发出 mysql.rds_start_replication 命令以启动复制。
CALL mysql.rds_start_replication;
四、注意事项:
1、修改安全组,将指定的源数据库服务器IP写入配置。
查看RDS实例的公网IP :nslookup ‘终端节点‘,
示例:nslookup meiyetong-slave.czyuflmj9wgf.rds.cn-northwest-1.amazonaws.com.cn
(RDS内网IP查看 :show variables like ‘%host%’;)
(RDS查看server_id:show variables like ‘server_id’;)
2、通过使用所选的客户端,连接到外部实例并创建要用于复制的用户。请仅将该账户用于复制,并将其限制为您的域以提高安全性。
—————————————————————————————————–
Amazon RDS数据库实例配置与外部源主从同步数据
准备工作
1、AWS RDS Mysql开启配置
binlog_format 参数设置为 MIXED
autocommit 参数设置为 1
2、保证RDS与外部库的网络互通(安全组,白名单等)
可以通过运行以下任一命令来查找 RDS 实例的 IP 地址
nslookup rds-endpoint
或者
dig rds-endpoint
配置主从同步
1、将源 MySQL设置为只读
mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
2、 查看日志位置
SHOW MASTER STATUS;
示例输出
File Position
---------------------------------
mysql-bin.000001 155
----------------------------------
3、从库导入数据,mysqldump或者navicat等工具导入
mysqldump --databases database_name \
--single-transaction \
--compress \
--order-by-primary \
-u local_user \
-plocal_password | mysql \
--host=hostname \
--port=3306 \
-u RDS_user_name \
-pRDS_password
确保 -p 选项和输入的密码之间没有空格
4、将源 MySQL设置为可写
mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
5、配置用于同步的账号
MySQL 5.7
CREATE USER 'sync_user'@'RDS IP' IDENTIFIED BY 'password';
MySQL 8.0
CREATE USER 'sync_user'@'RDS IP' IDENTIFIED WITH mysql_native_password BY 'password';
6、同步用户授予 REPLICATION CLIENT 和 REPLICATION SLAVE 权限
MySQL 5.7
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON . TO 'sync_user'@'RDS IP' IDENTIFIED BY 'password';
MySQL 8.0
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON . TO 'sync_user'@'RDS IP';
Demo实例

7、将 AWS RDS 数据库实例设置为副本。
请先以主用户身份连接到 Amazon RDS 数据库实例。然后使用 mysql.rds_set_external_source 命令,将外部 MySQL数据库标识为源实例。
CALL mysql.rds_set_external_source ('主库Host', 3306, 'sync_user', 'password', 'mysql-bin.000001', 155, 0);
Demo实例
CALLmysql.rds_set_external_master ('52.83.161.83', 3306, 'blg', 'Blg?2020','mysql-bin.000010', '2950', 0);
8、AWS RDS实例上启动同步
CALL mysql.rds_start_replication;
查看同步状态
SHOW REPLICA STATUS\G;

其他会用到的一些命令
停止复制过程
CALL mysql.rds_stop_replication;
清除只读副本
CALL mysql.rds_reset_external_source;
清除只读副本
CALL mysql.rds_reset_external_master;
备注
分配给 RDS 数据库实例的 IP 地址在以下一种或多种情况下会发生变化:
1.实例已停止并重新启动。
注意:重启实例时,IP 地址不会发生变化。
2.由于实例故障和数据库实例类更新等情况,底层主机被替换。
3.实例上进行了硬件维护。
4.实例位于多可用区环境中,并且发生了故障转移。
5.数据库实例的操作系统进行软件修补。
6.数据库实例的手动故障转移由使用带故障转移的重启操作启动。
7.数据库引擎进行主要或次要版本升级。
8.实例的可用区中断。
如果想避免RDS实例IP变动而造成同步中断,可以把外部库实例放在同一VPC下通过内网互通
本章结束~ifan