1. 程式人生 > >MySQL 8.0.11 innodb cluster 運維管理手冊之三增加節點

MySQL 8.0.11 innodb cluster 運維管理手冊之三增加節點

全量備份 size images 主機 配置文件 如果 tex 頻繁 切換

MySQL 8.0.11 innodb cluster 運維管理手冊之三 增加節點

作者 方連超

假設
innodb cluster集群跑了1年,突然某個節點掛掉了,這個時候,日誌也已經沒有binlog.000001了,如果在線增加一個從庫呢,官方給出基於mysqlbackup
的恢復方式,在剩余從庫上做備份,在新從庫上恢復,這裏有些技術點,我忽略了,苦惱很久。

創建實驗環境:

  1. 頻繁操作數據寫入庫,切換四個binlog。flush logs , show binary logs
    技術分享圖片
    技術分享圖片

  2. 觀察從庫日誌時間信息
    從庫1的binlog 和 relay-log
    技術分享圖片

技術分享圖片

從庫2的binlog 和relay-log
技術分享圖片

技術分享圖片

可以看到,主庫切換日誌,從庫並不進行切換

  1. 清理掉第1,2個binglog,再寫入一些數據,
    PURGE MASTER LOGS TO ‘binlog.000003‘;

  2. 此時一個從庫掛掉了,重啟主機
  3. 主庫繼續人工寫入數據,發現從庫掛掉了,需要添加

步驟1 全量備份:

mysqlbackup --host=127.0.0.1 --port=3310 --user=backup --password=$$$$$$$$  --no-history-logging --backup-dir=/data/backup/fullbak   --with-timestamp backup-and-apply-log

--no-history-logging 因為 在從庫操作,不能寫備份信息到數據庫中

步驟2:拷貝到新從機恢復從庫

備份壓縮拷貝到從機,並解壓

scp [email protected]:/data/backup/fullbak/2018-07-25_14-32-32.tar.gz .
tar -xzvf 2018-07-25_14-32-32.tar.gz

拷貝活著的從庫的配置文件,修改組復制部分的信息

步驟3:繼續往主庫插入數據

步驟4:恢復新增實例

恢復從庫數據庫
mysqlbackup --defaults-file=/data/mysql_3310_test/conf/my.cnf --backup-dir=/data/backup/fullbak/2018-07-26_20-59-35 copy-back-and-apply-log

步驟5:清理舊信息

關閉日誌記錄:

set sql_log_bin=off;
use mysql
delete from slave_relay_log_info ;
delete from slave_master_info ;
set  sql_log_bin=on;

註意這裏不能執行
Reset master 和reset slave

Drop database mysql_innodb_cluster_metadata

重啟一次數據庫,應該沒有報錯了

步驟6 shell刪除和增加實例

強制刪除掛掉的實例
cluster.removeInstance(‘root@mysql4:3310‘,{force:1})

增加實例
cluster.addInstance(‘root@mysql4:3310‘)

踩坑記錄

組復制的增加成員方式和innodb cluster集群增加成員方式不同,

  • . 組復制 有reset master 和reset slave 操作,還包括了設置gtid的操作
    set @@GLOBAL.GTID_PURGED=‘80d2433f-8f24-11e8-a8df-000c29f1584d:123‘;

  • . Innodb cluster, 不能做 reset master ,因為記錄了備份庫執行到的gtid 值,
    應該使用 mysql shell 刪除和增加 實例

MySQL 8.0.11 innodb cluster 運維管理手冊之三增加節點