首页 > 数据库技术 > 详细

Mysql主从复制

时间:2021-04-25 00:12:59      阅读:29      评论:0      收藏:0      [点我收藏+]
mysql主从复制
#从节点执行
    change master to 
  master_host=‘1.0.0.3‘,(这里最好使用ip,其实写主机的也是可以的,但是一个局域网内主机名很多相同的话,会找不到)
  master_port=3306,
  master_user=‘zyh‘,
  master_password=‘123456‘,
  master_log_file=‘mysql-bin-11.000002‘,
  master_log_pos=1326;

# 查看状态
show master status\G

流程:
1、主节点必须启用二进制日志,记录任何修改了数据库数据的事件。
2、从节点开启一个线程(I/O Thread)把自己扮演成 mysql 的客户端,通过 mysql 协议,请求主节点的二进制日志文件中的事件 。
3、主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。
4、从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具体哪一个二进制日志文件内部的哪一个位置(主节点中的二进制文件会有多个)。
5、从节点启动另外一个线程(sql Thread ),把 Relay log 中的事件读取出来,并在本地再执行一次。

? mysql默认的复制方式是异步的,并且复制的时候是有并行复制能力的。同步可能遇到网络不稳定的问题,所以复制方式有:

  • 异步复制:主库生成一个 binlog dump 线程向从库 I/O 线程传送 binlog。从库上的 I/O 线程将 binlog 复制到自己的 relay log 中。最终由从库中的 SQL 线程读取 relay log 中的事件重放到从库上。

  • semi-sync半同步复制:master的dump线程除了发送binlog数据到slave,还承担了接收slave的ack工作。如果出现异常,没有收到ack,那么将自动降为普通的异步复制,直到异常修复

  • 级联复制模型:myql主服务器有多个从服务器(2个+),当主服务器因为向多个从服务器,发送更新的二进制日志(过程是串行的),而造成主服务器的压力大时,推荐使用级联复制

产生时延的原因:

  • slave的Slave_SQL_Running是单线程的,跟不上master(甚至是多主一从模型)。可以开并行复制(5.6支持)
  • 产生了锁等待
  • 硬件负载:cpu、io、网络负载大

解决对应问题,甚至还可以直接禁用slave端的binlog

Mysql主从复制

原文:https://www.cnblogs.com/brightdagger/p/14698119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!