手把手教你如何搭建MySQL三主集群(mysql三主集群搭建)
手把手教你:如何搭建MySQL三主集群
MySQL是一个流行的开源数据库管理系统,广泛应用于各种企业应用程序中。但是,对于大型企业来说,单节点MySQL往往无法满足性能和可靠性的要求。这时候,搭建MySQL集群就成为必然选择之一。本文将介绍如何搭建MySQL三主集群,以满足企业级应用的要求。
步骤一:准备MySQL三主集群的环境
1. 安装MySQL:在每个物理服务器上安装MySQL
2. 确认三个MySQL实例都连接到同一个局域网,可以直接通信
3. 确定全部的MySQL实例的设置均相同,只有一个实例需要做修改
步骤二:启动MySQL实例
所有MySQL实例都应该被启动。当有实例崩溃或者强制关闭时,其他实例仍然能够正常工作,于是就可以确保业务连续性。
MySQL服务可以通过如下命令启动:
systemctl start mysqld
步骤三:创建用户账号并分配权限
使用超级管理员(root)账号登录MySQL,然后创建一个新用户,分配所有集群节点的root用户的所有权限,如下:
mysql> CREATE USER ‘cluster_root_user’@’%’ IDENTIFIED BY ‘password’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘cluster_root_user’@’%’;
步骤四:创建复制账号并分配权限
在所有节点的MySQL中,如下创建一个专门的需要复制的账号来进行数据同步:
mysql> CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘password’;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
步骤五:配置主库
在主数据库节点的MySQL配置文件my.cnf中增加如下配置项:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db1
binlog_do_db = db2
binlog_do_db = db3
这些配置项包括:
1. server-id:每个节点必须有一个唯一的server-id,1为最好的起点;
2. log_bin:使用binlog进行同步的话,则要记录日志;
3. binlog_do_db:All的代替语句,主要过滤掉一些数据;
步骤六:获取主库状态
启动主库后, 执行如下SQL命令,获取主库的状态:
mysql> SHOW MASTER STATUS;
输出如下:
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | mysql | |
+——————+———-+————–+——————+
需要关注的主要是File和Position两个字段的值。
步骤七:配置从库
在从数据库节点的my.cnf文件中增加如下配置项:
server-id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index = /var/lib/mysql/mysql-relay-bin.index
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db1
binlog_do_db = db2
binlog_do_db = db3
这些配置项包括:
1. server-id:每个节点必须有一个唯一的server-id,此处设为2;
2. relay_log:中转文件,记录主库的binlog日志,从库重新生成并执行;
3. relay_log_index:relay日志索引;
在MySQL中设置从库的同步过程:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_ip’,
-> MASTER_PORT=3306,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’password’,
-> MASTER_LOG_FILE=’mysql-bin.000001′,
-> MASTER_LOG_POS=107;
mysql> START SLAVE;
步骤八:验证从库状态
执行如下两个命令,检查从服务器是否正确连接到主服务器:
mysql> SHOW SLAVE STATUS\G
mysql> SELECT * FROM employees LIMIT 10;
其中,SHOW SLAVE STATUS\G将会返回当前从服务器的状态,可以查看是否有错误。另一个命令可以帮助验证是否从主服务器复制了数据。
步骤九:添加更多的从库
使用相同的步骤,可将更多的从数据库节点添加到集群中。
至此,MySQL三主集群已经搭建成功。大家可以进行测试,看看是否可以实现数据同步功能。不过需要注意的是,在实际情况下,还需要额外考虑如负载均衡和数据备份等问题,以确保集群系统的高可用性和可靠性。
附:相关代码
—————————–在主服务器上的操作—————————–
CREATE USER ‘cluster_root_user’@’%’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON *.* TO ‘cluster_root_user’@’%’;
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘password’;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
# 修改my.cnf文件的配置,让从服务器通过网络连接到主服务器
# 在my.cnf文件末尾增加以下设置:
server-id=1
log_bin=/var/log/mysql-bin.log
binlog_do_db=db1
binlog_do_db=db2
binlog_do_db=db3
# 保存后重启MySQL使设置生效
systemctl restart mysqld
# 查看主服务器状态
mysql> SHOW MASTER STATUS;
—————————–在从服务器上的操作—————————–
# 修改my.cnf文件的配置,让从服务器通过网络连接到主服务器
# 在my.cnf文件末尾增加以下设置:
server-id=2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index = /var/lib/mysql/mysql-relay-bin.index
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db=db1
binlog_do_db=db2
binlog_do_db=db3
# 保存后重启MySQL使设置生效
systemctl restart mysqld
# 在MySQL中设置从服务器
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_ip’,
-> MASTER_PORT=3306,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’password’,
-> MASTER_LOG_FILE=’mysql-bin.000001′,
-> MASTER_LOG_POS=107;
mysql> START SLAVE;
# 验证从服务器状态
mysql> SHOW SLAVE STATUS\G
mysql> SELECT * FROM employees LIMIT 10;