说明:本文及其系列文章由作者翻译自Galera Cluster官方文档,若有不当之处,麻烦联系作者处理,邮箱:875366361@qq.com。转摘请注明。
PS:在情人节到来之际,仅以此翻译系列文章献给我的女票蚊子,感谢将近6个年头以来你对我的不离不弃,你使我更好!
PS:在情人节到来之际,仅以此翻译系列文章献给我的女票蚊子,感谢将近6个年头以来你对我的不离不弃,你使我更好!
Galera集群是一个同步多主数据库集群,基于同步复制和Oracle的MySQL/InnoDB。 当Galera集群在使用时,你可以直接往任一节点读取和写入,并且你可以不中断集群去丢弃任何单个节点,而无需处理复杂的故障转移过程。
在更高层面上,Galera集群由一个数据库服务器(即MySQL或MariaDB)组成,然后使用Galera复制插件来管理复制。更具体地说,MySQL复制插件API已经被扩展支持提供真正的多主同步复制所需的所有信息和接口。此扩展API称为写集(Write-Set)复制API或wsrep API。通过wsrep API,Galera集群提供基于认证的复制。复制事务(写入事务)不仅包含要复制的数据库行,而且还包括有关事务期间数据库持有的所有锁的信息。然后,每个节点验证紧靠在应用队列中其他写集的待复制的写集。如果没有冲突锁,则写集被应用写入节点。此时,事务被认为已提交,之后每个节点将提交数据到表空间。这种方法也称为虚拟同步复制,假定它在逻辑上是同步的,实际写入和提交到表空间是独立发生的,因此在每个节点上是异步的。
Galera集群的优势
Galera集群为MySQL生态系统在高可用性(HA)方面提供了显著改进。 仅通过Galera提供的一些功能就能实现MySQL的高可用性,为高可用性解决方案提供应用模式。
Galera集群提供以下功能:
1.真正的多主模式,可以往任意节点任意时间读和写入。
2.异步复制没有从库延迟,在节点崩溃时没有数据丢失。
3.紧耦合所有节点保持相同的状态。 节点之间不允许分散数据。
4.多线程复制提供更好的性能和更多的负载 。
5.无主从故障切换操作,使用不受限制。
6.备用在故障转移期间不用停机(因为没有故障转移)。
7.自动节点配置,无需手动备份数据库并将其复制到新节点。
8.支持InnoDB。
9.对应用程序透明,无须(或最小的)更改应用程序。
10.不需要读写分离。
2.异步复制没有从库延迟,在节点崩溃时没有数据丢失。
3.紧耦合所有节点保持相同的状态。 节点之间不允许分散数据。
4.多线程复制提供更好的性能和更多的负载 。
5.无主从故障切换操作,使用不受限制。
6.备用在故障转移期间不用停机(因为没有故障转移)。
7.自动节点配置,无需手动备份数据库并将其复制到新节点。
8.支持InnoDB。
9.对应用程序透明,无须(或最小的)更改应用程序。
10.不需要读写分离。
这是一个高可用性解决方案,在数据完整性和高性能与即时故障转移方面都是稳健的。
Galera集群的云实施
Galera Cluster的另一个好处是良好的云支持。 自动节点设置使得弹性向外扩展和伸缩操作没有痛点。 Galera集群已经被证明在云中表现非常出色,例如,当使用多个小节点时,可以跨越多个数据中心 - 例如AWS区域 - 甚至是广域网。
目录
入门
节点初始化
安装
系统配置
复制配置
集群初始化
启动集群
测试集群
重启集群
技术说明
数据库复制
主库和从库
异步和同步复制
解决同步复制中的问题
基于证书的复制
需要什么基于证书的复制
基于证书的复制如何工作
Galera集群中基于认证的复制
复制API
wsrep API
Galera复制插件
组通信插件
隔离级别
Galera集群中的节点间隔离
了解隔离级别
状态转移
状态快照传输(SST)
增量状态转移(IST)
流控制
流控制如何工作
了解节点状态
节点状态中的更改
节点故障和恢复
检测单节点故障
集群可用性与分区容差
从单节点故障恢复
权重
权重
权重计算
权重计算例子
配置
节点配置
节点如何加入集群
状态转移
状态快照传输
逻辑状态快照
物理状态快照
恢复主组件
了解主组件状态
修改保存的主组件状态
重置权重
查找优先级最高节点
重置权重
管理流控制
监控流控制
配置流控制
自动收回
配置自动收回
检查收回状态
从以前的版本升级
模式升级
总顺序隔离
滚动架构升级
升级Galera集群
滚动升级
批量升级
仅供应商升级
可编写脚本的状态快照传输
使用常用SST脚本
状态传输脚本参数
调用约定
启用可编写脚本的SST
Galera仲裁员
启动Galera仲裁器
备份集群数据
状态快照传输作为备份
部署
集群部署变式
没有集群
整堆栈聚类
数据层聚类
聚合堆叠集群
负载均衡
HAProxy
Pen
Galera负载平衡器
容器部署
使用Docker
使用Jails
监控
监控集群状态
检查集群完整性
检查节点状态
检查复制运行状况
检测慢网络问题
数据库服务器日志
日志参数
其他日志文件
通知命令
通知命令参数
示例通知脚本
启用通知命令
安全
防火墙设置
使用iptables进行防火墙配置
使用FirewallD进行防火墙配置
使用PF的防火墙配置
SSL设置
SSL证书
SSL配置
状态快照传输的SSL
SELinux配置
生成SELinux策略
迁移
与独立MySQL服务器的区别
服务器差异
表配置中的差异
事务的差异
迁移到Galera集群
升级系统表
从MySQL迁移到Galera Cluster
支持
故障排除
经常问的问题
服务器错误日志
未知命令错误
用户更改不复制
集群在ALTER上停止
检测慢节点
处理多主机冲突
双节点集群
示例
性能
配置提示
参考
MySQL wsrep选项
Galera参数
在MySQL中设置Galera的参数
Galera状态变量
XtraBackup参数
Galera负载平衡器参数
配置参数
配置选项
版本控制信息
版本号
Galera集群的第三方实现
节点初始化
安装
系统配置
复制配置
集群初始化
启动集群
测试集群
重启集群
技术说明
数据库复制
主库和从库
异步和同步复制
解决同步复制中的问题
基于证书的复制
需要什么基于证书的复制
基于证书的复制如何工作
Galera集群中基于认证的复制
复制API
wsrep API
Galera复制插件
组通信插件
隔离级别
Galera集群中的节点间隔离
了解隔离级别
状态转移
状态快照传输(SST)
增量状态转移(IST)
流控制
流控制如何工作
了解节点状态
节点状态中的更改
节点故障和恢复
检测单节点故障
集群可用性与分区容差
从单节点故障恢复
权重
权重
权重计算
权重计算例子
配置
节点配置
节点如何加入集群
状态转移
状态快照传输
逻辑状态快照
物理状态快照
恢复主组件
了解主组件状态
修改保存的主组件状态
重置权重
查找优先级最高节点
重置权重
管理流控制
监控流控制
配置流控制
自动收回
配置自动收回
检查收回状态
从以前的版本升级
模式升级
总顺序隔离
滚动架构升级
升级Galera集群
滚动升级
批量升级
仅供应商升级
可编写脚本的状态快照传输
使用常用SST脚本
状态传输脚本参数
调用约定
启用可编写脚本的SST
Galera仲裁员
启动Galera仲裁器
备份集群数据
状态快照传输作为备份
部署
集群部署变式
没有集群
整堆栈聚类
数据层聚类
聚合堆叠集群
负载均衡
HAProxy
Pen
Galera负载平衡器
容器部署
使用Docker
使用Jails
监控
监控集群状态
检查集群完整性
检查节点状态
检查复制运行状况
检测慢网络问题
数据库服务器日志
日志参数
其他日志文件
通知命令
通知命令参数
示例通知脚本
启用通知命令
安全
防火墙设置
使用iptables进行防火墙配置
使用FirewallD进行防火墙配置
使用PF的防火墙配置
SSL设置
SSL证书
SSL配置
状态快照传输的SSL
SELinux配置
生成SELinux策略
迁移
与独立MySQL服务器的区别
服务器差异
表配置中的差异
事务的差异
迁移到Galera集群
升级系统表
从MySQL迁移到Galera Cluster
支持
故障排除
经常问的问题
服务器错误日志
未知命令错误
用户更改不复制
集群在ALTER上停止
检测慢节点
处理多主机冲突
双节点集群
示例
性能
配置提示
参考
MySQL wsrep选项
Galera参数
在MySQL中设置Galera的参数
Galera状态变量
XtraBackup参数
Galera负载平衡器参数
配置参数
配置选项
版本控制信息
版本号
Galera集群的第三方实现