原理和需求就不多说了 直接说实现步骤。
1.登录RDS,增加账号并于账号赋予数据库相应权限,
2.登录需要复制的数据库,执行 show master status 查看file和postion的值
3.配置你要复制到的从库数据访问权限(数据安全性-添加白名单,就是把你从库的服务器ip添加到白名单)
导出一份数据主库数据 导入到从库上,保持主从库的数据库名称和表及数据一致。
4.登录从库服务器,以centos 7为例,设置 vim /etc/my.cnf 文件
log-error=/var/log/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
group_concat_max_len=2000000
server_id=211 #服务器id,不要和主库重复
read_only = 1
replicate-do-db = yiside_bi #需要同步的数据库
replicate-ignore-db = mysql #不需要同步的数据库
replicate-ignore-db = information_schema #不需要同步的数据库
replicate-ignore-db = performance_schema #不需要同步的数据库
binlog_format = ROW
log-bin = mysql-bin #开启二进制日志功能,binlog数据位置
log-bin-index = mysql-bin.index
relay-log = relay-log #relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件#然后SQL线程会读取relay-log日志的内容并应用到从服务器
relay_log_index = relay-log.index
gtid_mode=on
enforce_gtid_consistency=on #只记录对基于GTID的复制安全
log-slave-updates = 1 #允许下端接入slave
max_allowed_packet=16M
5.重新启动mysql , service mysqld start (启动方法有很多,只要能重新启动就行)
- 登录从库 创建用户
change master to MASTER_HOST='rm-2ze1lm67a...', #主库地址
master_user='yiside_bi', #设置的授权的主库账户
master_password='Yiside_bi', #设置的授权的主库密码
MASTER_LOG_FILE='mysql-bin.000783', #主库的file
MASTER_LOG_POS=636125; #主库的postion
7.命令行登录mysql,mysqld -uroot -p 数据密码
- 执行start slave;启动
9.在执行show slave statusG; 查看状态 -
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 表示设置成功