MySQL(主从配置)
封面图
•
2025-10-27
•
MySQL
138
0
0
0
MySQL 的主从配置(Master-Slave)是一种常见的数据库高可用和读写分离架构。通过主库(Master)接收写操作,从库(Slave)复制主库的数据,可以实现数据的备份、负载均衡、提高系统性能等目的。 --- ## 一、MySQL 主从配置的基本原理 1. **主库(Master)**:负责处理所有的写请求(INSERT, UPDATE, DELETE),并将这些操作记录到二进制日志(binlog)中。 2. **从库(Slave)**:通过 I/O 线程从主库拉取 binlog,并将这些日志保存到中继日志(relay log),然后由 SQL 线程执行这些日志中的 SQL 语句,实现数据同步。 --- ## 二、主从配置步骤 ### 1. 准备两台 MySQL 服务器 - **主库(Master)**:IP 地址为 `192.168.1.100` - **从库(Slave)**:IP 地址为 `192.168.1.101` ### 2. 配置主库(Master) #### a. 修改主库的 MySQL 配置文件(通常在 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`) ```ini [mysqld] server-id=1 log-bin=mysql-bin ``` - `server-id`:必须唯一,主库设为 1。 - `log-bin`:启用二进制日志。 #### b. 重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` #### c. 创建用于复制的用户并授权 ```sql CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` #### d. 查看主库的二进制日志信息 ```sql SHOW MASTER STATUS; ``` 输出示例: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 154 | | | +------------------+----------+--------------+------------------+ ``` 记下 `File` 和 `Position`,后续配置从库时会用到。 --- ### 3. 配置从库(Slave) #### a. 修改从库的 MySQL 配置文件 ```ini [mysqld] server-id=2 ``` - `server-id`:必须与主库不同,这里设为 2。 #### b. 重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` #### c. 配置主从连接 ```sql CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; ``` > 注意:`MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 要与主库上 `SHOW MASTER STATUS;` 的结果一致。 #### d. 启动从库的复制进程 ```sql START SLAVE; ``` #### e. 检查从库状态 ```sql SHOW SLAVE STATUS\G ``` 查看以下字段是否为 `Yes`: - `Slave_IO_Running`: Yes - `Slave_SQL_Running`: Yes 如果出现错误,需要根据提示排查问题(如权限、网络、防火墙等)。 --- ## 三、验证主从同步 在主库上插入一条数据: ```sql USE test; INSERT INTO users (name) VALUES ('Alice'); ``` 在从库上查询: ```sql USE test; SELECT * FROM users; ``` 如果能看到插入的数据,说明主从同步成功。 --- ## 四、常见问题排查 | 问题 | 解决方法 | |------|----------| | 无法连接主库 | 检查网络、防火墙、用户权限 | | 从库报错 `Error: 1200` | 检查 `server-id` 是否唯一 | | 从库报错 `Access denied` | 检查 `repl_user` 的密码和权限 | | 从库同步失败 | 使用 `SHOW SLAVE STATUS\G` 查看详细错误信息 | --- ## 五、扩展建议 - **主从延迟**:使用 `SHOW SLAVE STATUS\G` 查看 `Seconds_Behind_Master`。 - **半同步复制**:可减少数据丢失风险,配置更复杂。 - **GTID 复制**:基于全局事务标识符的复制方式,适合多主复制或故障切换。 - **使用工具**:如 `pt-table-checksum` 和 `pt-online-schema-change` 来检查一致性、在线修改表结构。 --- 如果你有具体的环境(如 MySQL 版本、操作系统等),我可以提供更详细的配置脚本或命令。 是否需要我帮你生成一个完整的主从配置脚本?
上一篇:
Windows环境:MySQL 全量、增量备份还原数据库数据
下一篇:
MySQL触发器
标题录入,一次不能超过6条
留言
评论