0
点赞
收藏
分享

微信扫一扫

玩转Linux系统之轻松搭建Mysql主从复制集群


原理

玩转Linux系统之轻松搭建Mysql主从复制集群_mysql


温馨提示:理论虽有点枯燥,但是对于案例搭建很有帮助。

  1. 更新数据之前,主服务器在二进制日志(Binary log)记录这些改变,存储引擎提交事务。
  2. 存储引擎提交事务给从服务器的I/O线程,将从主服务器的二进制日志(Binary log)中读取事件,并写入中继日志(Relay log)
  3. SQL从线程处理最后一步,将从中继日志读取事件,并重放其中的事件(例如,插入名称是张三的数据,SQL语言结构是,insert语法结构的类型,将SQL语言转换成具体的汉字张三),这样从服务器和主服务器的数据一致。

复制类型

  1. 基于语句的复制。在主服务器上执行的sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制类型(上图,就是基于语句的复制原理)
  2. 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍
  3. 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制

案例

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_02

温馨提示:实验环境,关闭防火墙,setenfoce设置为宽容模式,暂不搭建代理服务器,mysql主服务器也是时间同步服务器。

推荐步骤:

(1)主节点上搭建时间同步服务器(centos7默认已安装时间同步服务,只需配置即可)

在/etc/ntp.conf文件中修改下面内容

vim /etc/ntp.conf

玩转Linux系统之轻松搭建Mysql主从复制集群_服务器_03


重启mysql服务

systemctl restart ntpd

(2) 从节点上进行时间同步

每台节点从服务器都执行命令:ntpdate 192.168.2.2

如下图显示

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_04

(3)配置mysql主服务器

① 在my.cnf文件中修改下面内容

vim /etc/my.cnf

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_05

②重启mysql服务

systemctl restart mysqld

③ 登录mysql,为从服务器授权

玩转Linux系统之轻松搭建Mysql主从复制集群_数据库_06


刷新权限

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_07


查看主服务器状态

玩转Linux系统之轻松搭建Mysql主从复制集群_服务器_08


(4)配置mysql从服务器①在my.cnf文件中修改下面内容

vim /etc/my.cnf

玩转Linux系统之轻松搭建Mysql主从复制集群_数据库_09


② 重启mysql服务

systemctl restart mysqld

③登录mysql,配置同步

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_10


④ 启动同步

玩转Linux系统之轻松搭建Mysql主从复制集群_mysql_11


⑤ 查看slave状态

玩转Linux系统之轻松搭建Mysql主从复制集群_数据库_12


(5)验证

①在主、从服务器上登录mysql

mysql -u root -p

②在主服务器上新建数据库名称为对面的美女看过来

mysql> create database 对面的美女看过来;

③在两台从服务器上查看数据库

执行新建数据库,对面的美女看过来命令,显示如下图:

玩转Linux系统之轻松搭建Mysql主从复制集群_数据库_13

执行查看数据库命令,显示如下图:

玩转Linux系统之轻松搭建Mysql主从复制集群_mysql_14


证明,从服务器复制了主服务器刚创建的数据,主从复制搭建成功!

常见报错

导致Slave_IO不能运行

玩转Linux系统之轻松搭建Mysql主从复制集群_linux_15


分析:

①忘记刷新权限

解决方案:虚拟机环境,只能恢复快照,按照上面步骤做,即便现在刷新,也不行。

②若是克隆的mysql,由于MySQL程序uuid相同,而导致错误状态
解决方案:

  1. 登录mysql通过命令生成一个uuid复制等会用于修改
  2. 编辑mysql数据文件目录里面的auto.cnf 文件
    vim /usr/local/mysql/data/auto.cnf
    [auto]
    server-uuid=85dba00a-e0ef-11e9-b341-000c29812345 //粘贴刚才生成的
  3. 重启mysql
    ③段偏移量和主服务器不一致
    注意:这个值是会自动变化的,只要更改配置,刷新,所以要用最新值。


    解决方案:重新登录mysql,用命令stop slave停止之前的slave,做正确配置。

总之,错误千万种,解决的方法也是可以找到的,我们应该避免两种类型的问题,第一种,复合型问题,解决了单一问题,未达到效果就自暴自弃
第二种,认为恢复快照能解决一切问题,有些时候,服务器的硬件配置不支持,以及虚拟机网卡类型没统一,无论恢复多少次,只是让我们离解决问题越来越远。


举报

相关推荐

0 条评论