在现代Web应用和企业系统中,Ubuntu数据库复制是保障数据高可用性、负载均衡和灾难恢复的关键技术。本文将详细讲解如何在Ubuntu系统上配置MySQL主从复制,即使你是Linux新手,也能轻松完成整个过程。
什么是MySQL主从复制?
MySQL主从复制是一种将一台MySQL服务器(主服务器)的数据自动复制到一台或多台从服务器的技术。主服务器负责写操作,而从服务器可以处理读请求,从而实现Linux数据库同步和读写分离。

准备工作
你需要两台运行Ubuntu系统的服务器(建议使用Ubuntu 20.04或更高版本),并确保:
两台服务器都能互相通信(可通过ping测试) 已安装MySQL(推荐8.0版本) 拥有sudo权限第一步:配置主服务器(Master)
首先登录到你的主服务器,编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到并修改以下参数(如果没有则添加):
[mysqld]server-id = 1log_bin = /var/log/mysql/mysql-bin.logbinlog_do_db = your_database_namebind-address = 0.0.0.0
保存并退出后,重启MySQL服务:
sudo systemctl restart mysql
接下来,创建一个用于复制的专用用户:
mysql -u root -p-- 在MySQL命令行中执行CREATE USER 'repl_user'@'%' IDENTIFIED BY 'StrongPassword123!';GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';FLUSH PRIVILEGES;
记录当前二进制日志的位置,稍后从服务器会用到:
SHOW MASTER STATUS;
输出类似如下内容,请记下
File和
Position的值:
+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 154 | your_db_name | |+------------------+----------+--------------+------------------+
第二步:配置从服务器(Slave)
登录到从服务器,同样编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
修改以下参数:
[mysqld]server-id = 2relay-log = /var/log/mysql/mysql-relay-bin.loglog_bin = /var/log/mysql/mysql-bin.logbinlog_do_db = your_database_name
重启MySQL服务:
sudo systemctl restart mysql
现在配置从服务器连接到主服务器:
mysql -u root -p-- 在MySQL命令行中执行(替换为你自己的主服务器IP、用户名、密码、File和Position)CHANGE MASTER TO MASTER_HOST='主服务器IP地址', MASTER_USER='repl_user', MASTER_PASSWORD='StrongPassword123!', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;START SLAVE;
第三步:验证复制状态
在从服务器上运行以下命令检查复制是否正常:
SHOW SLAVE STATUS\G
关键字段应为:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0(表示无延迟)
如果出现错误,请检查网络连通性、防火墙设置(开放3306端口)以及用户名密码是否正确。
常见问题与优化建议
- 确保主从服务器时间同步(可使用NTP服务)
- 定期监控复制延迟
- 对于生产环境,建议使用SSL加密复制通道
- 备份策略不可替代复制,仍需定期备份
总结
通过本教程,你已经成功完成了Ubuntu MySQL配置中的主从复制搭建。这项技术不仅能提升系统性能,还能增强数据安全性。掌握Ubuntu数据库复制、MySQL主从复制、Linux数据库同步和Ubuntu MySQL配置这四大核心技能,将为你的运维或开发工作打下坚实基础。
如有疑问,欢迎在评论区留言交流!
