CentOS MySQL主从配置实战指南
centos mysql主从配置文件

首页 2025-07-03 22:23:58



CentOS MySQL主从配置文件详解与实战指南 在现代数据库架构中,主从复制是一项至关重要的技术,它不仅可以提高数据库的可用性,还能通过读写分离提升系统性能

    本文将详细介绍如何在CentOS系统上配置MySQL主从复制,并提供一份详尽的配置文件指南及实战步骤

     一、环境准备 在进行MySQL主从配置之前,请确保您已经准备好了以下环境: 1.两台CentOS服务器:一台作为主服务器(Master),另一台作为从服务器(Slave)

     2.统一的MySQL版本:建议MySQL版本为5.7及以上,以确保兼容性和稳定性

    本文示例将基于MySQL 8.0.40版本

     3.网络互通:确保两台服务器之间的网络是互通的,且3306端口(MySQL默认端口)是开放的

     二、主服务器(Master)配置 1. 编辑MySQL配置文件 首先,登录到主服务器,并编辑MySQL配置文件(通常位于`/etc/my.cnf`或`/etc/mysql/my.cnf`)

    以下是配置文件的详细示例: ini 【mysqld】 基础配置 port=6305 MySQL服务监听端口(需与客户端连接配置一致) basedir=/usr/local/mysql MySQL安装目录 datadir=/usr/local/mysql/data 数据文件存储目录(包含数据库文件、日志等) socket=/usr/local/mysql/data/mysql.sock Unix套接字文件路径(本地连接使用) 连接与安全 max_connect_errors=10000 允许的最大连接错误次数(防暴力破解,建议设为较大值) character-set-server=utf8mb4 默认字符集(支持Emoji和扩展字符) default-storage-engine=INNODB 默认存储引擎(推荐InnoDB,支持事务、行级锁) user=ydroot MySQL服务运行用户(需与系统用户一致) 复制相关配置 server-id=1 唯一服务器标识(主从复制必须唯一) log-bin=mysql-bin 启用二进制日志(文件名前缀) binlog-do-db=datasynchron 仅同步指定数据库(若需全库同步,删除此行) binlog-ignore-db=mysql 被忽略的数据库(可选) 数据包与通信 max_allowed_packet=512M 允许的最大数据包大小(大文件传输需调大) GTID配置(增强复制可靠性) gtid_mode=ON 启用全局事务标识符 enforce_gtid_consistency=ON 强制GTID一致性(禁止非事务性操作) 二进制日志格式 binlog_format=ROW ROW模式记录行级变化,推荐用于复制 日志清理策略 expire_logs_days=7 自动清理7天前的二进制日志(单位:天) binlog_expire_logs_seconds=604800 另一种表示方式,7天(604800秒) 【client】 port=6305 客户端连接端口(需与服务器端一致) socket=/usr/local/mysql/data/mysql.sock 客户端套接字路径(本地连接使用) default-character-set=utf8mb4 客户端默认字符集 【mysqld_safe】 log-error=/usr/local/mysql/data/localhost.localdomain.err 错误日志路径 pid-file=/usr/local/mysql/data/localhost.localdomain.pid PID文件路径(记录进程ID) 2. 重启MySQL服务 配置完毕后,重启MySQL服务以使配置生效: bash sudo systemctl restart mysql 或者手动关闭后启动: bash pkill mysqld /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & 3. 创建复制账号 在主服务器上创建一个用于复制的MySQL用户,并授予全局复制权限: sql CREATE USER replication_user@% IDENTIFIED BY password; -- 生产环境禁止这样使用,因为允许从任何IP连接 -- CREATE USER replication_user@specific_ip IDENTIFIED BY password REQUIRE SSL; -- 生产环境使用,强制使用SSL加密 GRANT REPLICATION SLAVE ON- . TO replication_user@%; -- 或者 specific_ip FLUSH PRIVILEGES; 4. 获取二进制日志文件和位置 运行以下命令,记录当前二进制日志文件和位置,这些信息将在从服务器上配置时使用: sql SHOW MASTER STATUS; 输出结果可能类似于: +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | datasynchron | | +------------------+----------+--------------+------------------+ 记下`File`和`Position`字段的值,稍后在从服务器上使用

     三、从服务器(Slave)配置 1. 编辑MySQL配置文件 登录到从服务器,并编辑MySQL配置文件: bash sudo vi /etc/my.cnf 以下是配置文件的详细示例: ini 【mysqld】 MySQL服务基础配置 port=6306 MySQL服务监听端口(非默认3306,避免冲突) basedir=/usr/local/mysql MySQL安装根目录 datadir=/usr/local/mysql/data 数据库文件存储路径 socket=/usr/local/mysql/data/mysql.sock 本地连接使用的套接字文件 连接安全配置 max_connect_errors=10000 允许的最大连接错误次数(防暴力破解) skip-name-resolve 禁用DNS解析(提升连接速度,但要求授权使用IP而非主机名) 复制相关配置 server-id=2 唯一服务器标识(与主服务器不同) 以下配置在从服务器上设置,但通常不需要手动指定,因为从服务器会自动处理 master-host=192.168.1.xxx 主服务器IP地址(旧版配置方式,现可通过CHANGE MASTER TO指定) master-user=xxx 用于复制的用户名 master-passwor

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