mysql主從複製和主主複製

兩臺服務器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: 

 

 

可以看出配置成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章