1. 安装 MariaDB 数据库
- 作用:为半同步复制搭建基础环境,提供数据库服务核心。这是后续所有配置的前提,只有安装好 MariaDB,才能进行相关复制配置。
2. 检查 MariaDB 版本
- 作用:确认 MariaDB 版本是否支持半同步复制。不同版本对半同步复制的支持特性及实现方式可能存在差异,高版本在功能完善度和稳定性上有优势。若版本过低,可能无法使用半同步复制或存在兼容性问题。
3. 安装半同步复制插件
- 作用:半同步复制功能依赖特定插件实现。通过安装插件,数据库才能具备半同步复制的能力,该插件负责协调主从节点间的数据传输与确认机制。
4. 配置主库(Master)
[mysqld]
log-bin=mysql-bin
server-id=1
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
- 各配置作用:
log-bin=mysql-bin
:开启二进制日志,用于记录数据库的更改操作,主库通过二进制日志将数据变化传递给从库,是数据复制的基础。
server-id=1
:为数据库实例设置唯一标识,在复制环境中用于区分不同节点,保证主从节点间通信和数据同步的准确性。
rpl_semi_sync_master_enabled=1
:启用主库的半同步复制功能,只有开启此选项,主库才会按照半同步复制机制工作。
rpl_semi_sync_master_timeout=10000
:设置主库等待从库确认的超时时间(单位为毫秒)。若在该时间内未收到从库确认,主库将切换回异步复制模式,确保数据传输不会无限等待。
5. 配置从库(Slave)
[mysqld]
server-id=2
rpl_semi_sync_slave_enabled=1
- 各配置作用:
server-id=2
:从库设置与主库不同的唯一标识,用于在复制拓扑中识别身份。
rpl_semi_sync_slave_enabled=1
:启用从库的半同步复制功能,使从库能够接收并确认主库发送的数据变更。
6. 重启 MariaDB 服务
- 在主库和从库分别执行重启命令,例如
systemctl restart mariadb
。
- 作用:使修改后的配置文件生效,加载新配置并初始化半同步复制相关设置,确保数据库按照新的配置运行半同步复制。
7. 在主库上授权从库
GRANT REPLICATION SLAVE ON *.* TO'slave_user'@'slave_ip' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
- 作用:为从库创建具有复制权限的用户,并赋予相应权限。从库使用该用户连接主库获取二进制日志进行数据同步,权限设置确保从库能正常获取主库数据变化。
8. 配置从库连接主库
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='master_binlog_file',
MASTER_LOG_POS=master_binlog_position;
- 作用:告知从库主库的地址、连接用户及密码,以及从哪个二进制日志文件和位置开始同步数据。这是建立主从连接的关键步骤,确保从库能正确定位主库数据。
9. 启动从库复制线程
- 在从库执行
START SLAVE;
命令。
- 作用:启动从库的 I/O 线程和 SQL 线程,I/O 线程负责从主库读取二进制日志,SQL 线程负责将读取的日志应用到从库本地数据库,从而实现数据同步。
10. 检查半同步复制状态
- 在主库和从库分别执行
SHOW STATUS LIKE 'Rpl_semi_sync_%';
命令。
- 作用:通过查看相关状态变量,确认半同步复制是否正常工作。例如,
Rpl_semi_sync_master_clients
表示当前连接到主库的半同步从库数量,Rpl_semi_sync_master_status
显示主库半同步状态等,可据此判断复制配置是否成功。