阿里云RDS数据库 在本机主从配置 记录坑及实现

14 篇文章 0 订阅

1 准备工作,申请阿里云RDS

a 登录 RDS 控制台,选择目标实例。
b 配置从实例读取数据使用的只读账号和授权数据库。
c 将从实例的 IP 地址加入主实例的 IP 白名单中 [同一地域 则可以内网IP] 
d 登录主实例 [如果外部无法登录 白名单添加0.0.0.0/0][或者提工单]
e 查询主实例的 server-id [show variables like '%server_id%';] # 记下这个id,不能与slave的相同

2将主实例数据全量同步到从实例到自建数据库

mysqldump -uname -hmasterhost.mysql.rds.aliyuncs.com -p --databases exampledb > exampledb.sql

这里遇到第一个坑,需要加 -F 参数 ,-F参数表示flush logs,会重置binlog文件,查看新的binlog文件可以用,如果不加-F,会导致你的备份数据与阿里云的binlog不一致,会导致之后的从机的Slave_SQL_RUNNING 为 NO,因为数据不一致,不论是旧数据会导致主键重复等问题,如果是新数据会因为有些数据不存在,导致连表产生的数据报错。

show master status

所以综上所述,第二步骤具体为,在自己的服务器中找到mysql/bin/mysqldump脚本, 此例中取名为test.sql

mysqldump -u*****(主机账号) -h*****(主机地址)  -p***(主机密码)  -F --databases ******(数据库名) > test.sql

然后备份到自建数据库中,同样的,用mysql自带的bin/mysql脚本,具体命令如下:

mysql -u***(自建数据库账号) -p***(自建数据库密码) ****(数据库名) < 'test.sql'

到此,数据已经备份完成。

3 配置从实例 (slave)

找到自建数据库配置文件 my.cnf ,修改如下配置,具体参数可以按需求修改,server_id需要在第一步查询后,设置为不重复的值

 

#GTID
gtid_mode=on
enforce_gtid_consistency=on

server_id = 2                                          #指定从库的server_id,不能与主库相同
#read_only = 1                                          #n
replicate-do-db=cmsj_new

#cate-ignore-db=test #不复制test库的binlog
#scate-wild-ignore-table     = mysql.%              #主从复制的时候忽略
#replicate-wild-ignore-table     = test.%               #主从复制的时候忽略
binlog_format   = ROW                                  #binlog的格式,ROW格式记录方式成每一行数据被修改,
log-bin                  = mysql-bin                   #二进制日志,记录对数据发生变化的sql语句,以二进制方式
log-bin-index            = mysql-bin.index             #指定索引文件,此文件指示当前使用了哪个日志文件
log-slave-updates=1   #允许下端接入slave
#relay-log                = relay-log                   #中继日志,用来存放master的bin中的内容,看上方原理
#relay_log_index          = relay-log.index             #指定索引文件,此文件指示当前使用哪个日志文件

4 登录从实例(slave),设置同步选项

进入本机的bin/mysql下,

./mysql -utest_user -h127.0.0.1   -ptest_pass 

先 

stop slave;

而后设置同步选项

change master to \
master_host='master.mysql.rds.aliyuncs.com', \
master_port=3306, \
master_user='slave_user', \
master_password='slave_password',\
master_log_file='mysql-bin.****',\
master_log_pos=****;

master_log等参数在主机运行 show master status;可以获知,这也是要在备份时加-F参数的原因。

最后

start slave;

可以通过 show slave status\G; 查看当前从机状态

 show slave status\G;

 

这两个参数都为YES时表示你已成功配置主从数据库,可以到主数据库插入一些数据进行测试了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值