Linux環境下實現Mariadb數據庫服務器主從複製

1、一主一從mysql

image.png

用兩臺設備實現,現都是數據庫初始狀態,開始設置一主一從sql

一、配置主節點數據庫

(1)修改配置文件啓用,必要設置:log_bin和server_id=1,設置好後重啓centos

image.png

此時二進制日誌pos點是服務器

image.png

(2)創建有複製權限的用戶帳號ide

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

image.png

(3)添加一個數據庫,再看二進制日誌的pos點centos7

image.png

(4)關閉防火牆spa

二、配置從節點插件

(1)必要設置:server_id=2,若是隻作從服務器配置不用寫log_bin

image.png

(2)重啓服務,並關閉防火牆

(3)在從節點上啓動複製線程

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

第一次輸入後

image.png

再次輸入help CHANGE MASTER TO,能夠看到

image.png

將這段進行復制修改

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;          

image.png

(3)完成後start slave,能夠用show slave status\G查看狀態

image.png

三、測試

image.png


2、級聯複製

image.png

若是級聯複製服務器數據庫內容同步差不少,建議主服務器備份後,以還原方法給從服務器還原

主服務器操做:

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

從服務器數據還原完成,解除主服務器讀鎖

一、主服務器配置

不變,和上個實驗同樣

image.png

看下本身的二進制日誌,show master logs

image.png

建立複製用戶帳號,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

image.png

關閉防火牆

二、配置中間的從服務器,級聯關鍵服務器配置

image.png

關閉防火牆,而後進入數據庫後和主服務器創建主從鏈接,輸入指令help change master to

image.png

複製修改

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=460;

三、show slave status\G檢查輸入信息是否正確

image.png

若是正常,start slave開始鏈接,鏈接以後show slave status\G

image.png

測試,主服務器加載了個數據庫,從服務器也看到了

image.png

此時查看二進制日誌文件

image.png

四、配置末尾的從服務器

這裏也是若是數據相差太多,仍是建議用還原方法和前面的服務器同步

image.png

關閉防火牆重啓數據庫服務,進入數據庫

CHANGE MASTER TO

  MASTER_HOST='192.168.239.71',         

  MASTER_USER='repluser',

  MASTER_PASSWORD='admini',

  MASTER_PORT=3306,

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

  MASTER_LOG_POS=9083;

image.png

五、老規矩,確認從服務器鏈接信息

image.png

確認後start slave;再次查看slave狀態

image.png

六、測試,成功

image.png


3、半同步複製

半同步複製實現:一主多從,若是至少一個從服務器同步成功,主服務器將會向客戶端返回成功信息;或者全部從服務器長時間沒有同步,超過了限定時長,主服務器也將會向客戶端返回成功信息

一、搭建主從服務器:

主:

image.png

從:

image.png

以後重啓,進行主從配置

主服務器創建複製帳號,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

image.png

從服務器配置

CHANGE MASTER TO

  MASTER_HOST='192.168.239.200',

  MASTER_USER='repluser',

  MASTER_PASSWORD='admini',

  MASTER_PORT=3306,

  MASTER_LOG_FILE='master-bin.000001',

  MASTER_LOG_POS=533;

測通後進入下一步

二、進一步配置

主服務器,進入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%';

image.png

從服務器,配置

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

SET GLOBAL rpl_semi_sync_slave_enabled=1;

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

image.png

三、驗證半同步

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

image.png

此時發現10秒返回了成功信息(這10秒的設置能夠本身設置爲3秒),此時再上線從服務器看數據是否同步

image.png

成功

四、此時咱們加入複製過濾,由於複製過濾時不建議在主服務器添加選項,所以咱們在從服務器上開始設置

咱們實驗有兩臺從服務器,此時從服務器一臺設置數據庫黑名單,一臺設置表黑名單

image.png

如今開始測試過濾,注意use切換到庫中執行命令

主服務器輸入語句

image.png

測試結果

image.png


後期若是有時間,將會補上SSL實驗和Cluster實驗

相關文章
相關標籤/搜索