当前位置: 首页 > news >正文

mysql--主从复制--部署

MySQL 主从复制部署教程

一、主节点(Master)配置

1. 创建目录结构

mkdir -p /usr/local/src/mysql_demo/master_replica/{logs,configFile,data}

2. 编写主节点的 MySQL 配置文件 my.cnf
路径:/usr/local/src/mysql_demo/master_replica/configFile/my.cnf

内容如下:

[mysqld]
# 基础配置
server-id=1                         # 唯一标识主服务器
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/src/mysql_demo/master_replica/data
socket=/tmp/mysql.sock# 日志配置
log-bin=/usr/local/src/mysql_demo/master_replica/logs/mysql-bin.log
log-error=/usr/local/src/mysql_demo/master_replica/logs/mysql-error.log
general_log_file=/usr/local/src/mysql_demo/master_replica/logs/mysql-general.log
slow_query_log_file=/usr/local/src/mysql_demo/master_replica/logs/mysql-slow.log
relay-log=/usr/local/src/mysql_demo/master_replica/logs/Relay.log
binlog-format=ROW                    # 二进制日志格式(推荐行格式)# 日志选项
general_log=1                        # 开启查询日志
slow_query_log=1                     # 开启慢查询日志
long_query_time=1                    # 慢查询阈值(超过1秒即记录)# 复制设置
log-bin-index=/usr/local/src/mysql_demo/master_replica/logs/mysql-bin.index
expire_logs_days=7                   # 二进制日志保存时间(7天)
max_binlog_size=100M
binlog-ignore-db=mysql,performance_schema,information_schema# 权限配置
skip-name-resolve                    # 跳过DNS解析,加快连接速度

3. 启动主节点 MySQL 服务
先关闭已存在的 MySQL 服务,重启主节点。

# 初始化数据库目录(如果是首次安装 MySQL)
mysqld --initialize-insecure --user=mysql --datadir=/usr/local/src/mysql_demo/master_replica/data# 启动 MySQL 服务
mysqld --defaults-file=/usr/local/src/mysql_demo/master_replica/configFile/my.cnf &

4. 创建复制用户
登录到 MySQL,创建用于主从同步的用户,并授予复制权限。

mysql -uroot -p# 创建复制用户
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
#建议写成这样--修改成msyql_native_password插件
CREATE USER 'repl_user'@'%' IDENTIFIED with BY msyql_native_password 'repl_password';# 授权复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';# 刷新权限表
FLUSH PRIVILEGES;#展示用户权限
show agtens for "username"@"host";# 查看主库状态,记录File和Position值8.4之前版本
SHOW MASTER STATUS;# 查看主库状态,记录File和Position值8.4之后版本
SHOW BINARY LOG STATUS

示例输出:
在这里插入图片描述
在这里插入图片描述

记下 File(如 mysql-bin.000008)和 Position(如 1191) 的值,后续配置从库时需要用到。


二、从节点(Slave)配置

1. 创建目录结构

mkdir -p /usr/local/src/mysql_demo/master_replica/{logs,configFile,data}

2. 编写从节点的 MySQL 配置文件 my.cnf
路径:/usr/local/src/mysql_demo/master_replica/configFile/my.cnf

内容如下:

[mysqld]
# 基础配置
server-id=2                         # 唯一标识从服务器
port=3307                           # 避免端口冲突
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/src/mysql_demo/master_replica/data
socket=/tmp/mysql_slave.sock# 日志配置
log-bin=/usr/local/src/mysql_demo/master_replica/logs/mysql-bin.log
log-error=/usr/local/src/mysql_demo/master_replica/logs/mysql-error.log
general_log_file=/usr/local/src/mysql_demo/master_replica/logs/mysql-general.log
slow_query_log_file=/usr/local/src/mysql_demo/master_replica/logs/mysql-slow.log
relay-log=/usr/local/src/mysql_demo/master_replica/logs/Relay.log
binlog-format=ROW                    # 二进制日志格式# 日志选项
general_log=1                        # 开启查询日志
slow_query_log=1                     # 开启慢查询日志
long_query_time=1                    # 慢查询阈值# 复制设置
log-bin-index=/usr/local/src/mysql_demo/master_replica/logs/mysql-bin.index
relay-log-index=/usr/local/src/mysql_demo/master_replica/logs/Relay.index
expire_logs_days=7                   # 二进制日志保存时间
max_binlog_size=100M
binlog-ignore-db=mysql,performance_schema,information_schema# 权限配置
skip-name-resolve                    # 跳过DNS解析

