温馨提示×

debian mysql怎样设置主从

小樊
48
2026-10-04 20:30:56
栏目: 云计算

下面给你一份**在 Debian 上配置 MySQL 主从复制(Master–Slave)**的实用步骤(以 MySQL 8.0 为例,5.7 也基本通用)。


一、环境准备

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.11
  • 两台都安装好 MySQL
sudo apt update
sudo apt install mysql-server

确保防火墙允许 3306:

sudo ufw allow 3306

二、配置主库(Master)

1. 修改配置文件

编辑 /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

2. 创建复制账号

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;

3. 查看主库状态

SHOW MASTER STATUS;

记下:

  • File(如 mysql-bin.000001)
  • Position(如 154)

三、配置从库(Slave)

1. 修改配置文件

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log

重启 MySQL:

sudo systemctl restart mysql

2. 配置主库信息

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;

3. 启动复制

START SLAVE;

4. 查看状态

SHOW SLAVE STATUS\G

确认以下两项为 Yes:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四、测试主从

在主库:

CREATE DATABASE test_rep;

在从库:

SHOW DATABASES;

能看到 test_rep 即成功。


五、常见问题

1. Slave_IO_Running: No

  • 主从 server-id 相同
  • 网络不通
  • 复制账号权限不对

2. 数据不一致

  • 初始化从库时先把主库锁表或停机
  • 可用 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 主从 / 双主,我可以给你对应版本配置。

0 踩