创新路
我们一直在努力

Mysql主从复制

什么是MySQL主从复制

    通俗的讲,就是主库发生增删改的变化时,从库会跟着发生变化,从库内数据保持和主库一样

MySQL的复制原理以及流程

3个线程以及之间的关联;

(1)主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;

(2)从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进自己的relay log中;

(3)从:sql执行线程——执行relay log中的语句;

 

Mysql主从复制原理过程详细描述

1、在Slave服务器上执行start slave命令开启主从复制开关,开始进行主从同步。

2、此时,Slave服务器I/O线程为通过Master上已经授权的复制用户权限请求连接Master服务器,并请求从指定binlog日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行change master命令指定的)之后开始发送binlog日志内容。

3、Master服务器接收到来自Slave服务器的I/O线程请求后,其上负责复制的I/O线程会根据Slave服务器的I/O线程请求的信息分批读取指定binlog日志文件指定位置之后的binlog日志信息,然后返回给Slave端的I/O线程。返回的信息中除了binlog日志内容外,还有在Master服务器端记录的新的binlog文件名称,以及在新的binlog中的下一个执行更新位置。

4、当Slave服务器的I/O线程获取到Master服务器上I/O线程发送的日志内容,日志文件及位置点后,会将binlog日志内容依次写到Slave端自身Relay Log(中继日志)文件(MySQL-relay-bin.xxxx)的最末端,并将新的binlog文件名和位置记录到master-info文件中,以便下一次读取Master端新binlog日志时能够告诉Master服务器从新binlog日志的指定文件及位置开始请求新的binlog日志文件。

5、Slave服务器端的SQL线程会实时检测本地Relay Log中I/O线程新增加的日志内容,然后及时地把Relay Log文件中内容解析成SQL语句,并在自身Slave服务器上按解析SQL语句的位置顺序执行应用这些SQL语句,并在relay-log.info中记录当前应用中继日志的文件名及位置点。    经过上面的过程,就可以确保在Master端和Slave端执行了同样的SQL语句。当复制状态正常时,Master端和Slave端的数据是完全一样的。

说了这么多废话,实际操作一下!

一、准备两台机器,一台做主库,一台做从库,两台均安装了mariadb代替mysql用,并且需要互相ping通

二、主库操作

    1.前面讲到需要用到binlog日志,所以需要配置一下主库的mysql数据库的配置文件my.cnf

    image.png

    配置server_id,这里只是机器代号,所以根据自己的习惯来,log_bin这个是配置binlog日志的文件名,其实也可以随意,binlog_format是配置binlog日志的记录方式,这里必须配置mixed,是记录binlog日志的方法,混合记录的意思

    然后重启mysql数据库         systemctl restart mariadb

    进入mysql数据库授权一个作为同步数据的一个账号

    image.png

    replication slave是只能作为从库同步账号的一个权限,kenji@'%'这里也可以设置需要同步的从库Ip地址,如果有多个从库,则为%最方便

    再查看一下binlog日志    show master status;

    image.png

    2.从库,只需要配置一个server_id即可

    image.png

    同样,重启mysql       systemctl restart mariadb

    这里可以测试一下刚刚主库授权的账号是否可以登录

    image.png

    很不幸,登录不上,排查一下原因,1.能不能ping通,2.能不能telnet通3306,最后发现需要在主库上添加一个iptable

    image.png

    经过测试在从库的机器上能登录上主库了,然后配置同步,先用root登录上从库的mysql查看一下slave配置image.png 

    这个就表示还没有配置slave,接下来就是配置slave

image.png

    然后启动同步 start slave

    查看同步 show slave status\G;     //\G是为了方便阅读

    image.png

    出现这两个yes就标明配置没有问题,然后就可以在主库上随便建一个数据库,然后去从库上看看有没有啦!

    以上就是配置主从

    

    当然这就是最简单的主从复制的模式

    还有另外的一主多从,互为主从,一主一从(主)一从(主)一从等等

    

未经允许不得转载:天府数据港官方信息博客 » Mysql主从复制

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机