在高并发的Web应用中,数据库往往成为性能瓶颈。为了提升系统性能和可用性,Ubuntu数据库读写分离是一种常见且高效的解决方案。本文将带你从零开始,在Ubuntu系统上配置MySQL主从复制,从而实现读写分离架构。即使你是Linux或数据库新手,也能轻松跟着操作。
读写分离是指将数据库的“写”操作(如INSERT、UPDATE、DELETE)发送到主库(Master),而将“读”操作(如SELECT)分发到一个或多个从库(Slave)。这样可以有效减轻主库压力,提高整体查询性能,同时增强系统的数据库高可用架构能力。
本教程使用两台Ubuntu 22.04服务器:
确保两台服务器都已安装MySQL 8.0,并能互相通信(关闭防火墙或开放3306端口)。
登录主库服务器,编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 在[mysqld]部分添加或修改以下内容:
[mysqld]server-id = 1log_bin = /var/log/mysql/mysql-bin.logbinlog_do_db = your_database_namebind-address = 0.0.0.0 其中:
- server-id 必须唯一,主库设为1
- log_bin 启用二进制日志(主从复制必需)
- binlog_do_db 指定需要同步的数据库(可选,若留空则同步所有库)
- bind-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 | 156 | your_db | |+------------------+----------+--------------+------------------+ 编辑从库的MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 修改以下参数:
[mysqld]server-id = 2relay-log = /var/log/mysql/mysql-relay-bin.logread_only = 1 注意:server-id 必须与主库不同,这里设为2。
重启从库MySQL:
sudo systemctl restart mysql 在从库MySQL中配置主从连接:
mysql -u root -p-- 替换为你自己的主库IP、用户名、密码以及之前记录的File和PositionCHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl_user', MASTER_PASSWORD='StrongPassword123!', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=156;START SLAVE; 检查从库状态:
SHOW SLAVE STATUS\G 关键看这两项是否为“Yes”:
Slave_IO_Running: YesSlave_SQL_Running: Yes在主库创建测试数据库和表:
-- 主库执行CREATE DATABASE test_db;USE test_db;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));INSERT INTO users (name) VALUES ('Alice'); 稍等几秒后,在从库查询:
-- 从库执行USE test_db;SELECT * FROM users; 如果看到“Alice”,说明复制成功!此时,你的Ubuntu MySQL配置已完成基础读写分离。
- 应用层需使用中间件(如ShardingSphere、MyCat)或代码逻辑将读请求路由到从库
- 定期监控主从延迟(Seconds_Behind_Master)
- 考虑多从库部署以进一步提升读性能
通过以上步骤,你已经成功在Ubuntu上搭建了基于MySQL主从复制的读写分离架构。这不仅提升了数据库性能,也为构建高可用系统打下坚实基础。掌握Ubuntu数据库读写分离、MySQL主从复制、Ubuntu MySQL配置和数据库高可用架构这四大核心技能,将让你在运维和开发中更加游刃有余!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127240.html