Mysql主从复制

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

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

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

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

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

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

产生时延的缘由:网络

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

解决对应问题,甚至还能够直接禁用slave端的binlog异步

相关文章
相关标签/搜索