MySQL5.7 主主配置实战指南
mysql 5.7 主主配置

首页 2025-06-18 20:10:43



MySQL5.7 主主配置全攻略 在当前的数据库架构设计中,主主配置(也称为双主同步)因其高可用性、负载均衡以及读写分离等优势,越来越受到企业的青睐

    特别是在使用MySQL5.7这样的成熟数据库管理系统时,配置主主同步不仅能提升系统的整体性能,还能有效减少单点故障的风险

    本文将详细介绍如何在两台服务器上配置MySQL5.7的主主同步,确保每一步操作都详尽无遗,让你轻松实现高可用性的数据库架构

     一、环境准备 在开始配置之前,我们需要准备两台已经安装好MySQL5.7的服务器

    这里我们假设使用的是CentOS7操作系统,并且两台服务器的IP地址分别为10.25.125.124(服务器A)和10.25.125.125(服务器B)

    同时,请确保两台服务器之间的3306端口是开放的,用于MySQL通信

     1. 关闭防火墙和SELinux 在配置之前,建议先关闭防火墙和SELinux,以避免不必要的干扰

     bash 关闭防火墙 systemctl stop firewalld.service 禁用SELinux setenforce0 永久禁用SELinux(修改/etc/selinux/config文件) sed -i s/^SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config 2. 安装MySQL5.7 如果服务器上尚未安装MySQL5.7,你需要先进行安装

    这里假设你已经有了MySQL5.7的安装包`mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz`

     bash 上传安装包到服务器 解压安装包到/usr/local/ tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ 创建符号链接以简化路径 ln -s /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql 创建MySQL用户和组 groupadd mysql useradd -r -g mysql mysql 配置MySQL数据目录(假设数据目录在/data/mysql) mkdir -p /data/mysql chown -R mysql:mysql /data/mysql 二、配置MySQL主主同步 1. 修改MySQL配置文件 在两台服务器上分别修改`/etc/my.cnf`文件,添加或修改以下配置

     服务器A(10.25.125.124)配置: ini 【mysqld】 basedir=/usr/local/mysql datadir=/data/mysql socket=/tmp/mysql.sock user=mysql port=3306 log-error=/data/mysql/mysql-error.log pid-file=/data/mysql/mysqld.pid 启用二进制日志 log-bin=mysql-bin server-id=1 每台服务器的server-id必须唯一 主主复制相关配置 auto_increment_increment=2 auto_increment_offset=1 log_slave_updates=1 sync_binlog=1 服务器B(10.25.125.125)配置: ini 【mysqld】 basedir=/usr/local/mysql datadir=/data/mysql socket=/tmp/mysql.sock user=mysql port=3306 log-error=/data/mysql/mysql-error.log pid-file=/data/mysql/mysqld.pid 启用二进制日志 log-bin=mysql-bin server-id=2 每台服务器的server-id必须唯一 主主复制相关配置 auto_increment_increment=2 auto_increment_offset=2 log_slave_updates=1 sync_binlog=1 保存配置文件后,重启MySQL服务以应用更改

     bash service mysqld restart 2. 创建复制用户 在两台服务器上分别执行以下SQL命令,创建用于主主复制的用户

     sql CREATE USER repl@% IDENTIFIED BY repl123456; GRANT REPLICATION SLAVE ON. TO repl@%; FLUSH PRIVILEGES; 3. 获取二进制日志信息 在两台服务器上分别执行以下命令,获取二进制日志文件名和位置

     sql SHOW MASTER STATUS; 记录下每台服务器的File和Position信息,这些信息在后续配置复制关系时会用到

     4. 配置复制关系 在服务器A上执行以下命令,配置指向服务器B的复制关系

     sql CHANGE MASTER TO MASTER_HOST=10.25.125.125, MASTER_USER=repl, MASTER_PASSWORD=repl123456, MASTER_LOG_FILE=mysql-bin.000001,替换为服务器B的File信息 MASTER_LOG_POS=1234;替换为服务器B的Position信息 在服务器B上执行以下命令,配置指向服务器A的复制关系

     sql CHANGE MASTER TO MASTER_HOST=10.25.125.124, MASTER_USER=repl, MASTER_PASSWORD=repl123456, MASTER_LOG_FILE=mysql-bin.000001,替换为服务器A的File信息 MASTER_LOG_POS=1234;替换为服务器A的Position信息 5. 启动复制进程 在两台服务器上分别执行以下命令,启动复制进程

     sql START SLAVE; 6. 检查复制状态 在两台服务器上分别执行以下命令,检查复制状态

     sql SHOW SLAVE STATUS G; 确保`Slave_IO_Running`和`Slave_SQL_Running`的状态都是`Yes`

    如果出现任何问题,请检查配置文件、用户权限以及网络连接等

     三、测试主主同步 配置完成后,我们可以通过在主库上插入数据,然后在从库上查询数据来测试主主同步是否正常工作

     1. 在服务器A上创建测试数据库和表 sql CREATE DATABASE test_db; USE test_db; CREATE TABLE test_table( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) ); 2. 在服务器A上插入数据 sql INSERT INTO test_table(name) VALUES(Test Data A); 3. 在服务器B上查询数据 sql USE test_db; SELECTFROM test_table; 你应该能够看到在服务器A上插入的数据

    同样地,你也可以在服务器B上插入数据,然后在服务器A上查询数据来验证同步效果

     四、注意事项与故障排查 1.防火墙和网络连接:确保两台服务器之间的3

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道