Ubuntu环境下MySQL 8.0主从复制搭建与配置详解

慢慢来
慢慢来
发布时间:2026-10-15| 6人浏览过
原创

本文详细介绍在Ubuntu系统中配置MySQL 8.0主从复制的实操步骤,包括环境准备、主库日志开启、数据同步账号创建、备份还原以及从库连接设置,帮助用户快速建立数据库高可用架构。

环境准备与安装

本方案基于 Ubuntu 20.04 系统,MySQL 版本为 8.0.22。假设主库 IP 为 192.168.87.3,从库 IP 为 192.168.87.6。首先需要确保两台服务器均安装了必要的 MySQL 组件:

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

主库配置与数据准备

第1步:设置root密码与本地访问

首次安装后,可通过 sudo mysql -uroot -p 进入控制台并重置密码,建议启用兼容模式:

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;

第2步:修改主库配置文件开启Binlog

编辑主库配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,重点配置以下参数以实现异步复制:

  • server-id: 设置为唯一的整数(如 1)。
  • log_bin: 指定二进制日志路径,如 /var/log/mysql/mysql-bin.log。
  • bind-address: 绑定本机IP以允许远程连接。
  • sync_binlog & innodb_flush_log_at_trx_commit: 设为 1 以确保数据最强一致性(性能损耗较大,测试环境可适当调整)。

关键配置片段参考:

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 100M
binlog_format = row
bind-address = 192.168.87.3
# ...其他默认配置保持不动

配置完成后重启服务:systemctl restart mysql.service。

第3步:创建同步专用账号

在主库中创建一个专门用于主从复制的用户,限制其只能从从库IP登录:

CREATE USER 'sync'@'192.168.87.6' IDENTIFIED WITH mysql_native_password BY 'sync_password';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.87.6';
FLUSH PRIVILEGES;

第4步:获取备份快照

使用 mysqldump 进行全量备份。--master-data 参数会自动将当前的 Binlog 位置信息写入备份文件开头的 CHANGE MASTER TO 语句中,方便后续配置从库:

mysqldump --all-databases --master-data > dbdump.db

此时可执行 show master status; 查看具体的 File 和 Position 值(若未使用 --master-data,需在此处记录以便手动填入从库配置)。

第5步:配置远程访问(可选)

若需允许外部工具直接连接主库,需更新用户主机权限并关闭防火墙或开放3306端口:

update user set host='%' where user = 'root';
FLUSH PRIVILEGES;
sudo ufw disable # 仅用于测试环境,生产环境请配置iptables或安全组

从库配置与同步

第1步:修改从库配置文件

编辑从库 /etc/mysql/mysql.conf.d/mysqld.cnf,确保 server-id 与主库不同(例如 2),同样开启 log_bin:

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

第2步:导入初始数据

将通过 scp 上传至从库的 dbdump.db 导入到从库数据库中。为防止导入过程产生新的 binlog 导致混乱,先关闭日志记录:

set sql_log_bin=0;
source /path/to/dbdump.db;

第3步:启动Slave复制

使用之前备份文件中提取的 master log file 和 position(或手动通过 show master status; 获取)执行 change master 命令:

CHANGE MASTER TO
  MASTER_HOST='192.168.87.3',
  MASTER_USER='sync',
  MASTER_PASSWORD='sync_password',
  MASTER_LOG_FILE='mysql-bin.000003',
  MASTER_LOG_POS=730;
START SLAVE;

验证与排错

在从库执行 show slave status\G; 检查两项关键状态:

  1. Slave_IO_Running: Yes:负责读取主库日志。
  2. Slave_SQL_Running: Yes:负责执行日志中的事件。

若两者均为 Yes,且 Last_Error 为空,则说明主从同步已建立成功。可在主库 test 库插入测试数据,观察从库是否实时同步。常见问题多源于网络不通、账号权限不足或 binlog format 不匹配,请根据报错日志排查。

以上就是MySQL 8.0主从复制搭建与配置方案的详细内容,更多关于MySQL集群部署的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。