兩臺服務器CentOS 7.6,MySQL5.6
A服務器IP:140.143.196.126
B服務器IP:152.136.142.183
準備工作:如果是阿里或騰訊的服務器一定要在安全組的出入站規則里加入3306端口,在防火牆裏放行3306端口!!!
一、主從複製
設A服務器爲主:
MySQL配置文件my.cnf(一般Linux中的MySQL配置文件都在/etc/my.cnf;windows中的配置文件爲mysql.ini)
開啓二進制日誌 log-bin=mysql-bin 數據同步的實質就是在其他的MySQL服務器上將這個數據變更的二進制日誌再執行一遍。
在A服務器中創建一個B服務器可以登錄的MySQL用戶(yh爲用戶名,123456爲密碼,可自行設定):
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘yh’@’152.136.142.183’ IDENTIFIED BY ‘123456’;
mysql>FLUSH PRIVILEGES;
查看A服務器MySQL二進制文件名與位置 (登錄mysql:mysql -u root -p):
mysql>SHOW MASTER STATUS;
測試B服務器是否可以連接上A服務器上的MySQL(如果失敗,請檢查安全組和防火牆):
mysql -h 140.143.196.126 -utest -p123456
告知B服務器A服務器的MySQL二進制文件名與位置,在B服務器中執行(登錄mysql:mysql -u root -p):
CHANGE MASTER TO MASTER_HOST='140.143.196.126',
MASTER_USER='yh',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1171;
開啓主從複製:
#開啓複製
mysql>START SLAVE;
#查看主從複製是否配置成功
mysql>SHOW SLAVE STATUSG
紅框中兩項都爲Yes則成功
測試:
在A服務器MySQL中執行:
create database author;
use author;
create table info(id int auto_increment,name varchar(32),primary key(id));
insert into info(name) values('LIBAI');
select * from info;
在B服務器MySQL中執行
use author;
select * from info;
可見同步成功!
二、主主複製
需要在MySQL配置文件中增加幾項設置:
A服務器:
#任意自然數,保證兩臺MySQL主機不重複
server-id=1
#開啓二進制日誌
log-bin=mysql-bin
#步進值auto_imcrement。一般有n臺主MySQL就填n
auto_increment_increment=2
#起始值。一般填第n臺主MySQL。此時爲第一臺主MySQL
auto_increment_offset=1
#忽略同步的mysql庫,可不設置
binlog-ignore=mysql
binlog-ignore=information_schema
#要同步的數據庫,默認所有庫
replicate-do-db=author
B服務器:
#任意自然數,保證兩臺MySQL主機不重複
server-id=2
#開啓二進制日誌
log-bin=mysql-bin
#步進值auto_imcrement。一般有n臺主MySQL就填n
auto_increment_increment=2
#起始值。一般填第n臺主MySQL。
auto_increment_offset=2
#忽略同步的mysql庫,可不設置
binlog-ignore=mysql
binlog-ignore=information_schema
#要同步的數據庫,默認所有庫
replicate-do-db=author
在B服務器中增加MySQL用戶:
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘yho’@’140.143.196.126’ IDENTIFIED BY ‘123456’;
mysql>FLUSH PRIVILEGES;
查看B服務器MySQL二進制文件名與位置 (登錄mysql:mysql -u root -p):
mysql>SHOW MASTER STATUS;
告知A服務器B服務器的MySQL二進制文件名與位置,在A服務器中執行(登錄mysql:mysql -u root -p):
CHANGE MASTER TO MASTER_HOST='152.136.142.183',
MASTER_USER='myh',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1129;
#開啓複製
mysql>START SLAVE;
#查看主從複製是否配置成功
mysql>SHOW SLAVE STATUSG
紅框中都爲Yes則爲成功!
測試主主複製:
在AB服務器中各自添加數據
A:
B:
A:
可以看出配置成功!