[实操]Mysql8 InnoDB引擎主从配置三节点操作流程
在发该文章之前,已有[保姆级]mysql8+Docker主从配置步骤这篇文章说明如何使用Mysql8+docker在Ubuntu 24.04下完成搭建环境,因此这方面不再赘述,可跳转至该文章查看详细搭建步骤,此文主要讲解如何实现Mysql InnoDB 主从配置三节点。
以下是基于Mysql8 InnoDB引擎的三节点主从配置操作流程,适用于 MySQL 8.0 及以上版本。
一、环境准备
- 三台服务器:确保有三台服务器(可以是物理机、虚拟机或 Docker 容器),分别作为主节点(master)和从节点(slave1、slave2)。
- 网络互通:确保三台服务器之间网络畅通,能够相互访问。
- MySQL 安装:在每台服务器上安装相同版本的 MySQL 8.0 或更高版本。
- 时间同步:配置三台服务器的时间同步,避免因时间差异导致的问题。
二、主节点(master)配置
-
编辑配置文件:找到 MySQL 的配置文件(通常是
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
),添加以下内容:[mysqld] server-id=101 log_bin=mysql-bin binlog_format=row expire_logs_days=7 max_connections=200
server-id
:设置唯一的服务器 ID,在整个复制环境中必须唯一。log_bin
:启用二进制日志,并指定日志文件的前缀。binlog_format
:设置二进制日志的格式为row
,表示以行级别记录变更。expire_logs_days
:设置二进制日志的自动删除天数。max_connections
:设置最大连接数。
-
重启 MySQL 服务:保存配置文件后,重启 MySQL 服务以应用更改:
sudo systemctl restart mysql
-
创建复制用户:登录 MySQL,执行以下命令创建一个用于复制的用户并授予权限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'YourReplicationPassword'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
'repl'
:复制用户的用户名。'YourReplicationPassword'
:复制用户的密码。
-
记录二进制日志位置:执行以下命令查看当前二进制日志文件名和位置,稍后从节点配置会用到:
SHOW MASTER STATUS;
输出示例:
+------------------+----------+ | File | Position | +------------------+----------+ | mysql-bin.000001 | 154 | +------------------+----------+
三、从节点(slave1、slave2)配置
-
编辑配置文件:同样找到每个从节点的 MySQL 配置文件,添加以下内容:
[mysqld] server-id=102 log_bin=mysql-bin binlog_format=row read_only=ON
- 对于第二个从节点(slave2),将
server-id
设置为103
,其他配置相同。
- 对于第二个从节点(slave2),将
-
重启 MySQL 服务:保存配置文件后,重启 MySQL 服务。
-
配置复制连接:登录每个从节点的 MySQL,执行以下命令配置复制连接:
CHANGE REPLICATION SOURCE TO SOURCE_HOST='master_ip', SOURCE_USER='repl', SOURCE_PASSWORD='YourReplicationPassword', SOURCE_LOG_FILE='mysql-bin.000001', SOURCE_LOG_POS=154;
SOURCE_HOST
:主节点的 IP 地址。SOURCE_USER
、SOURCE_PASSWORD
:之前创建的复制用户名和密码。SOURCE_LOG_FILE
、SOURCE_LOG_POS
:从主节点获取的二进制日志文件名和位置。
-
启动复制:执行以下命令启动复制进程:
START REPLICA;
-
验证复制状态:执行以下命令检查复制状态:
SHOW REPLICA STATUS\G;
确保
Replica_IO_Running
和Replica_SQL_Running
都为Yes
,表示复制正常。
四、测试主从复制
-
在主节点插入数据:在主节点的数据库中插入一些测试数据,例如:
CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); INSERT INTO testtable (name) VALUES ('test');
-
检查从节点数据:在每个从节点的数据库中检查是否成功复制了主节点的数据:
USE testdb; SELECT * FROM testtable;
如果数据一致,说明主从复制配置成功。
五、监控与维护
- 定期检查复制状态:定期在每个从节点上执行
SHOW REPLICA STATUS\G;
,确保复制持续正常运行。 - 监控性能:使用 MySQL 的性能监控工具(如
mysqladmin
、SHOW STATUS
等)监控主从节点的性能,及时发现并解决潜在问题。 - 备份与恢复:定期备份主节点的数据,并测试从节点的恢复能力,以应对可能出现的故障。
通过以上步骤,可以成功配置一个基于 MySQL InnoDB 的三节点主从复制环境,实现数据的高可用性和可靠性。
有疏漏或不足之处,欢迎各位看官随时拍砖。