面试题答案
一键面试- 主服务器设置
- 配置my.cnf:
- 打开主服务器的
my.cnf
文件,添加或修改以下参数:server - id = 1 # 每个服务器的唯一ID,主服务器设置为1,其他主服务器可设为不同值 log - bin = /var/log/mysql/mysql - bin.log # 二进制日志文件路径 binlog - format = ROW # 二进制日志格式,建议使用ROW
- 重启MariaDB服务使配置生效:
systemctl restart mariadb
- 打开主服务器的
- 创建复制用户:
- 登录到MariaDB:
mysql -u root -p
- 创建用于复制的用户,例如:
CREATE USER'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO'replication_user'@'%'; FLUSH PRIVILEGES;
- 查看主服务器状态:
记录下SHOW MASTER STATUS;
File
和Position
的值,后续从服务器配置时会用到。
- 登录到MariaDB:
- 配置my.cnf:
- 从服务器设置(针对多源复制,这里以两个主服务器为例,实际可根据需求扩展)
- 配置my.cnf:
- 打开从服务器的
my.cnf
文件,添加或修改以下参数:server - id = 2 # 从服务器唯一ID,需与其他服务器不同
- 重启MariaDB服务:
systemctl restart mariadb
- 打开从服务器的
- 配置第一个主服务器的复制:
- 登录到MariaDB:
mysql -u root -p
- 设置主服务器信息:
CHANGE MASTER TO MASTER_HOST='master1_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master1_log_file_name', MASTER_LOG_POS=master1_log_position, FOR CHANNEL'master1_channel'; # 自定义通道名
- 登录到MariaDB:
- 配置第二个主服务器的复制:
- 同样在从服务器的MariaDB中,设置第二个主服务器信息:
CHANGE MASTER TO MASTER_HOST='master2_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master2_log_file_name', MASTER_LOG_POS=master2_log_position, FOR CHANNEL'master2_channel'; # 自定义通道名
- 同样在从服务器的MariaDB中,设置第二个主服务器信息:
- 启动多源复制:
- 在从服务器上启动多源复制:
START SLAVE FOR CHANNEL'master1_channel'; START SLAVE FOR CHANNEL'master2_channel';
- 在从服务器上启动多源复制:
- 检查复制状态:
- 查看每个通道的复制状态:
确保SHOW SLAVE STATUS FOR CHANNEL'master1_channel'\G; SHOW SLAVE STATUS FOR CHANNEL'master2_channel'\G;
Slave_IO_Running
和Slave_SQL_Running
都为Yes
,且Seconds_Behind_Master
的值正常(通常为0或接近0)。
- 查看每个通道的复制状态:
- 配置my.cnf: