虚拟机搭建负载均衡,mysql主从复制和读写分离(四、搭建主从复制和读写分离)

本文详细介绍了如何在虚拟机上搭建负载均衡,通过克隆实现主从复制,并结合读写分离技术优化MySQL性能。包括设置服务器ID,调整权限,配置数据库连接,以及使用ThinkPHP6进行框架级的读写分离配置。
在实际生产环境中,仅在同一数据库服务器进行读写操作无法满足安全性、高可用性高并发等方面的需求,因此可以通过主从复制同步数据,并通过读写分离提升数据库的并发负载能力 [^1]。以下是在两个虚拟机搭建 MySQL 主从服务器并实现主从复制读写分离的详细步骤: ### 环境准备 准备两台虚拟机,假设 IP 分别为 192.168.121.112 192.168.121.113,在两台虚拟机上都安装好 MySQL 数据库。 ### 主服务器(假设为 192.168.121.112)配置 1. **修改 MySQL 配置文件**:编辑 MySQL 配置文件(通常为 `/etc/my.cnf` 或 `/etc/mysql/mysql.conf.d/mysqld.cnf`),添加或修改以下配置: ```plaintext server-id = 1 log-bin = mysql-bin binlog-do-db = your_database_name # 指定需要复制的数据库 ``` 这里 `server-id` 用于唯一标识服务器,`log-bin` 开启二进制日志,`binlog-do-db` 指定需要复制的数据库。 2. **重启 MySQL 服务**:使配置生效 ```bash systemctl restart mysql ``` 3. **创建用于主从复制的用户**:登录 MySQL,执行以下 SQL 语句 ```sql CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` 4. **查看主服务器状态**:执行以下 SQL 语句,记录 `File` `Position` 的值 ```sql SHOW MASTER STATUS; ``` ### 从服务器(假设为 192.168.121.113)配置 1. **修改 MySQL 配置文件**:编辑 MySQL 配置文件,添加或修改以下配置 ```plaintext server-id = 2 relay-log = mysql-relay-bin log-bin = mysql-bin ``` 这里 `server-id` 要与主服务器不同,`relay-log` 用于存储从主服务器接收到的二进制日志,`log-bin` 开启二进制日志。 2. **重启 MySQL 服务**:使配置生效 ```bash systemctl restart mysql ``` 3. **配置从服务器连接主服务器**:登录 MySQL,执行以下 SQL 语句,将 `MASTER_LOG_FILE` `MASTER_LOG_POS` 替换为主服务器 `SHOW MASTER STATUS` 得到的 `File` `Position` 的值 ```sql CHANGE MASTER TO MASTER_HOST='192.168.121.112', MASTER_USER='repl_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.xxxxxx', MASTER_LOG_POS=xxxxxx; ``` 4. **启动从服务器复制进程** ```sql START SLAVE; ``` 5. **检查从服务器状态**:执行以下 SQL 语句,确保 `Slave_IO_Running` `Slave_SQL_Running` 都为 `Yes` ```sql SHOW SLAVE STATUS\G ``` ### 实现读写分离 可以使用中间件(如 MyCat、ProxySQL 等)来实现读写分离。以 ProxySQL 为例: 1. **安装 ProxySQL**:在任意一台服务器上安装 ProxySQL ```bash yum install proxysql # CentOS apt-get install proxysql # Ubuntu ``` 2. **配置 ProxySQL**:编辑 `/etc/proxysql.cnf` 文件,添加主从服务器信息读写分离规则 ```plaintext mysql_servers: ( { address="192.168.121.112", port=3306, hostgroup=1, max_connections=1000 }, { address="192.168.121.113", port=3306, hostgroup=2, max_connections=1000 } ) mysql_query_rules: ( { rule_id=1, active=1, match_digest="^SELECT.*", destination_hostgroup=2, apply=1 }, { rule_id=2, active=1, match_digest="^INSERT|UPDATE|DELETE.*", destination_hostgroup=1, apply=1 } ) ``` 这里将 `SELECT` 语句路由到从服务器,将 `INSERT`、`UPDATE`、`DELETE` 语句路由到主服务器。 3. **启动 ProxySQL 服务** ```bash systemctl start proxysql ``` 4. **应用程序连接 ProxySQL**:将应用程序的数据库连接配置修改为 ProxySQL 的地址端口。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值