php nginx 负载均衡配置 mysql主从
时间: 2025-05-14 19:46:59 浏览: 17
### PHP 和 Nginx 环境下的负载均衡配置及 MySQL 主从复制设置
#### 一、Nginx 的负载均衡配置
在 PHP 和 Nginx 环境下,可以通过 Nginx 实现对后端应用服务器(如 Tomcat 或其他 PHP-FPM 进程)的负载均衡。以下是具体的配置方法:
1. **编辑 Nginx 配置文件**
打开 `nginx.conf` 文件,在其中定义一个 upstream 块来指定多个后端服务器地址。
```nginx
http {
upstream backend {
server 192.168.1.101 weight=5; # 权重较高的服务器
server 192.168.1.102;
server 192.168.1.103 backup; # 备份服务器
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
```
上述配置实现了基于轮询算法的负载均衡,并支持权重分配和备份机制[^1]。
---
#### 二、MySQL 主从复制的配置
为了提高系统的可用性和性能,可以采用 MySQL 主从复制技术。以下是具体步骤:
1. **主库配置**
编辑主库的 my.cnf 文件,启用 binlog 并设置唯一的 Server ID。
```ini
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=testdb
```
同时重启 MySQL 服务并创建用于同步的账号。
```sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
```
2. **从库配置**
创建从库容器时可参考如下命令[^2]:
```bash
docker run -d \
--name mysql_slave01 \
-v /mysql/slave01/data:/var/lib/mysql \
-v /mysql/slave01/conf/my.cnf:/etc/my.cnf \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=password \
mysql:5.7
```
修改从库的 my.cnf 文件,设置其 Server ID 不同于主库。
```ini
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
```
3. **启动主从同步**
获取主库的状态信息并将其传递到从库。
```sql
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 123 | testdb | |
+------------------+----------+--------------+------------------+
CHANGE MASTER TO MASTER_HOST='192.168.1.101',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
START SLAVE;
```
4. **验证同步状态**
```sql
SHOW SLAVE STATUS\G;
```
如果 Slave_IO_Running 和 Slave_SQL_Running 显示为 Yes,则表示同步成功[^4]。
---
#### 三、Nginx 和 Keepalived 的高可用配置
为了让整个系统更加稳定,可以引入 Keepalived 提供 VIP 支持。以下是基本操作流程:
1. 安装 Keepalived 并修改 `/etc/keepalived/keepalived.conf` 文件。
```plaintext
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.200
}
}
```
2. 将 Nginx 和 Keepalived 加入开机自启[^3]。
```bash
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
echo "/etc/init.d/keepalived start" >> /etc/rc.local
chmod +x /etc/rc.local
```
---
#### 四、总结
通过以上配置,可以在 PHP 和 Nginx 环境中实现高效的负载均衡,并利用 MySQL 主从复制提升数据处理能力。这种架构不仅能够满足高性能需求,还能保障系统的可靠性和稳定性[^5]。
---
阅读全文
相关推荐

















