Ubuntu环境下MySQL 8.0主从复制搭建与配置详解
本文详细介绍在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; 检查两项关键状态:
Slave_IO_Running: Yes:负责读取主库日志。Slave_SQL_Running: Yes:负责执行日志中的事件。
若两者均为 Yes,且 Last_Error 为空,则说明主从同步已建立成功。可在主库 test 库插入测试数据,观察从库是否实时同步。常见问题多源于网络不通、账号权限不足或 binlog format 不匹配,请根据报错日志排查。
以上就是MySQL 8.0主从复制搭建与配置方案的详细内容,更多关于MySQL集群部署的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













