MySQL复制类型
异步复制
MySQL默认的复制,主库完成事务时立即将结果返回给客户端,并不关心从库是否接受并处理,因此此类型的响应速度快,但是数据的可靠性低。
全同步复制
当主库执行完一个事务,并且所有从库也都执行完该事务时才给客户端返回结果,所以全同步复制的数据可靠性极高。
半同步复制
MySQL5.5以后才开始支持的半同步复制,介于上两者之间。主库在执行完一个事务后,等待至少一个从库收到并写入到中继日志中才返回给客户端,所以相对于全同步来说缩短了响应时间。
因为这个延迟的时间至少是一个TCP/IP的往返时间,所以最好在低延迟的网络中使用。
MySQL的复制方式
- 基于SQL语句复制(SBR)
- 基于行的复制(RBR)
- 混合模式复制(MBR)
- 基于GTIDS复制(MySQL5.6.5以后采用该复制方式,对事务的复制)
部署MySQL主从复制(异步)
实验环境
Master:192.168.200.112
slave1:192.168.200.111
slave2:192.168.200.11
准备工作
所有机器关闭防火墙及selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
为了保证实验顺利进行,还需要对三台服务器进行时间同步。
Master:
[root@localhost ~]# yum -y install ntp
[root@localhost ~]# vim /etc/ntp.conf
#添加两行
server 127.127.1.0
fudge 127.127.1.0 startum 8
[root@localhost ~]# systemctl start ntpd
slave1、2
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate 192.168.200.112
所有机器安装mysql,这里是用yum安装的mariadb,效果一样
[root@localhost ~]# yum -y install mariadb mariadb-server
配置主服务器
修改配置文件
[root@localhost ~]# vim /etc/my.cnf
#手动修改或添加
[mysqld]
server-id=1 //主从不能相同!!
log-bin=mysql-binlog //开启二进制日志,后面是文件的前缀名
log-slave-ipdates=ture //允许从服务器更新数据
开启服务器
[root@localhost ~]# systemctl start mariadb
创建授权账号、刷新授权表
MariaDB [(none)