3. 启动从节点 MySQL 服务
先初始化数据目录并启动从节点 MySQL。

mysqld --initialize-insecure --user=mysql --datadir=/usr/local/src/mysql_demo/master_replica/datamysqld --defaults-file=/usr/local/src/mysql_demo/master_replica/configFile/my.cnf &

4. 配置复制关系
登录到从节点的 MySQL,设置主从复制。

mysql -uroot -p# 8.0.23之前版本设置主节点信息
CHANGE MASTER TO 
MASTER_HOST='主节点IP地址', 
MASTER_USER='repl_user', 
MASTER_PASSWORD='repl_password', 
MASTER_LOG_FILE='mysql-bin.000008',  # 主节点的二进制日志文件名
MASTER_LOG_POS=1191;                  # 主节点的二进制日志位置# 8.0.23之后版本设置主节点信息
CHANGE REPLICATION SOURCE TO 
SOURCE_HOST='192.168.121.134',
SOURCE_USER='master_replica',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='mysql-bin.000008',
SOURCE_LOG_POS=1191;# 8.0.22之前启动从节点
START SLAVE;# 8.0.22之后启动从节点
START REPLICA;# 8.0.22之前查看从节点状态
SHOW SLAVE STATUS\G;# 8.0.22之后查看从节点状态
SHOW REPLICA STATUS\G;#当配置有误时可执行下操作,然后重新配置从节点
#删除所有节点配置
stop replica;
reset replica all;

在这里插入图片描述
在这里插入图片描述

5. 验证复制状态
执行 SHOW SLAVE STATUS\G; 后,确认以下两项状态均为 Yes

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

三、测试主从复制

在主节点创建一个数据库并插入数据,观察从节点是否同步。

# 在主节点
mysql -uroot -p
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE demo (id INT PRIMARY KEY, value VARCHAR(50));
INSERT INTO demo VALUES (1, 'Hello from Master');# 在从节点查看同步结果
mysql -uroot -p
USE test_db;
SELECT * FROM demo;

如果从节点返回数据,即主从复制成功。

主服务器
在这里插入图片描述
从服务器
在这里插入图片描述


四、日志验证

查看日志目录 /usr/local/src/mysql_demo/master_replica/logs/,确认以下日志文件存在并正常记录日志:

mysql-bin.index
mysql-bin.log
mysql-error.log
mysql-general.log
mysql-slow.log
Relay.log

http://www.mrgr.cn/news/96170.html

相关文章:

  • 循环神经网络(RNN)
  • 大数据(2)Hadoop架构深度拆解:HDFS与MapReduce企业级实战与高阶调优
  • STM32F103_LL库+寄存器学习笔记08 - DMA串口发送,开启DMA传输完成中断
  • java程序员实用英语学习总结
  • STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
  • 网络安全法律法规简介
  • 锐捷EWEB路由器 timeout.php任意文件上传漏洞代码审计(DVB-2025-9003)
  • webpack配置详解+项目实战
  • pytorch+maskRcnn框架训练自己的模型以及模型导出ONXX格式供C++部署推理
  • 我的创作纪念日——三周年
  • unity 做一个圆形分比图
  • #C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考
  • 第十四届蓝桥杯省赛电子类单片机学习记录(客观题)
  • UDP视频传输中的丢包和播放花屏处理方法
  • Linux一步部署主DNS服务器
  • RGB-T综述
  • FALL靶场通关攻略
  • 【目标检测】【深度学习】【Pytorch版本】YOLOV1模型算法详解
  • Springbean(二)@Component及其派生注解自动注入(2)使用注意和加载问题
  • HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App