Debian 下 MariaDB 主从复制配置步骤
一 环境准备与前置检查
SHOW VARIABLES LIKE 'datadir'; 查看,用于确认数据一致性基线。二 主库配置
server-id=1(唯一)log-bin=mysql-bin(开启二进制日志)bind-address=0.0.0.0(允许远程复制;生产环境请限制来源网段)systemctl restart mariadbCREATE USER 'repl'@'从库IP或网段' IDENTIFIED BY '强密码';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP或网段';FLUSH PRIVILEGES;FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS; 记录 File 与 Position(如:mysql-bin.000020、1441)mysqldump -uroot -p --single-transaction --databases 需要复制的库 > master.sqlUNLOCK TABLES;(如使用备份工具如 Percona XtraBackup,可免锁获取一致性备份)三 从库配置
systemctl restart mariadbmysql -uroot -p < master.sqlCHANGE MASTER TO
MASTER_HOST='主库IP',MASTER_USER='repl',MASTER_PASSWORD='强密码',MASTER_LOG_FILE='mysql-bin.000020',MASTER_LOG_POS=1441;START SLAVE;SHOW SLAVE STATUS\G,确保 Slave_IO_Running: Yes 且 Slave_SQL_Running: Yes。mysql -h 主库IP -u repl -P 3306 -p 能登录说明网络与账号正常。四 验证与常见问题
SELECT 验证是否实时同步;也可再次执行 SHOW SLAVE STATUS\G 观察 Seconds_Behind_Master 是否收敛。bind-address 与安全组/防火墙策略是否正确。CHANGE MASTER TO 使用的 File/Position 来自主库 SHOW MASTER STATUS 的当前值;必要时重新导入一致性备份后设置起点。SHOW SLAVE STATUS\G 的 Last_Error/Last_SQL_Error;修复后 START SLAVE; 继续。五 进阶与扩展
server-id,主库启用 log-bin;从库执行:
CHANGE MASTER TO ... , MASTER_USE_GTID=slave_pos;START SLAVE;CHANGE MASTER 'r1' TO ... ;CHANGE MASTER 'r2' TO ... ;SHOW ALL SLAVES STATUS\G 查看各通道状态。server-id 唯一、各自开启 log-bin 与必要的 log-slave-updates,并通过 auto_increment_increment/auto_increment_offset 避免主键冲突。