mysql MGR集群部署 发表于 2026-05-24 | 更新于 2026-08-24
| 浏览量:
在 192.168.50.231、192.168.50.232、192.168.50.233 三台数据库节点上配置。
⚠️ 唯一需要修改的参数:
node1 (231) : server-id = 1
node2 (232) : server-id = 2
node3 (233) : server-id = 3
将以下内容覆盖写入 /etc/my.cnf:
[mysqld] server-id = 1 port = 3306 datadir = /var/lib/mysqlsocket = /var/lib/mysql/mysql.sockcharacter-set-server = utf8mb4collation-server = utf8mb4_0900_ ai_ciskip-name-resolve max_connections = 1000 max_connect_errors = 100000 wait_timeout = 7200 interactive_timeout = 7200 innodb_buffer_pool_size = 2 Ginnodb_buffer_pool_instances = 2 innodb_redo_log_capacity = 1 Ginnodb_flush_log_at_trx_commit = 1 innodb_io_capacity = 2000 innodb_io_capacity_max = 4000 innodb_file_per_table = 1 log_bin = binlogbinlog_format = ROWbinlog_row_image = FULLgtid_mode = ON enforce_gtid_consistency = ON sync_binlog = 1 binlog_expire_logs_seconds = 604800 sql_require_primary_key = ON transaction_write_set_extraction = XXHASH64slave_preserve_commit_order = 1 slave_parallel_type = LOGICAL_CLOCKslave_parallel_workers = 4 [client] default-character-set = utf8mb4
阶段二:环境初始化与密码设置 请在 三个数据节点(231, 232, 233) 依次执行以下 Shell 脚本。此脚本包含防火墙放行、安装、启动以及自动化修改初始密码。
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --permanent --add-port=33061/tcp firewall-cmd --reload yum install -y mysql-server mysql-shell systemctl start mysqld systemctl enable mysqld TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' ) mysql -u root -p"$TEMP_PASS " --connect-expired-password -e " ALTER USER 'root'@'localhost' IDENTIFIED BY 'Passwd@123!'; CREATE USER 'root'@'192.168.50.%' IDENTIFIED BY 'Passwd@123!'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.50.%' WITH GRANT OPTION; FLUSH PRIVILEGES; "
阶段三:组建 InnoDB Cluster 接下来的操作通过 MySQL Shell 完成,利用官方工具自动化处理底层的复制拓扑和 GTID 事务。
1. 检查并配置实例 (在 231, 232, 233 三台机器上各执行一次): 此命令会让 MySQL Shell 自动修复不符合 MGR 要求的动态参数。
mysqlsh -u root -p'Passwd@123!' -h localhost -e "dba.configureInstance('root@localhost:3306', {password: 'Passwd@123!', clearReadOnly: true, interactive: false})"
(注:执行后如果提示有参数修改,建议在三台机器上都执行一次 systemctl restart mysqld 确保配置生效)
2. 创建集群 (仅在 Node1 192.168.50.231 上执行): 登录 MySQL Shell:
mysqlsh -u root -p'Passwd@123!' -h 192.168.50.231
在 Shell 的 JS > 提示符下执行:
var cluster = dba.createCluster ('ProdCluster' );
3. 加入节点 (继续在 Node1 192.168.50.231 的 MySQL Shell 中执行):
cluster.addInstance ('root@192.168.50.232:3306' , {password : 'Passwd@123!' , recoveryMethod : 'clone' }); cluster.addInstance ('root@192.168.50.233:3306' , {password : 'Passwd@123!' , recoveryMethod : 'clone' }); cluster.status ();
第四阶段:部署 MySQL Router 路由层 请在应用接入服务器 192.168.50.235 上执行。
yum install -y mysql-router mysqlrouter --bootstrap root@192.168.50.231:3306 --user=mysqlrouter systemctl start mysqlrouter systemctl enable mysqlrouter
接入验证: 您的应用程序配置数据库连接时,直接指向 Router 服务器即可:
业务写库 / 强一致性读: 192.168.50.235:6446
业务纯读库 (负载均衡): 192.168.50.235:6447