Ubuntu 18.04 安装MySQL 5.7.37并配置双主同步

需积分: 9 0 下载量 48 浏览量 更新于2024-08-04 收藏 6KB MD 举报
"MySQL 5.7.37 双主复制配置教程" 在数据库领域,主从复制是一种常见的高可用性和负载均衡方案。MySQL 的双主配置则将这种模式推向了新的高度,允许两个服务器互为主从,彼此同步数据。这使得在任何一台服务器上写入的数据都可以实时反映到另一台服务器,提高了数据的一致性,并提供了故障转移的能力。以下是如何在 MySQL 5.7.37 上进行双主配置的详细步骤。 首先,确保你已经在系统上正确安装了 MySQL。如描述中所示,你可以通过下载并安装 `.deb` 包来完成这个过程。对于 Ubuntu 18.04 系统,可以按照以下步骤操作: 1. 下载 MySQL 5.7.37 的 `.deb` 包: ``` wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.37-1ubuntu18.04_amd64.deb-bundle.tar ``` 2. 创建一个目录来存放这些包: ``` mkdir mysql5.7.37 mv mysql-server_5.7.37-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.37 ``` 3. 进入该目录并解压文件: ``` cd mysql5.7.37 sudo tar -vxf mysql-server_5.7.37-1ubuntu18.04_amd64.deb-bundle.tar ``` 4. 删除非必需的测试包: ``` sudo rm -f mysql-testsuite_5.7.37-1ubuntu18.04_amd64.deb sudo rm -f mysql-community-test_5.7.37-1ubuntu18.04_amd64.deb ``` 5. 使用 `dpkg` 安装所有必要的包: ``` sudo dpkg -i mysql-*.deb ``` 安装完成后,你需要配置两个 MySQL 服务器进行双主复制。以下是基本配置步骤: 1. **配置复制参数**:在两个服务器上的 `/etc/mysql/my.cnf` 文件中,添加以下复制相关配置: ``` [mysqld] server-id = 1 # 对于服务器1,设置为1;对于服务器2,设置为2 log-bin = /var/log/mysql/mysql-bin.log # 开启二进制日志 binlog-format = ROW # 推荐使用ROW格式,以支持行级复制 innodb_flush_log_at_trx_commit = 1 # 确保事务提交时日志同步 ``` 2. **创建复制用户**:在每个服务器上,创建一个用于复制的账户,例如 `repl` 用户,权限只限于复制: ``` CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` 3. **获取初始同步的二进制日志文件名和位置**:在每个服务器上执行 `SHOW MASTER STATUS;` 获取 `File` 和 `Position`。 4. **配置主从关系**:在服务器1上,作为主节点,设置从节点的服务器ID和复制起点: ``` CHANGE MASTER TO MASTER_HOST='server2_ip', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='file_name', MASTER_LOG_POS=position; START SLAVE; ``` 5. 在服务器2上,重复以上步骤,但将 `MASTER_HOST` 设置为服务器1的IP地址。 6. **验证复制**:在两个服务器上运行 `SHOW SLAVE STATUS\G;` 检查复制状态,确认已成功连接并同步。 双主复制需要谨慎操作,因为可能会出现循环复制或数据冲突。为了防止这种情况,通常会设置过滤规则(例如基于表或数据库的),或者使用不同的业务逻辑。此外,务必定期检查复制延迟,以便在出现问题时及时发现和解决。 请注意,双主配置虽然强大,但并不适用于所有场景。在某些情况下,单向复制(如一主多从)可能更合适,因为它可以避免潜在的数据不一致问题。在部署双主复制前,务必评估你的需求和风险,确保选择最适合的高可用解决方案。