在Linux上部署高可用的MySQL集群可以通过多种方式实现,以下是两种常见的方法:使用MySQL Group Replication和使用Galera Cluster。
MySQL Group Replication是MySQL 5.7及以上版本提供的一种基于组复制的高可用解决方案。以下是基本步骤:
准备环境:
配置MySQL:
在每台服务器上编辑my.cnf或my.ini文件,添加以下配置:
[mysqld]
server_id=1 # 每台服务器的唯一ID
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
transaction_write_set_extraction=XXHASH64
loose-group_replication_bootstrap_group=OFF # 仅在第一台服务器上设置为ON
loose-group_replication_start_on_boot=OFF
loose-group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeee" # 全局唯一的组名
loose-group_replication_local_address="192.168.1.1:33061" # 每台服务器的地址和端口
loose-group_replication_group_seeds="192.168.1.1:33061,192.168.1.2:33061,192.168.1.3:33061" # 所有服务器的地址和端口
loose-group_replication_single_primary_mode=ON # 单主模式
loose-group_replication_enforce_update_everywhere_checks=ON
在第一台服务器上,将loose-group_replication_bootstrap_group设置为ON,然后重启MySQL服务:
systemctl restart mysql
在其他服务器上,将loose-group_replication_bootstrap_group设置为OFF,然后重启MySQL服务:
systemctl restart mysql
验证集群状态:
登录到任意一台服务器,使用以下命令检查集群状态:
SELECT * FROM performance_schema.replication_group_members;
Galera Cluster是一个开源的高可用性和高性能的MySQL集群解决方案。以下是基本步骤:
准备环境:
配置MySQL:
在每台服务器上编辑my.cnf或my.ini文件,添加以下配置:
[mysqld]
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1.1,192.168.1.2,192.168.1.3
wsrep_cluster_name="GaleraCluster"
wsrep_node_address=192.168.1.1
wsrep_node_name="Node1"
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=user:password
wsrep_sst_receive_address=192.168.1.1
wsrep_sst_port=4567
wsrep_provider_options="pc.bootstrap=1 pc.ignore_sb=1"
在第一台服务器上,将pc.bootstrap设置为1,然后重启MySQL服务:
systemctl restart mysql
在其他服务器上,将pc.bootstrap设置为0,然后重启MySQL服务:
systemctl restart mysql
验证集群状态:
登录到任意一台服务器,使用以下命令检查集群状态:
SHOW STATUS LIKE 'wsrep%';
通过以上步骤,你可以在Linux上部署一个高可用的MySQL集群。根据具体需求选择合适的方案,并进行相应的配置和优化。