目录
2.3、主服务器的mysql配置(192.168.80.11)
2.4、从服务器的mysql配置(192.168.80.12/13)
4.2、Amoeba服务器配置(192.168.80.14)
一. MySQL 主从复制原理
MySQL 的主从复制和 MySQL 的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。
1.1 MySQL 支持的复制类型
基于语句的复制(STATEMENT):在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。MySQL 默认采用基于语句的复制,效率比较高。
基于行的复制(ROW):把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
混合类型的复制(MIXED):默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。
1.2 MySQL主从复制的工作过程
Master 服务器保存记录到二进制日志
在每个事务更新数据完成之前,Master 服务器在二进制日志(Binary log)记录这些改变。写入二进制日志完成后,Master 服务器通知存储引擎提交事务。
Slave 服务器复制 Master 服务器的日志
Slave 服务器将 Master 服务器的二进制日志复制到其中继日志(Relay log)。
首先 Slave 服务器开始一个工作线程(I/O),I/O线程在 Master 服务器上打开一个普通的连接,然后开始 Binlog dump process。
Binlog dump process 从 Master 服务器的二进制日志中读取事件,如果 Slave 服务器已经跟上 Master 服务器,它会睡眠并等待 Master 服务器产生新的事件,I/O线程将这些事件写入中继日志。
Slave 服务器重放复制过来的日志
SQL slave thread(SQL从线程)处理该过程的最后一步,SQL线程从中继日志读取事件,并重放其中的事件而更新 Slave 服务器的数据,使其与 Master 服务器中的数据一致,只要该线程与 I/O 线程保持一致,中继日志通常会位于 OS 缓存中,所以中继日志的开销很小。
注意: 复制过程有一个很重要的限制,即复制在 Slave 服务器上是串行化的,也就是说 Master 服务器上的并行更新操作不能在 Slave 服务器上并行操作。
二、主从复制实验部署
2.1、实验环境
- master 服务器:192.168.80.11
- slave1 服务器:192.168.80.12
- slave2 服务器:192.168.80.13
2.2、mysql主从服务器时间同步
主服务器(192.168.80.11)
systemctl stop firewalld
setenforce 0
yum -y install ntp
vim /etc/ntp.conf
#末尾添加
server 127.127.80.0 #设置本地是时钟源,注意修改网段
fudge 127.127.80.0 stratum 8 #设置时间层级为8(限制在15内)
service ntpd start
从服务器(192.168.80.12/13)
systemctl stop firewalld
setenforce 0
yum -y install ntp ntpdate
systemctl start ntpd
/usr/sbin/ntpdate 192.168.80.11 #进行时间同步
crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.80.11 #指定周期化任务定期同步时间
2.3、主服务器的mysql配置(192.168.80.11)
vim /etc/my.cnf
server-id=1
log-bin=master-bin #添加,主服务器开启二进制日志
binlog_format=