玩转Linux系统之轻松搭建Mysql主从复制集群
Posted Friends of the wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之轻松搭建Mysql主从复制集群相关的知识,希望对你有一定的参考价值。
原理
温馨提示:读写分离将在下期讲解,暂略
- 更新数据之前,主服务器在二进制日志(Binary log)记录这些改变,存储引擎提交事务。
- 存储引擎提交事务给从服务器的I/O线程,将从主服务器的二进制日志(Binary log)中读取事件,并写入中继日志(Relay log)
- SQL从线程处理最后一步,将从中继日志读取事件,并重放其中的事件(例如,插入名称是张三的数据,SQL语言结构是,insert语法结构的类型,将SQL语言转换成具体的汉字张三),这样从服务器和主服务器的数据一致。
复制类型
- 基于语句的复制。在主服务器上执行的sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制类型(上图,就是基于语句的复制原理)
- 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍
- 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制
案例
温馨提示:实验环境,关闭防火墙,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
解决方案:
- 登录mysql通过命令生成一个uuid复制等会用于修改
- 编辑mysql数据文件目录里面的auto.cnf 文件
vim /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=85dba00a-e0ef-11e9-b341-000c29812345 //粘贴刚才生成的 - 重启mysql
以上是关于玩转Linux系统之轻松搭建Mysql主从复制集群的主要内容,如果未能解决你的问题,请参考以下文章