推荐答案
在 MariaDB 中配置主主复制(Master-Master Replication)的步骤如下:
确保两台服务器上的 MariaDB 版本一致:主主复制要求两台服务器的 MariaDB 版本相同或兼容。
配置主服务器 1:
- 编辑
my.cnf
或my.ini
文件,添加以下配置:[mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_database_name auto_increment_increment=2 auto_increment_offset=1
- 重启 MariaDB 服务。
- 编辑
配置主服务器 2:
- 编辑
my.cnf
或my.ini
文件,添加以下配置:[mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=your_database_name auto_increment_increment=2 auto_increment_offset=2
- 重启 MariaDB 服务。
- 编辑
创建复制用户:
- 在主服务器 1 上执行:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
- 在主服务器 2 上执行相同的命令。
- 在主服务器 1 上执行:
配置主服务器 1 复制到主服务器 2:
- 在主服务器 1 上执行:
CHANGE MASTER TO MASTER_HOST='主服务器2的IP地址', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; START SLAVE;
- 在主服务器 1 上执行:
配置主服务器 2 复制到主服务器 1:
- 在主服务器 2 上执行:
CHANGE MASTER TO MASTER_HOST='主服务器1的IP地址', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; START SLAVE;
- 在主服务器 2 上执行:
验证复制状态:
- 在每台服务器上执行:
SHOW SLAVE STATUS\G;
- 确保
Slave_IO_Running
和Slave_SQL_Running
都为Yes
。
- 在每台服务器上执行:
本题详细解读
1. 主主复制的基本概念
主主复制(Master-Master Replication)是一种数据库复制技术,允许两个或多个 MariaDB 服务器相互复制数据。每个服务器都可以作为主服务器和从服务器,这意味着任何一台服务器上的写操作都会同步到其他服务器。
2. 配置文件的参数解释
- server-id:每个服务器必须有一个唯一的 ID,用于标识不同的服务器。
- log-bin:启用二进制日志,记录所有更改数据库的操作。
- binlog-do-db:指定需要复制的数据库。
- auto_increment_increment 和 auto_increment_offset:用于避免主键冲突。
auto_increment_increment
设置为 2,表示每次自增 2;auto_increment_offset
设置为 1 或 2,表示起始值。
3. 复制用户的创建
复制用户用于从服务器连接到主服务器并获取二进制日志。需要为每个主服务器创建相同的复制用户,并授予 REPLICATION SLAVE
权限。
4. CHANGE MASTER TO 命令
该命令用于配置从服务器连接到主服务器的参数。MASTER_HOST
指定主服务器的 IP 地址,MASTER_USER
和 MASTER_PASSWORD
是复制用户的凭据,MASTER_LOG_FILE
和 MASTER_LOG_POS
指定从哪个二进制日志文件和位置开始复制。
5. 验证复制状态
使用 SHOW SLAVE STATUS\G;
命令可以查看从服务器的复制状态。Slave_IO_Running
和 Slave_SQL_Running
必须都为 Yes
,表示复制正在正常运行。
通过以上步骤,您可以在 MariaDB 中成功配置主主复制。