Mysql 中有一個(gè)binlog 二進(jìn)制日志,這個(gè)日志會(huì)記錄下所有修改了的SQL 語句,從服務(wù)器把主服務(wù)器上的binlog二進(jìn)制日志在指定的位置開始復(fù)制主服務(wù)器所進(jìn)行修改的語句到從服務(wù)器上執(zhí)行一遍。
流程圖
Linux:centos7
mysql版本:mysql5.7(安裝教程:https://blog.csdn.net/weixin_45797918/article/details/104929127)
主服務(wù)器:10.10.10.130
從服務(wù)器:10.10.10.133
主機(jī)配置
vim /etc/my.cnf
添加配置
#主服務(wù)器唯一ID
server-id=1
#啟用二進(jìn)制日志
log-bin=mysql-bin
#設(shè)置不要復(fù)制的數(shù)據(jù)庫(可設(shè)置多個(gè))
binlog-ignore-db=mysql binlog-ignore-db=information_schema
#設(shè)置需要復(fù)制的數(shù)據(jù)庫
binlog-do-db=需要復(fù)制的主數(shù)據(jù)庫名字
#設(shè)置logbin格式
binlog_format=STATEMENT
從機(jī)配置
vim /etc/my.cnf
添加配置
#從服務(wù)器唯一ID
server-id=2
#啟用中繼日志
relay-log=mysql-relay
在主機(jī)MySQL里執(zhí)行授權(quán)命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
查詢master的狀態(tài)
show master status;
#記錄下File和Position的值
#執(zhí)行完此步驟后不要再操作主服務(wù)器MySQL,防止主服務(wù)器狀態(tài)值變化
在主機(jī)MySQL里執(zhí)行
CHANGE MASTER TO MASTER_HOST='10.10.10.130', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
CHANGE MASTER TO MASTER_HOST='主機(jī)的IP地址’,
MASTER_USER='slave’,
MASTER_PASSWORD='123456’,
MASTER_LOG_FILE='mysql-bin.具體數(shù)字’,MASTER_LOG_POS=具體值;
啟動(dòng)從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
主機(jī)創(chuàng)建testdb數(shù)據(jù)庫和表user
從機(jī)直接刷新
Master1:10.10.10.130
Slave1:10.10.10.133
Master2:10.10.10.134
Slave2:10.10.10.135
從機(jī)上執(zhí)行
stop slave;
重設(shè)
reset slave;
刪除主機(jī)從機(jī)testdb數(shù)據(jù)庫
編輯Master1
修改配置文件,添加
vim /etc/my.cnf
#主服務(wù)器唯一ID
server-id=1
#啟用二進(jìn)制日志
log-bin=mysql-bin
#設(shè)置不要復(fù)制的數(shù)據(jù)庫(可設(shè)置多個(gè))
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設(shè)置需要復(fù)制的數(shù)據(jù)庫
binlog-do-db=需要復(fù)制的主數(shù)據(jù)庫名字
#設(shè)置logbin格式
binlog_format=STATEMENT
#在作為從數(shù)據(jù)庫的時(shí)候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
#表示自增長字段每次遞增的量,指自增字段的起始值,其默認(rèn)值是1,取值范圍是1 … 65535
auto-increment-increment=2
#表示自增長字段從哪個(gè)數(shù)開始,指字段一次遞增多少,他的取值范圍是1 … 65535
auto-increment-offset=1
編輯Master2
修改配置文件,添加
vim /etc/my.cnf
#主服務(wù)器唯一ID
server-id=3
#啟用二進(jìn)制日志
log-bin=mysql-bin
#設(shè)置不要復(fù)制的數(shù)據(jù)庫(可設(shè)置多個(gè))
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設(shè)置需要復(fù)制的數(shù)據(jù)庫
binlog-do-db=需要復(fù)制的主數(shù)據(jù)庫名字
#設(shè)置logbin格式
binlog_format=STATEMENT
#在作為從數(shù)據(jù)庫的時(shí)候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
#表示自增長字段每次遞增的量,指自增字段的起始值,其默認(rèn)值是1,取值范圍是1 … 65535
auto-increment-increment=2
#表示自增長字段從哪個(gè)數(shù)開始,指字段一次遞增多少,他的取值范圍是1 … 65535
auto-increment-offset=2
編輯Slave1
修改配置文件,添加
vim /etc/my.cnf
#從服務(wù)器唯一ID
server-id=2
#啟用中繼日志
relay-log=mysql-relay
編輯Slave2
修改配置文件,添加
vim /etc/my.cnf
#從服務(wù)器唯一ID server-id=4 #啟用中繼日志 relay-log=mysql-relay
Master1主機(jī)
MySQL里執(zhí)行授權(quán)命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
Master1
show master status;
Master2主機(jī)
MySQL里執(zhí)行授權(quán)命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
Master1
show master status;
Slave1
執(zhí)行
CHANGE MASTER TO MASTER_HOST='10.10.10.130', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;
啟動(dòng)兩臺從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
Slave2
執(zhí)行
CHANGE MASTER TO MASTER_HOST='10.10.10.134', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
啟動(dòng)兩臺從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
兩個(gè)主機(jī)互相復(fù)制
Master2
執(zhí)行
CHANGE MASTER TO MASTER_HOST='10.10.10.130', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;
啟動(dòng)兩臺從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
Master1
執(zhí)行
CHANGE MASTER TO MASTER_HOST='10.10.10.134', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
啟動(dòng)兩臺從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
#復(fù)制主機(jī)的命令
CHANGE MASTER TO MASTER_HOST='主機(jī)的IP地址’,
MASTER_USER='slave’,
MASTER_PASSWORD='123456’,
MASTER_LOG_FILE='mysql-bin.具體數(shù)字’,MASTER_LOG_POS=具體值;
在Master1創(chuàng)建數(shù)據(jù)庫testdb
其他三個(gè)數(shù)據(jù)庫刷新查詢出現(xiàn)testdb數(shù)據(jù)庫
在Master2創(chuàng)建user表
其他上數(shù)據(jù)庫刷新出現(xiàn)user表