下面给你一份**在 Debian 上配置 MySQL 主从复制(Master–Slave)**的实用步骤(以 MySQL 8.0 为例,5.7 也基本通用)。
sudo apt update
sudo apt install mysql-server
确保防火墙允许 3306:
sudo ufw allow 3306
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = row
bind-address = 0.0.0.0
⚠ 如果是云服务器,bind-address 可改为内网 IP
重启 MySQL:
sudo systemctl restart mysql
mysql -u root -p
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记下:
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
重启 MySQL:
sudo systemctl restart mysql
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='ReplPass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
确认以下两项为 Yes:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主库:
CREATE DATABASE test_rep;
在从库:
SHOW DATABASES;
能看到 test_rep 即成功。
mysqldump 全量同步mysqldump -u root -p --all-databases --master-data > db.sql
scp db.sql slave:/tmp
mysql -u root -p < /tmp/db.sql
如果你用的是 Debian 11/12 + MySQL 8.3 或 MariaDB,或者想要 GTID 主从 / 双主,我可以给你对应版本配置。