构建双 VIP 的高可用 MySQL 集群
准备工作
-
安装 MySQL 数据库,选择适用于您操作系统的 MySQL 版本,并配置好相关的参数。可选使用 Percona Server 或 MariaDB 作为 MySQL 的替代品,二者均提供了更好的性能与可靠的特性。
-
安装 HAProxy,HAProxy 是一个开源的负载均衡器,它可以用来分发来自客户端的负载请求到多个数据库服务器集群上。
-
准备至少两个服务器,分别用于数据库主节点和备节点,并确保这些节点能够访问到同一网络中的存储设备。
-
使用 rsync 工具或其他同步工具来同步主节点和备节点的数据,以确保数据的一致性。
配置双 VIP 的高可用 MySQL 集群
步骤 1:配置主数据库节点
- 在主数据库节点中增加以下配置到
/etc/mysql/mysql.conf.d/mysqld.cnf
文件中。
#bind-address = 127.0.0.1
log_bin = /var/log/mysql/mysql-bin.log
server-id = 1
binlog_do_db = mydatabase
binlog_ignore_db = mysql
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M
-
启用二进制日志,并配置 MySQL 服务器的唯一标识符 server-id 以及要处理的数据库名称 binlog_do_db。
-
配置主节点的 VIP 地址和监听端口,例如:192.168.1.100 和 3306。
-
启用 MySQL 服务器。
sudo systemctl enable mysql
sudo systemctl start mysql
步骤 2:配置备份数据库节点
- 安装数据库。
sudo apt-get install mysql-server
-
同步主节点的数据到备份节点。
-
在备份节点中增加以下配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
。
server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
relay-log-index=/var/log/mysql/mysql-relay-bin.index
log_slave_updates=1
read_only=1
-
配置备份节点的 VIP 地址和监听端口,例如:192.168.1.101 和 3306。
-
启用 MySQL 服务器。
sudo systemctl enable mysql
sudo systemctl start mysql
步骤 3:配置 HAProxy 负载均衡器
- 安装 HAProxy。
sudo apt-get install haproxy
- 在 HAProxy 的配置文件
/etc/haproxy/haproxy.cfg
中增加以下内容。
listen mysql
bind 192.168.1.100:3306
option mysql-check user haproxy
balance roundrobin
mode tcp
server db01 192.168.1.100:3306 check
server db02 192.168.1.101:3306 check backup
-
其中:
-
bind:指定 VIP 地址和监听端口。
- option mysql-check:使用 MySQL 协议检查数据库实例的状态。
- mode tcp:使用 TCP 协议代理 MySQL 请求。
-
server:指定连接 MySQL 的主、备节点。
-
启用和重启 HAProxy 服务。
sudo systemctl enable haproxy
sudo systemctl start haproxy
示例 1:测试主节点正常工作
- 使用以下命令连接到 MySQL 数据库。
mysql -u root -h 192.168.1.100 -p
- 创建一个测试数据库和数据表。
CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE test_table (id INT, name VARCHAR(20));
INSERT INTO test_table VALUES (1, 'test1');
INSERT INTO test_table VALUES (2, 'test2');
- 退出数据库连接。
exit
示例 2:测试备节点正常工作
- 停止主节点数据库的服务。
sudo systemctl stop mysql
- 重新连接到 MySQL 数据库并查询之前创建的数据表。
mysql -u root -h 192.168.1.101 -p
USE mydatabase;
SELECT * FROM test_table;
-
确认备份节点能够正常工作并正常返回数据。
-
启动主节点数据库并使其重新加入 HAProxy 负载均衡器。
sudo systemctl start mysql
通过上述步骤以及示例,您可以将一个 MySQL 数据库集群构建成为了一个高可用、双 VIP 的服务。同时,这个过程也帮助您了解如何配置 HAProxy 以及如何使用比较小的 shell 脚本来同步主备节点之间的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:构建双vip的高可用MySQL集群 - Python技术站