Centos 实现 MySql 8.0.40 主从配置
MySql 版本:8.0.40
服务器:10.120.75.50,10.120.75.51(共两台)

1. 配置主服务器(10.120.75.50)
1.1 编辑 MySQL 配置文件
首先,登录到主服务器,编辑 MySQL 配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf)。
vim /etc/my.cnf
[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 服务运行用户(需与系统用户一致)
# 复制相关配置
# skip-grant-tables          # 跳过权限验证(谨慎使用,仅用于密码恢复)
skip-name-resolve            # 禁用 DNS 解析(加快连接速度,但禁用主机名验证)
# 唯一服务器标识(主从复制必须唯一)
server-id = 1               
# 二进制日志配置(复制和恢复的核心)
log-bin = mysql-bin          # 启用二进制日志(文件名前缀)
binlog-do-db = datasynchron # 仅同步指定数据库(若需全库同步,删除此行)
# 数据包与通信
max_allowed_packet=512M      # 允许的最大数据包大小(大文件传输需调大)
# GTID 配置(增强复制可靠性)
gtid_mode = ON               # 启用全局事务标识符
enforce_gtid_consistency = ON # 强制 GTID 一致性(禁止非事务性操作)
# 二进制日志格式(ROW 模式记录行级变化,推荐用于复制)
binlog_format = ROW 
# 日志清理策略(自动清理 7 天前的二进制日志)
binlog_expire_logs_seconds = 604800  # 7 天(单位:秒)
[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)
1.2 重启 MySQL 服务
配置完毕后,重启 MySQL 服务使配置生效:
sudo systemctl restart mysql
或手动关闭后启动
pkill mysqld
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
1.3 创建复制账号
在主服务器上创建一个用于复制的 MySQL 用户:
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; #生产环境禁止这样使用
CREATE USER 'replication_user'@'specific_ip' IDENTIFIED BY 'password' REQUIRE SSL; #产环境使用,强制使用 SSL 加密
-- 授予全局复制权限
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'specific_ip';
#刷新权限
FLUSH PRIVILEGES;
1.4 获取二进制日志文件和位置
运行以下命令,记录当前二进制日志文件和位置,这些信息会在从服务器上配置时使用。
SHOW MASTER STATUS;
例如,您可能会得到如下输出:
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107      | your_database|                  |
+------------------+----------+--------------+------------------+
记下 File 和 Position 字段的值,稍后在从服务器上使用。
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.00003 |    157   | datasynchron |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
2. 配置从服务器(10.120.75.51)
2.1 编辑 MySQL 配置文件
登录到从服务器,编辑 MySQL 配置文件:
sudo vi /etc/my.cnf
[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而非主机名)
# 字符集与存储引擎
character-set-server=utf8mb4 # 设置默认字符集(支持emoji及扩展字符)
default-storage-engine=INNODB # 设置默认存储引擎
# 主从复制相关配置
server-id = 100              # 服务器唯一标识(主从节点必须不同)
relay-log = mysql-relay-bin  # 中继日志文件(用于主从同步)
log-bin = mysql-bin          # 二进制日志文件(记录所有更改数据的SQL)
# GTID(全局事务标识)配置(用于增强主从复制可靠性)
gtid_mode = ON               # 启用GTID模式
enforce-gtid-consistency = ON # 强制GTID一致性(防止非事务性操作破坏复制)
# 性能与网络配置
max_allowed_packet=512M      # 允许的最大数据包大小(处理大字段查询/传输)
binlog-do-db = datasynchron  # 指定需要同步的数据库(主从复制过滤)
[client]
# 客户端连接配置
port=6306                    # 客户端连接端口
socket=/usr/local/mysql/data/mysql.sock # 客户端使用的套接字文件
default-character-set=utf8mb4 # 设置客户端默认字符集
2.2 重启 MySQL 服务
配置完毕后,重启 MySQL 服务使配置生效:
sudo systemctl restart mysql
2.3 配置从服务器的主服务器信息
在从库停止复制并重置状态:
STOP REPLICA;
RESET REPLICA;
在从服务器上,运行以下命令来配置主服务器的信息:
CHANGE MASTER TO
  MASTER_HOST='10.120.75.50',			# 主服务器的IP地址
  MASTER_USER='replication_user',	 	# 主服务器上创建的复制账号
  MASTER_PASSWORD='your_password',  	# 替换为实际密码
  MASTER_LOG_FILE='mysql-bin.000003', 	# 主库当前日志文件
  MASTER_LOG_POS=197;                	# 主库当前日志位置
确保将 MASTER_LOG_FILE 和 MASTER_LOG_POS 设置为从主服务器上获取的值。
2.4 启动从服务器复制进程
运行以下命令启动复制:
start replica;
2.5 检查复制状态
通过以下命令检查从服务器的复制状态:
SHOW REPLICA STATUS\G
确保 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes,这表示主从复制已经正常运行。
3. 测试主从复制
在主服务器上插入数据,检查从服务器是否同步:
INSERT INTO your_database.table_name (column1, column2) VALUES ('value1', 'value2');
然后,在从服务器上查询是否同步:
SELECT * FROM your_database.table_name;
如果从服务器正确同步数据,则表示主从复制已成功配置。
4. 解决常见问题
- 网络问题:确保从服务器能访问主服务器,且防火墙允许 MySQL 端口(通常是 3306)的连接。
- 复制延迟:如果出现复制延迟,可以检查 SHOW SLAVE STATUS输出中的Seconds_Behind_Master字段,查看是否存在延迟。
- 权限问题:确保在主服务器上创建的复制账号具有正确的权限。
通过这些步骤,您就可以成功配置 MySQL 主从复制。
Centos 实现 MySql 8.0.40 主从配置的更多相关文章
- macOS下MySQL 8.0 安装与配置教程
		一.前言 1.本教程主要内容 适用Homebrew安装MySQL MySQL 8.0 基础适用于配置 MySQL shell管理常用语法示例(用户.权限等) MySQL字符编码配置 MySQL远程访问 ... 
- Docker安装mysql镜像并进行主从配置
		Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ... 
- mysql 5.0.46安装配置
		http://os.chinaunix.net/a2008/0801/986/000000986346.shtml RPM包和源码包存放位置 /usr/local/src 源码包编译安装位置(pref ... 
- mysql 安装及卸载 主从配置
		1.查询rpm -qa | grep mysql* 组件 出现类似安装包 mysql-server-5.1.71-1.el6.x86_64 mysql-libs-5.1.71-1.el6.x86_64 ... 
- mysql双主互为主从配置
		在使用双主互为主从的模式前提是互为主从的两个数据库,表的主键必须是自增的. 环境不多说了 ,多台mysql单实例或单台多实例都可以.多实例的配置请参考:https://www.cnblogs.com/ ... 
- mysql8.0.30主从配置
		安装包下载地址: https://downloads.mysql.com/archives/community/ 1. 解压介质包: # tar xf mysql-8.0.30-linux-glibc ... 
- CentOS 下 MySQL 8.0 安装部署,超详细!
		点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Mysql8.0安装 (YUM方式) 首先删除系统默认或 ... 
- MySql集群FAQ----mysql主从配置与集群区别、集群中需要多少台计算机呢?为什么? 等
		抽取一部分显示在这里,如下, What's the difference in using Clustervs using replication? 在复制系统中,一个MySQL主服务器会更新一个或多 ... 
- mysql 8.0.17 安装配置方法图文教程
		1.URL:https://www.jb51.net/article/167782.htm 2.装好之后需要使用add user中的用户名和密码登录(之前安装数据库时出现的) 使用navicat连接时 ... 
- CentOS Mysql  5.1.73  主从配置
		---------------------------------------------- 1 修改my.cnf ------------------------------------------ ... 
随机推荐
- 共促数字经济高质量发展,天翼云出席2024 IDC中国年度盛典!
			9月11日,2024 IDC中国年度盛典暨颁奖典礼在上海盛大启幕.本次峰会以「AI时刻,欢迎来到下一个大事件」为主题,汇聚行业专家.意见领袖,深度探讨生成式AI.中国企业出海.创新业务模式.科技可持续 ... 
- Nmap 概述及端口状态解析
			Nmap 概述及端口状态解析 Nmap概述 Nmap是一款功能强大的网络探测和安全扫描工具,它允许系统管理员和网络安全专家对网络进行详尽的扫描,以获取关于网络主机及其所提供服务的详细信息. Nmap不 ... 
- [记录点滴] 小心 Hadoop Speculative 调度策略
			[记录点滴] 小心 Hadoop Speculative 调度策略 目录 [记录点滴] 小心 Hadoop Speculative 调度策略 [0x00] 摘要 [0x01] 缘由 [0x02] 代码 ... 
- Linux中如何将txt文件转为png格式
			Linux中如何将txt文件转为png格式 linux将txt文件转为png格式如果文本中没有中文,使用enscript,如果文本包含中文,使用paps命令.但是实际使用中,paps部分版本也不支持中 ... 
- 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
			一.基础原则 1️⃣ 说人话最重要 "不用专业术语,就像和朋友聊天一样描述需求". ️ 错误示范:"请用SWOT分析法输出新能源汽车行业报告". 正确示范:&q ... 
- 克鲁斯焊机GL 270引弧困难维修
			克鲁斯焊机维修: 对于客户而言,其受益之处在于所有的机械手系统部件,从机械手控制.工件.定位器.传感器到电源和焊枪,都是由一家供应商开发和制造的.而诸如熔化极惰性气体/活性气体保护双丝焊接技术.等离子 ... 
- Docker - 在docker中部署Nginx
			1.docker search 查找ngix 2.docker pull下载镜像 3.查看镜像列表 4.docker run启动容器 5.测试nginx容器是否启动成功 1.docker search ... 
- 百万架构师第四十七课:并发编程的原理(二)|JavaGuide
			原文链接 JavaGuide <并发编程的艺术> 并发编程的实现原理 目标 上节课内容回顾 synchronized 原理分析 wait 和 notify Lock 同步锁 回顾 原子性 ... 
- go 组合函数 Collection
			我们经常需要程序在数据集上执行操作,比如选择满足给定条件的所有项,或者将所有的项通过一个自定义函数映射到一个新的集合上. 在某些语言中,会习惯使用泛型. Go 不支持泛型,在 Go 中,当你的程序或者 ... 
- Django实战项目-学习任务系统-需求说明
			一,需求说明 在我最近的阅读中,我深深被一些关于智能或系统的小说吸引.这些小说的主角意外获得某种神秘的智能或系统,然后通过完成系统发布的各种任务,逐渐提升自己的知识和能力.即使是普通的屌丝,也能在系统 ... 
