galera cluster数据备份

 能够用标准的数据库备份方法来备份cluster的节点数据。但这样的方法缺乏GTID,这种备份也没法把节点恢复到预约的状态。此外,一些备份程序运行时可能会阻断集群操做。联合GTID来备份须要另外的途径。mysql

状态快照转移做为备份
作一个完整的数据备份和经过state snapshot transfer作一个节点的备份是很是类似的。两种状况下,节点都使用相同的机制,来联合GTID和database状态来建立一个库内容的全备份。为启用此备份特性,须要一个脚原本实现想要的备份过程和galera仲裁者守护进程,触发的方式相似于快照转移
$ garbd --address gcomm://192.168.1.2?gmcast.listen_addr=tcp://0.0.0.0:4444 \  --group example_cluster --donor example_donor --sst backup
这条命令触发了供体节点来调用wsrep_sst_backup.sh脚本,这个脚本是mysqld进程经过PATH来找的。当供体节点到达no change are happening to the database的明确界定的点时,就会跑这个备份脚本,传递GTID给相应的当前库状态。
命令中,‘gmcast.listen_addr=tcp://0.0.0.0:4444‘是一个仲裁监听socket地址,用来与cluster通信的。 只需指定地址,0.0.0.0:4567是默认的
经过状态快照转移机制来调用buckups有如下几点好处:
一、节点能够在一个界定好的点来启动备份
二、节点把GTID和backup相关联
三、节点与cluster不一样步,避免作备份时影响带宽性能,备份进程更不会阻断节点
四、cluster知道那个节点正在执行备份,就不会选这个节点作另外一个节点的供体
脚本化的状态快照转移
当一个节点发送&接收一个状态快照转移(State Snapshot Transfer)时,是经过跑一个独立于database server的外部进程来管理它的。当你不知足于这些进程提供的默认操做时,galera cluster提供一个接口给用户shell 脚原本管理节点上的状态快照转移。
使用普通的SST脚本
Galera cluster包括一个普通脚本用于管理状态快照转移,你能够用它来做为建立本身脚本的基础起点。该脚本的文件名为wsrep_sst_common.sh。Linux下默认安装在/usr/bin。普通SST脚本提供解析参数列表、错误记录等的现成功能。而且没有对参数顺序和数量的约束,能够根据自身状况增长或忽略某些参数。
它假定只有在状态转移以后,接收节点的存储引擎初始化才进行。意味着它直接拷贝源数据内容到目的数据目录
状态转移脚本参数
当galera cluster启动一个外部进程作状态快照转移时,会传递一些参数来配置状态转移脚本
1.通用参数:这些参数全部的状态转移脚本都会用到,不管发送仍是接受节点
--role:区别donor或joiner
--address:joiner的IP地址,joiner能够用wsrep_sst_receive_address这个参数来配
--auth:权限信息,可经过wsrep_sst_auth参数来配
--datadir:脚本所需的数据目录来源于mysql_real_data_home这个参数
--defaults-file:my.cnf的路径
2.donor特有的参数:这些参数只被用于donor
--gtid:节点给出的GTID来自于state UUID和sequence number或seqno
--socket:若是须要,能够配置本地server的socket用于通讯
--bypass:节点用于甄别是否跳过实际数据的传输,只传递GTID,也就是说该节点是否应该启动增量状态传输
3.逻辑状态转移特有的参数:这些参数只被传递到发送和接收端的wsrep_sst_mysqldump.sh脚本中
--user:用来链接joiner和donor的数据库的用户,两边都应该一致,用wsrep_sst_auth参数来定义
--password:用来链接joiner和donor的数据库的用户,两边都应该一致,用wsrep_sst_auth参数来定义
--host:joiner的IP地址
--port:joiner的端口
--local-port:发送状态转移的端口
调用规则
receiver接收并应用transfer完成以后,会输出接受节点的标准GTID,退出脚本,返回状态0,说明状态转移成功
sende在完成传输后,会发送一个done\n的信号,当脚本收到这个信号以后,会返回0值退出
启动脚本化的SST
无论用默认的自带脚本,仍是本身写脚本,启动的过程都是同样的。文件名必须是wsrep_sst_<name>.sh。name是wsrep_sst_methord参数的值
相关文章
相关标签/搜索