一、一主一從

用兩台裝置實作,現都是資料庫初始狀态,開始設定一主一從
1、配置主節點
(1)修改配置檔案啟用,必要設定:log_bin和server_id=1,設定好後重新開機
此時二進制日志pos點是
(2)建立有複制權限的使用者賬号
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.239.%' IDENTIFIED BY 'admini';
(3)添加一個資料庫,再看二進制日志的pos點
(4)關閉防火牆
2、配置從節點
(1)必要設定:server_id=2,如果隻做從伺服器配置不用寫log_bin
(2)重新開機服務,并關閉防火牆
(3)在從節點上啟動複制線程
輸入一段代碼,這段隻要記住會運用help change指令就行
第一次輸入後
再次輸入help CHANGE MASTER TO,可以看到
将這段進行複制修改
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;
(3)完成後start slave,可以用show slave status\G檢視狀态
3、測試
二、級聯複制
如果級聯複制伺服器資料庫内容同步差很多,建議主伺服器備份後,以還原方法給從伺服器還原
主伺服器操作:
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、主伺服器配置
不變,和上個實驗一樣
看下自己的二進制日志,show master logs
建立複制使用者賬号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'
關閉防火牆
2、配置中間的從伺服器,級聯關鍵伺服器配置
關閉防火牆,然後進入資料庫後和主伺服器建立主從連接配接,輸入指令help change master to
複制修改
MASTER_LOG_POS=460;
3、show slave status\G檢查輸入資訊是否正确
如果正常,start slave開始連接配接,連接配接之後show slave status\G
測試,主伺服器加載了個資料庫,從伺服器也看到了
此時檢視二進制日志檔案
4、配置末尾的從伺服器
這裡也是如果資料相差太多,還是建議用還原方法和前面的伺服器同步
關閉防火牆重新開機資料庫服務,進入資料庫
MASTER_HOST='192.168.239.71',
MASTER_LOG_FILE='centos7-1-bin.000001',
MASTER_LOG_POS=9083;
5、老規矩,确認從伺服器連接配接資訊
确認後start slave;再次檢視slave狀态
6、測試,成功
三、半同步複制
半同步複制實作:一主多從,如果至少一個從伺服器同步成功,主伺服器将會向用戶端傳回成功資訊;或者所有從伺服器長時間沒有同步,超過了限定時長,主伺服器也将會向用戶端傳回成功資訊
1、搭建主從伺服器:
主:
從:
之後重新開機,進行主從配置
主伺服器建立複制賬号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'
從伺服器配置
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%';
從伺服器,配置
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled=1;
輸入後還需要stop slave; start slave;
3、驗證半同步
驗證方法:主伺服器執行指令前或者執行時,半同步伺服器down掉,等主伺服器傳回後再上線半同步伺服器,看資料是否寫入半同步
此時發現10秒傳回了成功資訊(這10秒的設定可以自己設定為3秒),此時再上線從伺服器看資料是否同步
成功
4、此時我們加入複制過濾,因為複制過濾時不建議在主伺服器添加選項,是以我們在從伺服器上開始設定
我們實驗有兩台從伺服器,此時從伺服器一台設定資料庫黑名單,一台設定表黑名單
現在開始測試過濾,注意use切換到庫中執行指令
主伺服器輸入語句
測試結果
後期如果有時間,将會補上SSL實驗和Cluster實驗