背景作用
- 简述
一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。 - 实现原理
1.Master 数据库只要发生变化,立马记录到Binary log 日志文件中
2.Slave数据库启动一个I/O thread连接Master数据库,请求Master变化的二进制日志
3.Slave I/O获取到的二进制日志,保存到自己的Relay log 日志文件中。
4.Slave 有一个 SQL thread定时检查Realy log是否变化,变化那么就更新数据
主从同步复制有以下几种方式:
(1)同步复制,master的变化,必须等待slave-1,slave-2,…,slave-n完成后才能返回。
(2)异步复制,master只需要完成自己的数据库操作即可,至于slaves是否收到二进制日志,是否完成操作,不用关心。MYSQL的默认设置。
(3)半同步复制,master只保证slaves中的一个操作成功,就返回,其他slave不管。这个功能,是由google为MYSQL引入的。
实施环境
Master服务器:150.17.232.10
Slave服务器:150.17.239.40
Master服务器设置
- 配置文件
[root@centos]# cat my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server_id=1
log-bin=master-bin
log-bin-index=master-bin.index
如需要特别设定只同步某个数据库或不同步某个数据库,需要添加如下配置:
binlog-do-db = test01,test02 #只同步test01,test02数据库
binlog-ignore-db=test01 #同步所有数据库除了test01库
- 重启服务
systemctl restart mariadb
- 锁表
mysql>flush tables with