"这篇文档主要涉及的是MySQL数据库的高可用性设置,包括主从复制、主主复制的配置,以及在遇到主库宕机时如何切换到从库。此外,还提到了一些Linux运维中的常见问题,如Nginx代理IP记录、Linux系统日志中的错误信息处理、PHP-FPM进程高的原因分析和解决方法,以及数据库恢复策略等。"
在MySQL的主从复制中,创建用于同步的用户是保证数据一致性的重要步骤。在描述中提到的步骤3.5中,需要创建一个名为`RepUser`的用户,并设置其密码为`beijing`。这个用户将被用作从库连接到主库进行数据同步。配置命令如下:
```sql
mysql> CREATE USER 'RepUser'@'%' IDENTIFIED BY 'beijing';
```
接着,需要授权该用户具有复制权限,允许它从任何主机连接到主库并读取二进制日志:
```sql
mysql> GRANT REPLICATION SLAVE ON *.* TO 'RepUser'@'%';
```
然后在从库上执行`change master to`命令,指定主库的信息,包括用户名、密码、主机地址、端口、主日志文件名和位置(即`master_log_pos`)。最后启动从库的复制进程:
```sql
mysql> CHANGE MASTER TO
-> MASTER_USER='RepUser',
-> MASTER_PASSWORD='beijing',
-> MASTER_HOST='192.168.1.101',
-> MASTER_PORT=3307,
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=154;
mysql> START SLAVE;
```
在主库宕机的情况下,需要根据描述中的步骤进行主从切换。首先,确保所有relay log已读取完毕,选择一个新的主库,进行相应的配置更改,如更新从库的`CHANGE MASTER TO`命令。如果有多从结构,其他从库也需要相应调整,指向新的主库。
在生产环境中,遇到Nginx代理日志记录的是代理服务器而非客户端IP时,可以通过设置`proxy_set_header`指令传递真实的客户端IP:
```nginx
location / {
proxy_set_header X-Real-IP $remote_addr;
}
```
对于`/var/log/messages`中出现的`KERNEL: NF_CONNTRACK: TABLEFULL, DROPPING PACKET`错误,这表明连接跟踪表已满,需要增加`ip_conntrack_max`的值来解决。可以使用`sysctl`命令临时或永久调整此参数。
在Linux系统中,如果发现PHP-FPM进程占用资源过高,可能的原因包括PHP脚本性能问题、请求过多或内存不足等。解决方法包括优化PHP代码、限制同时处理的请求数量、增加系统内存或使用内存缓存等。
误操作DROP语句导致的数据丢失,可以通过MySQL的binlog进行恢复,找到删除操作前的日志位置,然后使用`mysqlbinlog`工具配合`mysql`命令进行回滚。
当网站打开慢是由于MySQL数据库访问慢引起时,应检查系统状态(如使用`sar`、`vmstat`等工具),检查MySQL参数(如`max_connect_errors`、`connect_timeout`等),并根据具体情况优化配置或调整资源分配。
以上内容涵盖了MySQL主从复制、Linux系统问题排查、Nginx配置、数据库恢复策略等多个运维中的关键知识点。