天天看點

Linux環境下實作Mariadb資料庫伺服器主從複制

一、一主一從

Linux環境下實作Mariadb資料庫伺服器主從複制

用兩台裝置實作,現都是資料庫初始狀态,開始設定一主一從

1、配置主節點

(1)修改配置檔案啟用,必要設定:log_bin和server_id=1,設定好後重新開機

此時二進制日志pos點是

Linux環境下實作Mariadb資料庫伺服器主從複制

(2)建立有複制權限的使用者賬号

GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.239.%' IDENTIFIED BY 'admini';

Linux環境下實作Mariadb資料庫伺服器主從複制

(3)添加一個資料庫,再看二進制日志的pos點

Linux環境下實作Mariadb資料庫伺服器主從複制

(4)關閉防火牆

2、配置從節點

(1)必要設定:server_id=2,如果隻做從伺服器配置不用寫log_bin

Linux環境下實作Mariadb資料庫伺服器主從複制

(2)重新開機服務,并關閉防火牆

(3)在從節點上啟動複制線程

輸入一段代碼,這段隻要記住會運用help change指令就行

第一次輸入後

Linux環境下實作Mariadb資料庫伺服器主從複制

再次輸入help CHANGE MASTER TO,可以看到

Linux環境下實作Mariadb資料庫伺服器主從複制

将這段進行複制修改

CHANGE MASTER TO

  MASTER_HOST='192.168.239.70',

  MASTER_USER='repluser',

  MASTER_PASSWORD='admini',

  MASTER_PORT=3306,

  MASTER_LOG_FILE='c7ts-bin.000001',

  MASTER_LOG_POS=327;          

Linux環境下實作Mariadb資料庫伺服器主從複制

(3)完成後start slave,可以用show slave status\G檢視狀态

Linux環境下實作Mariadb資料庫伺服器主從複制

3、測試

Linux環境下實作Mariadb資料庫伺服器主從複制

二、級聯複制

Linux環境下實作Mariadb資料庫伺服器主從複制

如果級聯複制伺服器資料庫内容同步差很多,建議主伺服器備份後,以還原方法給從伺服器還原

主伺服器操作:

mysqldump -A -F --single-transaction --master-data=1 | gzip > db.sql.gz

show master logs

mysqlbinlog BINLOG --start-position=POSNUM > incr.sql

scp db.sq.gz IP:/DIR

scp incr.sql IP:/DIR

(此時為了資料同步可以考慮加讀鎖,直到還原完成)

從伺服器操作

gzip -d db.sq.gz

mysql

set sql_log_bin=off

source db.sql

source incr.sql

set sql_log_bin=on

從伺服器資料還原完成,解除主伺服器讀鎖

1、主伺服器配置

不變,和上個實驗一樣

Linux環境下實作Mariadb資料庫伺服器主從複制

看下自己的二進制日志,show master logs

Linux環境下實作Mariadb資料庫伺服器主從複制

建立複制使用者賬号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

Linux環境下實作Mariadb資料庫伺服器主從複制

關閉防火牆

2、配置中間的從伺服器,級聯關鍵伺服器配置

Linux環境下實作Mariadb資料庫伺服器主從複制

關閉防火牆,然後進入資料庫後和主伺服器建立主從連接配接,輸入指令help change master to

Linux環境下實作Mariadb資料庫伺服器主從複制

複制修改

  MASTER_LOG_POS=460;

3、show slave status\G檢查輸入資訊是否正确

Linux環境下實作Mariadb資料庫伺服器主從複制

如果正常,start slave開始連接配接,連接配接之後show slave status\G

Linux環境下實作Mariadb資料庫伺服器主從複制

測試,主伺服器加載了個資料庫,從伺服器也看到了

Linux環境下實作Mariadb資料庫伺服器主從複制

此時檢視二進制日志檔案

Linux環境下實作Mariadb資料庫伺服器主從複制

4、配置末尾的從伺服器

這裡也是如果資料相差太多,還是建議用還原方法和前面的伺服器同步

Linux環境下實作Mariadb資料庫伺服器主從複制

關閉防火牆重新開機資料庫服務,進入資料庫

  MASTER_HOST='192.168.239.71',         

  MASTER_LOG_FILE='centos7-1-bin.000001',

  MASTER_LOG_POS=9083;

Linux環境下實作Mariadb資料庫伺服器主從複制

5、老規矩,确認從伺服器連接配接資訊

Linux環境下實作Mariadb資料庫伺服器主從複制

确認後start slave;再次檢視slave狀态

Linux環境下實作Mariadb資料庫伺服器主從複制

6、測試,成功

Linux環境下實作Mariadb資料庫伺服器主從複制

三、半同步複制

半同步複制實作:一主多從,如果至少一個從伺服器同步成功,主伺服器将會向用戶端傳回成功資訊;或者所有從伺服器長時間沒有同步,超過了限定時長,主伺服器也将會向用戶端傳回成功資訊

1、搭建主從伺服器:

主:

Linux環境下實作Mariadb資料庫伺服器主從複制

從:

Linux環境下實作Mariadb資料庫伺服器主從複制

之後重新開機,進行主從配置

主伺服器建立複制賬号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

Linux環境下實作Mariadb資料庫伺服器主從複制

從伺服器配置

  MASTER_HOST='192.168.239.200',

  MASTER_LOG_FILE='master-bin.000001',

  MASTER_LOG_POS=533;

測通後進入下一步

2、進一步配置

主伺服器,進入mysql,show plugins檢查是否有semisync_master.so插件,沒有話安裝

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

SET GLOBAL rpl_semi_sync_master_enabled=1;,寫入檔案時永久儲存

SHOW GLOBAL VARIABLES LIKE '%semi%';

SHOW GLOBAL STATUS LIKE '%semi%';

Linux環境下實作Mariadb資料庫伺服器主從複制

從伺服器,配置

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

SET GLOBAL rpl_semi_sync_slave_enabled=1;

輸入後還需要stop slave; start slave;

Linux環境下實作Mariadb資料庫伺服器主從複制

3、驗證半同步

驗證方法:主伺服器執行指令前或者執行時,半同步伺服器down掉,等主伺服器傳回後再上線半同步伺服器,看資料是否寫入半同步

Linux環境下實作Mariadb資料庫伺服器主從複制

此時發現10秒傳回了成功資訊(這10秒的設定可以自己設定為3秒),此時再上線從伺服器看資料是否同步

Linux環境下實作Mariadb資料庫伺服器主從複制

成功

4、此時我們加入複制過濾,因為複制過濾時不建議在主伺服器添加選項,是以我們在從伺服器上開始設定

我們實驗有兩台從伺服器,此時從伺服器一台設定資料庫黑名單,一台設定表黑名單

Linux環境下實作Mariadb資料庫伺服器主從複制

現在開始測試過濾,注意use切換到庫中執行指令

主伺服器輸入語句

Linux環境下實作Mariadb資料庫伺服器主從複制

測試結果

Linux環境下實作Mariadb資料庫伺服器主從複制

後期如果有時間,将會補上SSL實驗和Cluster實驗

繼續閱讀