mysql的异步复制

mysql的复制
mysql从3.23版开始提供复制的功能,所谓的复制是将主数据的DDL和DML操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库保持数据同步。
mysql复制的优点
1:如果主库出现问题,可以快速切换到从库提供服务
2:可以在从库上执行查询操作,降低主库的访问压力
3:可以在从库上执行备份,以避免影响备份期间主库的服务

mysql的复制是异步的

mysql的复制通过3个线程实现的,其中Binlog Dump线程跑在主库上,IO线程和SQL线程跑在从库上。
首先从库创建IO线程,并向主库发起请求
主库收到请求,创建Binlog Dump线程读取数据库事件并发送给IO线程
IO线程取到事件数据后更新到从库的中继日志Relay log中
最后从库SQL线程读取中继日志Relay log更新的数据库事件并应用

异步复制步骤
1:创建一个用户,并授予REPLICATION SLAVE权限,
grant replication slave on *.* to '用户名' @ 'ip' identified by '密码';
2:在主数据库修改my.cnf,开启BINLOG,并设置server-id,修改这两个参数需要重新启动数据库才能生效。
[mysqld]
lob-bin = /home/mysql/log/mysql-bin.log
server-id = 1
3:在主数据库上,执行锁,防止有新的数据更新,以便获取一个快照
mysql>flush tables with read lock;
4:然后得到主库上当前的二进制日志名和偏移量,
mysql>show master status;
5:生成主库的备份,有很多方式,我这里直接生成tar包
6:主库备份完,马上执行解锁
mysql>unlock tables;
7:将主库备份的tar包拷贝到从库的数据目录下,解压
8:修改从库的my.cnf,增加server-id
[mysqld]
server-id=2
9:在从库上,使用--skip-slave-start启动从库,这样不会立即启动,有时间让我们配置
./bin/mysqld_safe --skip-slave-start & [1] 8768
Starting myslsd daemon with database from /home/mysql/data
10:对从库服务器做修改,指定主库的复制的信息
mysql>CHANGE MASTER TO
->MASTER_HOST='master_host_ip'
->MASTER_POST='master_host_post'
->MASTER_USER='第一步创建的用户'
->MASTER_PASSWORD='第一步创建的密码'
->MASTER_LOG_FILE='第四步查询到的file' 例如我的是mysql-bin.000008
->MASTER_LOG_POS='第四步查询到的position' 例如我的是14274500
11:在从库上启动slave线程;
mysql>start slave;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值