centos7搭建mysql主从复制

环境描述

操作系统:CentOS7 主服务器master192.168.32.130 从服务器slave192.168.32.129

主从复制

前面我已经写了关于centos7上面配置mysql数据库的文章了,这里就直接跳过mysql安装。

1)主从复制原理



 

图片来源于网络

主从复制分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下:1.Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;   2.Master接收到来自SlaveIO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;   3.SlaveIO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master。    4.SlaveSql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

 

  1. 修改mysql master服务器

    master服务器上(我这里是192.168.32.130),切换到/etc/ 下找到my.cnf文件,对其进行修改,修改内容主要是在文件最上面添加如下内容:

    server-id=202   #设置服务器唯一的id,默认是1,我们设置ip最后一段,slave设置203

    log-bin=mysql-bin # 启用二进制日志

    binlog-ignore-db=mysql,information_schema  #忽略写入binlog的库



      

     

  2. 修改mysql slave服务器

    slaver服务器上(我这里是192.168.32.129),切换到/etc/ 下找到my.cnf文件,对其进行修改,修改内容主要是在文件最上面添加如下内容:

    server-id=203   #这个值只要与集群中的mysql服务器保持唯一就行,可以自定义

    replicate-do-db = jeff  #只同步jeff

    slave-skip-errors = all   #忽略因复制出现的所有错误



      

  3. 重启masterslaver服务器

     systemctl restart mysqld,其实这里你也可以先关闭systemctl stop mysqld然后再启动systemctl start mysqld

     

  4. 在主服务器上建立帐户并授权slave

    GRANT REPLICATION SLAVE ON *.* to 'mysqlsync'@'192.168.32.129' identified by 'chenfeng1234.Com';

     

  5. 查看主数据库状态

    登录master数据库,通过命令show master status;进行查看主数据库状态,主要看masterFilePosition对应的值,方便后面讲其配置到slave中。



      

     

  6. 配置从数据库

    登录slave数据库,通过命令

    change master to

    master_host='192.168.32.130',

    master_user='chenfeng',

    master_password='ChenFeng0814!',

    master_log_file='mysql-bin.000003',

    master_log_pos=1731;

    这里解释一下各命令的含义:

    master_host 表示master服务器的IP地址;

    master_user表示master服务器给定的远程登录用户名;

    master_password表示远程登录密码;

    master_log_file表示master服务状态中的File值;

    master_log_pos表示master服务状态中Position值。

     

  7. 启动slave同步进程并查看状态

    登录slave数据库,通过命令show slave status\G;当红圈内的两个状态都是yes就表明已经配置同步成功了,如下图所示:



      

     

  8. 验证主从同步

    此时所有主从同步配置已完成,现在我在master服务器上jeff数据库中插入一张表并导入部分数据来验证下slave服务器是否能够正常同步过来,可以看到此时数据库中并没有表的存在。



      

    master中执行添加表语句



      

    可以看到此时master上面表已经建成了



      

    再查看slave上面是否已经同步过去了,确实是已经同步过来了



      

     

  9. 常见错误



      

    如上图,查看slave状态是IO_RUNNING状态为no,这个可能是/var/lib/mysql/auto.cnf中的server-uuid主、从重复了,解决办法是将master上的auto.cnf文件删除,然后重启master服务器的mysql服务,将会生成一个新的auto.cnf文件,且server-uuid肯定和slave上面的值不等。



      

    如上图,查看slave状态是IO_RUNNING状态为connecting,这个错误可能由三个原因导致:1.远程用户、密码配置错误;2.read_master_log_posrelay_master_log_file配置错误;3.网络问题或者防火墙问题。

     

    参考博文地址:http://blog.jobbole.com/94595/

猜你喜欢

转载自626333422-qq-com201110121851.iteye.com/blog/2369042