wsrep 是 Galera 复制的核心组件,它负责数据的一致性和同步,要配置 MariaDB Galera Cluster,必须在每个节点上进行相应的 wsrep 配置。这些参数在配置文件(如 my.cnf 或 50-server.cnf)中定义,并在每个节点的 MariaDB 实例中进行设置。确保所有节点在配置中使用相同的集群名称和地址,以保证它们能够正确地发现和连接到集群中的其他节点。
1. wsrep_on
说明:启用或禁用 Galera 复制。通常在集群中应该始终启用。
默认值:ON
配置示例:wsrep_on = ON
2. wsrep_provider
说明:指定 Galera 提供者的共享库文件路径。Galera 提供者是实现多主复制的核心组件。
默认值:/usr/lib/galera/libgalera_smm.so(路径可能因安装方式和操作系统不同而异)
配置示例:wsrep_provider = /usr/lib/galera/libgalera_smm.so
3. wsrep_cluster_name
说明:定义集群的名称。所有节点必须使用相同的集群名称,以确保它们属于同一个集群。
配置示例:wsrep_cluster_name = my_cluster
4. wsrep_cluster_address
说明:指定集群中的其他节点地址,用于节点之间的发现和通信。使用 gcomm:// 前缀来表示集群通信协议。
配置示例:wsrep_cluster_address = gcomm://node1,node2,node3
5. wsrep_node_name
说明:为当前节点指定一个唯一名称。节点名称用于标识和跟踪集群中的每个节点。
配置示例:wsrep_node_name = node1
6. wsrep_node_address
说明:指定当前节点的 IP 地址或主机名。此地址用于其他节点在集群中查找和连接该节点。
配置示例:wsrep_node_address = 192.168.1.1
7. wsrep_sst_method
说明:指定用于 State Snapshot Transfer (SST) 的方法。SST 用于在节点加入集群时同步数据。
常见值:
rsync:使用 rsync 工具进行数据同步。
mysqldump:使用 mysqldump 工具导出和导入数据。
xtrabackup-v2:使用 Percona XtraBackup 工具进行热备份(适合大型数据库)。
xtrabackup-v3:XtraBackup 的更高版本。
配置示例:wsrep_sst_method = xtrabackup-v2
8. wsrep_sst_auth
说明:指定 SST 过程中用于认证的用户名和密码。必须在集群中的每个节点上都设置相同的凭据。
配置示例:wsrep_sst_auth = sstuser:password
9. wsrep_drupal_compatibility
说明:用于启用对 Drupal 的兼容性支持。通常不需要更改,除非你的应用程序需要它。
默认值:OFF
配置示例:wsrep_drupal_compatibility = OFF
10. wsrep_sync_wait
说明:设置事务的同步等待时间。在有冲突时,事务可能需要等待其他节点同步数据。单位为秒。
默认值:0(即不等待)
配置示例:wsrep_sync_wait = 0
11. wsrep_provider_options
说明:指定 Galera 提供者的额外配置选项。可以包含多个选项,使用分号 ; 分隔。
常见选项:
gcache.size:设置 Galera 缓存大小(例如 gcache.size=512M)。
gcache.recover:启用或禁用缓存恢复(例如 gcache.recover=true)。
配置示例:wsrep_provider_options = “gcache.size=512M; gcache.recover=true”
12. wsrep_retry_autocommit
说明:设置是否在自动提交事务时发生冲突时重试事务。通常设置为 ON。
默认值:ON
配置示例:wsrep_retry_autocommit = ON
13. wsrep_max_ws_rows
说明:事务中允许的最大行数。用于限制每个事务涉及的行数,以避免性能问题。
默认值:0(无限制)
配置示例:wsrep_max_ws_rows = 1000
14. wsrep_max_ws_size
说明:事务中允许的最大数据大小(以字节为单位)。用于限制每个事务的数据量。
默认值:0(无限制)
配置示例:wsrep_max_ws_size = 2M
配置文件示例
假设你的集群包含三个节点,以下是一个可能的配置示例:
[mysqld]
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = my_cluster
wsrep_cluster_address = gcomm://192.168.1.1,192.168.1.2,192.168.1.3
wsrep_node_name = node1
wsrep_node_address = 192.168.1.1
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:password
wsrep_drupal_compatibility = OFF
wsrep_sync_wait = 0
wsrep_provider_options = "gcache.size=512M; gcache.recover=true"
wsrep_retry_autocommit = ON
wsrep_max_ws_rows = 1000
wsrep_max_ws_size = 2M
确保在每个节点的配置文件中设置正确的 wsrep_node_name 和 wsrep_node_address,并且所有节点都使用相同的 wsrep_cluster_name 和 wsrep_cluster_address。