温馨提示×

ubuntu mysql怎样设置主从

小樊
36
2026-09-10 01:41:08
栏目: 云计算

下面以 Ubuntu + MySQL(5.7 / 8.0 通用) 为例,说明如何配置 MySQL 主从复制(Master-Slave)


一、环境准备

  • 两台 Ubuntu 服务器
    • 主库(Master):192.168.1.10
    • 从库(Slave):192.168.1.11
  • 已安装相同大版本的 MySQL
sudo apt update
sudo apt install mysql-server

二、主库(Master)配置

1. 修改配置文件

编辑 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 主从必须不同

2. 重启 MySQL

sudo systemctl restart mysql

3. 创建复制账号

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;

4. 查看主库状态

SHOW MASTER STATUS;

记录:

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

三、从库(Slave)配置

1. 修改配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log

2. 重启 MySQL

sudo systemctl restart mysql

3. 配置主库信息

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;

4. 启动从库

START SLAVE;

5. 查看状态

SHOW SLAVE STATUS\G

确认:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

四、测试主从

在主库:

CREATE DATABASE test_db;

在从库:

SHOW DATABASES;

能看到 test_db 即成功。


五、常见问题

1. 防火墙

sudo ufw allow 3306

2. UUID 冲突(克隆机器常见)

删除:

sudo rm /var/lib/mysql/auto.cnf
sudo systemctl restart mysql

3. 只同步部分库

主库:

binlog-do-db=test_db

如果你用的是 MySQL 8.0 + Ubuntu 22.04,或需要 GTID 主从 / 一主多从 / 读写分离,我也可以继续帮你配置。

0