绕开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