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

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之轻松搭建Mysql主从复制集群相关的知识,希望对你有一定的参考价值。

原理

在这里插入图片描述
温馨提示:读写分离将在下期讲解,暂略

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

复制类型

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

案例

在这里插入图片描述

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

推荐步骤:

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

在/etc/ntp.conf文件中修改下面内容
vim /etc/ntp.conf
在这里插入图片描述
重启mysql服务

systemctl restart ntpd

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

每台节点从服务器都执行命令:ntpdate 192.168.2.2
如下图显示
在这里插入图片描述

(3)配置mysql主服务器

① 在my.cnf文件中修改下面内容
vim /etc/my.cnf在这里插入图片描述

②重启mysql服务

systemctl restart mysqld

③ 登录mysql,为从服务器授权
在这里插入图片描述
查看主服务器状态
在这里插入图片描述
(4)配置mysql从服务器

①在my.cnf文件中修改下面内容
vim /etc/my.cnf
在这里插入图片描述
② 重启mysql服务

systemctl restart mysqld

③登录mysql,配置同步
在这里插入图片描述
④ 启动同步
在这里插入图片描述
⑤ 查看slave状态
在这里插入图片描述
(5)验证
①在主、从服务器上登录mysql
mysql -u root -p
②在主服务器上新建数据库名称为对面的美女看过来
mysql> create database 对面的美女看过来;
③在两台从服务器上查看数据库
执行新建数据库,对面的美女看过来命令,显示如下图:
在这里插入图片描述

执行查看数据库命令,显示如下图:
在这里插入图片描述
证明,从服务器复制了主服务器刚创建的数据,主从复制搭建成功!


常见报错

主从MySQL程序的uuid相同,导致Slave_IO不能运行

在这里插入图片描述
分析:若是克隆的mysql,由于uuid相同,而导致查看从服务器状态, Slave_IO_Running: No

解决方案:

  1. 登录mysql通过命令生成一个uuid复制等会用于修改
    在这里插入图片描述
  2. 编辑mysql数据文件目录里面的auto.cnf 文件
    vim /usr/local/mysql/data/auto.cnf
    [auto]
    server-uuid=85dba00a-e0ef-11e9-b341-000c29812345 //粘贴刚才生成的
  3. 重启mysql

以上是关于玩转Linux系统之轻松搭建Mysql主从复制集群的主要内容,如果未能解决你的问题,请参考以下文章

玩转Linux系统之轻松搭建Redis集群

Linux MySQL集群搭建之主从复制

MYSQL | 企业整合解决方案之mysql集群搭建-主从配置

玩转Linux系统之shell脚本轻松搭建LNMP平台架构

玩转Redis的高可用(主从、哨兵、集群)

玩转Linux系统之轻松搭建Nginx服务