MySql实现主从热备和读写分离

本文详细介绍了MySQL主从热备份的工作原理,包括主服务器如何记录sql语句到binLog,从服务器如何同步。实际操作部分涉及配置主从服务器、处理自增长主键冲突,并探讨了双主热备份的实现。此外,还讨论了MySQL5.6的新特性,如GTID在主备复制中的应用,以及配置文件位置等。
摘要由CSDN通过智能技术生成

MySql 主从热备份工作原理

简单的说:就是主服务器上执行过的sql语句会保存在binLog里面,别的从服务器把他同步过来,然后重复执行一遍,那么它们就能一直同步啦。

我们进一步详细介绍原理的细节, 这有一张图:

以上是一个主-从复制(热备)的例子。

整体上来说,复制有3个步骤:

  1. 作为主服务器的Master,会把自己的每一次改动(每条sql语句)都记录到二进制日志Binarylog中。
  2. 作为从服务器Slave, 会用master上的账号登陆到 master上,读取master的Binarylog,写入到自己的中继日志 Relaylog。
  3. 然后从服务器自己的sql线程会负责读取这个中继日志,并执行一遍。

到这里主服务器上的更改就同步到从服务器上了,这种复制和重复都是mysql自动实现的,我们只需要配置即可。
整个过程,MySQL使用3个线程来执行复制同步功能,其中两个线程(Sql线程和IO线程)在从服务器,另外一个线程(IO线程)在主服务器。

主-主互相复制实际只是把上面的例子反过来再做一遍。
所以我们以这个例子介绍原理。

实际操作

实际操作是
主服务器, 配置要记录在binLog里面的数据库,同时设置一个给从服务器登录的账号。
从服务器, 配置relayLog,配置主服务器的地址和端口,还有主服务器给的登录账号。

  1. 在主服务器上设置给从服务器登录用的账号
    rant replication slave on *.* to 'relay_user1'@'192.168.1.168' identified by 'pass123456';
    注意:
    从服务器地址为:192.168.1.168,换成你的从机器的IP地址,这样就只允许从服务器登录,相对安全些。
    用户名为: relay_user1
    密码为: pass123456,自己按需要修改。

  2. 修改MySQL配置文件
    如果有Workbench,可以在左边的Navigator栏找到Options File,然后进行配置,如果想直接修改配置文件,文件的位置请看结尾的后记3.

    主服务器的my.cnf配置

    log-bin=master-a-bin
    binlog-format=ROW //二进制日志的格式,有row、statement和mixed三种类型
    server-id=1//要求各个服务器的这个id必须不一样
    
    binlog-do-db=test //我们想让主服务器记录下操作的数据库。好让从服务器去复制的。
    auto_increment_offset = 1 //设置AUTO_INCREMENT起点,关于这个看后记4
    auto_increment_increment = 10 //设置AUTO_INCREMENT增量  
    
    //下面是一些别的配置,你可以跳过不看的
    //   
    gtid-mode=on //启用GTID,可看结尾的后记2说明
    enforce-gtid-consistency=true //启用GTID
    
    master-info-repository=TABLE//默认是file,选择table方式保存
    relay-log</
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值