MySQL双主配置详解:Linux环境下的同步设置
需积分: 12 71 浏览量
更新于2024-09-07
收藏 15KB DOCX 举报
"MySQL双主配置教程"
MySQL双主配置是一种高可用性和负载均衡的解决方案,它允许两台MySQL服务器互为主从,数据双向同步。在本配置中,两台服务器A(192.168.2.1)和B(192.168.2.2)都将既是主服务器也是从服务器,任何一台服务器上的数据更改都会被复制到另一台服务器,从而确保数据的一致性。
### 1. 前置条件与环境准备
- **操作系统**: Linux,例如Ubuntu、CentOS等支持MySQL服务的操作系统。
- **MySQL版本**: 在这个示例中使用的是`mysql-5.7.10`,但其他版本也可适用,只需注意不同版本间的配置差异。
- **网络连接**: 两台服务器必须能够相互通信。如果不在同一网段,需要通过路由器进行联通,并确保路由可达。
- **防火墙设置**: 两台服务器的Windows防火墙(如果有)应关闭或配置好相应的端口放行规则,通常MySQL使用3306端口。
### 2. 创建同步用户
为了实现数据同步,需要在每台服务器上创建一个可以相互访问的用户。在这个例子中,我们创建了一个名为`tongbu`的用户,分配了全库权限,并设置了密码`111111`。同时,为了本地管理,也给`root`用户分配了密码。在A服务器上,为B服务器创建用户;在B服务器上,为A服务器创建用户。
```sql
# 在A服务器上为B服务器创建用户
mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'192.168.2.2' IDENTIFIED BY '111111';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '111111';
mysql> flush privileges;
# 在B服务器上为A服务器创建用户
mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'192.168.2.1' IDENTIFIED BY '111111';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '111111';
mysql> flush privileges;
```
### 3. 主服务器数据库备份
在开始配置之前,建议对当前的数据进行备份,以防配置过程中发生错误导致数据丢失。
### 4. 修改配置文件
接下来,我们需要编辑MySQL的配置文件(通常是`my.cnf`或`my.ini`),在两台服务器上添加以下参数:
- `log-bin`: 开启二进制日志,这是复制的基础。
- `server-id`: 为每台服务器设置唯一的ID,区分主从。
- `expire-logs-days`: 设置二进制日志的保留天数,防止日志文件过多。
- `replicate-do-db` / `binlog-ignore-db`: 指定需要或忽略复制的数据库。
- `auto-increment-increment` 和 `auto-increment-offset`: 配置自动增长ID的步长和起始值,防止主从服务器生成相同的ID。
对于A服务器(192.168.2.1)的配置:
```ini
[mysqld]
log-bin=mysql-bin
server-id=1
expire-logs-days=100
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=1
```
对于B服务器(192.168.2.2)的配置:
```ini
[mysqld]
log-bin=mysql-bin
server-id=2
expire-logs-days=100
```
### 5. 启动复制
- **在A服务器上**:设置B服务器为它的从服务器。
```sql
mysql> CHANGE MASTER TO MASTER_HOST='192.168.2.2', MASTER_USER='tongbu', MASTER_PASSWORD='111111', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
mysql> START SLAVE;
```
- **在B服务器上**:设置A服务器为它的从服务器,步骤类似。
### 6. 验证复制
确认主从同步是否正常工作,可以查询每个服务器的状态。
```sql
mysql> SHOW SLAVE STATUS\G
```
检查`Slave_IO_Running`和`Slave_SQL_Running`都为`Yes`,表明复制正在运行。
### 7. 日常维护
在日常运维中,监控复制状态、定期检查错误日志以及调整复制配置以适应业务变化是必要的。
### 注意事项
- 数据库同步可能会引入延迟,特别是在大量写操作的场景下。
- 配置过程中务必小心,错误的配置可能导致数据丢失或不一致。
- 对于生产环境,强烈建议使用更安全的密码策略,并避免明文存储。
- 考虑到性能和安全性,可能需要进一步优化配置,如使用专用的复制用户,限制其权限,以及调整复制延迟策略。
MySQL双主配置完成后,两台服务器将能够相互复制数据,提高系统的可靠性和容错性。然而,这种配置也需要对MySQL有深入理解,以确保在故障切换或恢复时能正确处理。
2022-08-04 上传
2023-06-03 上传
2023-06-03 上传
2023-11-27 上传
2023-07-28 上传
2023-07-27 上传
2023-07-27 上传
wobuzhidaonishixiang
- 粉丝: 0
- 资源: 2
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录