下面以 Ubuntu + MySQL(5.7 / 8.0 通用) 为例,说明如何配置 MySQL 主从复制(Master-Slave)。
sudo apt update
sudo apt install mysql-server
编辑 MySQL 配置:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
server-id主从必须不同
sudo systemctl restart mysql
mysql -u root -p
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录:
File(如 mysql-bin.000001)Position(如 154)sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
sudo systemctl restart mysql
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
确认:
Slave_IO_Running: YesSlave_SQL_Running: Yes在主库:
CREATE DATABASE test_db;
在从库:
SHOW DATABASES;
能看到 test_db 即成功。
sudo ufw allow 3306
删除:
sudo rm /var/lib/mysql/auto.cnf
sudo systemctl restart mysql
主库:
binlog-do-db=test_db
如果你用的是 MySQL 8.0 + Ubuntu 22.04,或需要 GTID 主从 / 一主多从 / 读写分离,我也可以继续帮你配置。