繞開SST通過IST方式添加Node到Percona XtraDB Cluster
繞開SST通過IST方式添加Node到Percona XtraDB Cluster
Gcache存儲了所有的 writeset ,因此說這個集合的大小直接決定了允許其他節點宕機後多長時間內可以進行ist 同步。
對於大庫,高並發環境建議通過備份+binlog建立大的DB節點,減少生產庫抖動。
計算Gcache尺寸
show global status like ‘wsrep_received_bytes‘;
show global status like ‘wsrep_replicated_bytes‘;
select sleep(60);
show global status like ‘wsrep_received_bytes‘;
show global status like ‘wsrep_replicated_bytes‘;
| wsrep_received_bytes | 83976571 |
| wsrep_replicated_bytes | 0 |
[...]
| wsrep_received_bytes | 90576957 |
| wsrep_replicated_bytes | 800 |
每分鐘數據寫入:
(second wsrep_received_bytes – first wsrep_received_bytes) + (second wsrep_replicated_bytes – first wsrep_replicated_bytes)
(90576957 – 83976571) + (800 – 0) = 6601186 bytes or 6 MB per minute.
每小時數據寫入:
6MB * 60 minutes = 360 MB per hour of writesets received by the cluster.
默認是128M,適當調大gcache可以減少SST情況的發生,因為gcache是內存映射文件,因此會占用內存,建議設置16G
服務器
premysql24103 10.2.24.103 節點1 主寫
premysql24102 10.2.24.102 節點2
premysql24101 10.2.24.101 新加入pxc節點
1.在premysql24103用innobackupex 加--galera-info做完整備份,並且拷貝到premysql24101
備份命令 innobackupex --user=root --password=111111 --defaults-file=/etc/my.cnf --socket=/data/mysql/mysql.sock --galera-info --no-timestamp --stream=tar /data/mysql_bak 2>/data/mysql_bak/innobak.log | gzip 1>/data/mysql_bak/newpre_mysql_full_20151027.tar.gz
2.在premysql24101還原完整備份
並且查看新節點當前的事務號
命令/usr/local/mysql56cluster/bin/mysqld_safe --wsrep-recover
3.在premysql24103和premysql24102查看每個節點的gcache中保存的最小事務號。
執行show global status like ‘wsrep_local_cached_downto‘;
確定節點1節點2在gcache中的事務號包含新節點的事務號,也就是節點1節點2在gcache中的事務號小於新節點的事務號。
4.如果premysql24103的事物號小於新節點
則從premysql24103 數據目錄拷貝grastate.dat 到 premysql24101數據目錄
查看premysql24101服務器的xtrabackup_galera_info文件確定事物號
修改premysql24101 的grastate.dat 文件的seqno: 事務號,
並且chown mysql:mysql grastate.dat 。
啟動premysql24101
/etc/init.d/mysqld_3306 start --wsrep_sst_donor=10.2.24.103
繞開SST通過IST方式添加Node到Percona XtraDB Cluster