Galera

出自 ArchWiki

Galera 是用于 MySQL/InnoDB 数据库的同步多主集群。

注意: 目前仅 InnoDB 表支持复制。

安装

Galera 集群由两个组件组成:Galera 插件本身和一个使用 wsrep API 连接的 MySQL 服务器修补版本。

安装 galera 软件包。你还需要 rsynclsof 软件包用于 rsync 方法。

启动/启用 mysqld.service 守护进程。

配置

你需要配置集群。

在每个节点上编辑 /etc/my.cnf.d/server.cnf 并更新 wsrep_cluster_address 变量,使其包含集群中所有节点的列表

/etc/my.cnf.d/server.cnf
wsrep_cluster_address="gcomm://192.168.1.4,192.168.1.5,192.168.1.6"

更改变量 wsrep_node_addresswsrep_node_name 为每个节点的 IP 地址/主机名和名称(这不需要是唯一的),例如

/etc/my.cnf.d/server.cnf
wsrep_node_address='192.168.1.4'
wsrep_node_name='node1'

wsrep_cluster_name 变量应包含所有集群节点相同的名称

/etc/my.cnf.d/server.cnf
wsrep_cluster_name='my_galera_cluster'

此外,将 wsrep_sst_method 设置为所需的状态快照传输方法,首选方法是 rsync。

/etc/my.cnf.d/server.cnf
wsrep_sst_method=rsync

确保您还设置了以下选项

/etc/my.cnf.d/server.cnf
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
binlog_format=row

完成 /etc/my.cnf.d/server.cnf 后,在第一个节点上引导 mysqld 服务(仅在第一个节点上)

# galera_new_cluster

这将引导集群。使用 MySQL 的命令行工具以 root 身份登录到您的 MySQL 服务器

$ mysql -p -u root

检查集群的状态,这将显示与 wsrep 相关的状态变量

mysql> SHOW STATUS LIKE 'wsrep_%';
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
| wsrep_cert_index_size      | 0                                    |
| wsrep_causal_reads         | 0                                    |
| wsrep_incoming_addresses   | 192.168.1.4:3306                     |
| wsrep_cluster_conf_id      | 1                                    |
| wsrep_cluster_size         | 1                                    |
| wsrep_cluster_state_uuid   | 6cd96745-2ea8-11e3-bbc8-d666651b51ef |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            | ON                                   |
| wsrep_local_index          | 0                                    |
| wsrep_provider_name        | Galera                               |

如果您使用 xtrabackup 或 mysqldump SST 方法,您将需要为 sst 传输创建一个 MySQL 用户。

配置第一个节点后,您应该能够启动 mysqld.service

参见