阿里云服务器环境部署 四 MySQL主从配置

安装MySQL 
 

导入mysql镜像

docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar

docker run --privileged=true --name mysql8 --restart=unless-stopped -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/:/etc/mysql/conf.d -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -d mysql:latest

docker ps

在容器中登录mysql

docker exec -it mysql8 /bin/bash
 mysql -u root -p123456

对root用户进行本地授权和配置密码

use mysql

update user set host = '%' where user = 'root' and host='localhost';

grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;

select host,user from user where user = 'root';

flush privileges;

ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;



mysql> exit;
Bye
bash-4.4# exit;

安装mysql 客户端 
sudo yum install -y mysql


可以访问了
创建数据库

create database business_chatgpt;
 

导入表结构:

mysql -uroot -h172.16.108.44 -P3306 -p***** business_chatgpt < /opt/dockerinstall/mysql/table.sql

MySQL主从配置


由于担心单点的mysql会有风险,所以需要部署一个mysql 的slave
由于已经在44上部署了mysql,所以只能修改配置后在43上再部署一个mysql的从库

 

第一步:修复主库配置

你的现有主库容器 缺少关键的主从复制配置,需要补充以下内容:

1. 创建主库配置文件

在44宿主机 /usr/local/mysql/conf 目录下创建 my.cnf 文件:
 

[mysqld]
# 主库核心配置
# 主库唯一标识(必须)
server-id = 1
# 二进制日志配置(必须)
log-bin = mysql-bin
# 推荐使用ROW模式保证数据一致性
binlog_format = ROW# GTID 配置(MySQL 8 推荐)
# 开启全局事务标识
gtid_mode = ON
# 强制GTID一致性
enforce_gtid_consistency = ON# 允许所有IP连接(生产环境建议限制IP)
bind-address = 0.0.0.0
port = 3306# 日志管理
# 7天 日志生命周期
binlog_expire_logs_seconds = 604800 
# 单个binlog文件大小
max_binlog_size = 2G
# 每个连接binlog缓存
binlog_cache_size = 2M# 性能优化
# 平衡性能与可靠性
innodb_flush_log_at_trx_commit = 2
# 降低磁盘同步频率
sync_binlog = 1000

docker ps 



2. 重启主库容器
docker restart mysql8

 

第二步:创建主库复制账号
 

mysql -uroot -h172.16.108.44 -P3306 -p*****    // 登录mysql
 

-- 执行 SQL
CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'Replica*****';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

第三步:准备从库容器

在43服务器上

导入mysql镜像

docker load -i /data/dockerinstall/mysql/mysql-8.1.0.tar

1. 创建从库配置文件

mkdir -p /usr/local/mysql/{conf,data,logs,mysql-files}

chmod -R 777 /usr/local/mysql

在宿主机 /usr/local/mysql/conf 目录下创建 my.cnf

[mysqld]
# 必须全局唯一
server-id = 2
relay-log = relay-bin
read_only = ON
super_read_only = ON# 安全增强
skip_name_resolve = ON
log_bin_trust_function_creators = ON# 性能优化
innodb_buffer_pool_size = 1G  # 根据内存调整
sync_binlog = 1000
innodb_flush_log_at_trx_commit = 2



启动命令
 

docker run --privileged=true --name mysql8-slave --restart=unless-stopped -e MYSQL_ROOT_PASSWORD=***** -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/:/etc/mysql/conf.d -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -d mysql:latest

docker ps

1. 主库创建数据快照(主库机器)

docker exec mysql8 mysqldump -uroot -p****  --all-databases  --single-transaction  --master-data=2  --flush-logs  --hex-blob   --set-gtid-purged=ON  > master_full_$(date +%F).sql

scp master_full_2025-03-19.sql root@bigdata43:/data/dockerinstall/mysql/

3. 从库机器导入数据
 

# 导入数据
docker exec -i mysql8-slave mysql -uroot -p**** < /data/dockerinstall/mysql/master_full_2025-03-19.sql


 

四、配置主从复制

1. 获取主库连接信息
# 主库机器执行
docker exec mysql8 mysql -uroot -p**** -e "SHOW MASTER STATUS\G"

记录:

  • File: mysql-bin.00000X

  • Position: XXX

  • 或使用 GTID 自动定位
     

2. 配置复制通道(从库机器)
docker exec -it mysql8-slave mysql -uroot -p123456CHANGE MASTER TO
MASTER_HOST='172.16.108.44',
MASTER_PORT=3306,
MASTER_USER='replica',
MASTER_PASSWORD='Replica@1234',
MASTER_AUTO_POSITION=1,
MASTER_CONNECT_RETRY=10,
GET_MASTER_PUBLIC_KEY=1;--------------------------------------------------
遇到问题:
问题1:
ERROR 1777 (HY000): CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION = 1 cannot be executed because @@GLOBAL.GTID_MODE = OFF.
参考:Mysql8 MHA高可用搭建之主从复制配置-CSDN博客

1.在所有主从实例结构中执行:
set global ENFORCE_GTID_CONSISTENCY = WARN;
##说明,这是一个警告模式,如果有还没有执行完的sql
2.如果没有警告,所有实例中执行:
set global ENFORCE_GTID_CONSISTENCY = ON;
主:

从:

3.在所有实例中执行:
set global GTID_MODE = OFF_PERMISSIVE;

4.在所有实例中执行:
set global GTID_MODE = ON_PERMISSIVE;

5,在所有主从实例中执行,检查是否还有事务没有结束:
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
#注意value一定要为0

6.检查slave的binlog点位,如果还没有应用完binlog,则需等待
show slave status\G;

7.在所有实例中执行:
set global GTID_MODE = ON;

 

8、再次执行上面的sql就ok

------------------------------------------------------------------------------------------------------------

 

六、验证与监控
 



安装mysql 客户端 
sudo yum install -y mysql

1. 基础验证
docker exec mysql8-slave mysql -uroot -p123456 -e "SHOW SLAVE STATUS\G" | grep -E 'Running|Behind|Error'
期望输出:

2、在从库执行
SHOW SLAVE STATUS\G;

三、GTID 深度验证

1. 对比主从 GTID 集合
 

主库执行
SELECT @@GLOBAL.gtid_executed AS master_gtid;

从库执行
SELECT @@GLOBAL.gtid_executed AS slave_gtid;

正常情况
从库的 slave_gtid 应包含主库的 master_gtid,且两者差异仅为主库新产生的事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[RH342]iscsi配置与排错

[RH342]iscsi配置与排错 1. 服务端配置1.1 安装targetcli1.2 准备磁盘1.3 服务端配置1.4 防火墙配置 2. 客户端配置2.1 安装客户端软件2.2 配置客户端2.3 连接登录服务端2.4 挂载使用 3. 安全验证扩展3.1 服务端3.2 客户端 4. 常见的排错点4.1 服务端常见错误4.2 客户端常见错误…

服装零售行业数字化时代的业务与IT转型规划P111(111页PPT)(文末有下载方式)

服装零售行业数字化时代的业务与IT转型规划P111 详细资料请看本解读文章的最后内容。 随着数字化技术的迅猛发展&#xff0c;服装零售行业正经历着前所未有的变革。本文将对《服装零售行业数字化时代的业务与IT转型规划P111》进行详细解读&#xff0c;探讨未来几年内该行业的…

基于javaweb的SSM+Maven宠物领养宠物商城流浪动物管理系统与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

PostgreSQL 数据库中导入大量数据

在 PostgreSQL 数据库中导入大量数据,可根据数据来源和格式选择不同的方法。以下为你详细介绍几种常见的方式: 1. 使用 COPY 命令(适用于本地数据文件) COPY 命令是 PostgreSQL 内置的高效数据导入工具,适合处理本地的数据文件。 步骤 准备数据文件 确保你的数据文件格…

C++语法之命名空间二

A.h头文件中代码&#xff1a; namespace a {void 输出(); }; A.cpp源文件中代码&#xff1a; #include <iostream> #include "A.h" void a::输出() {std::cout << "A.h里的输出函数" << std::endl; } B.h头文件中代码&#xff1a; …

基于FPGA的DDS连续FFT 仿真验证

基于FPGA的 DDS连续FFT 仿真验证 1 摘要 本文聚焦 AMD LogiCORE IP Fast Fourier Transform (FFT) 核心,深入剖析其在 FPGA 设计中的应用。该 FFT 核心基于 Cooley - Tukey 算法,具备丰富特性,如支持多种数据精度、算术类型及灵活的运行时配置。文中详细介绍了其架构选项、…

美团Leaf分布式ID生成器使用教程:号段模式与Snowflake模式详解

引言 在分布式系统中&#xff0c;生成全局唯一ID是核心需求之一。美团开源的Leaf提供了两种分布式ID生成方案&#xff1a;号段模式&#xff08;高可用、依赖数据库&#xff09;和Snowflake模式&#xff08;高性能、去中心化&#xff09;。本文将手把手教你如何配置和使用这两种…

Swift 并发任务的协作式取消

在 Swift 并发&#xff08;Swift Concurrency&#xff09;中&#xff0c;任务&#xff08;Task&#xff09;不会被强行终止&#xff0c;而是采用**协作式取消&#xff08;cooperative cancellation&#xff09;**机制。这意味着任务会被标记为“已取消”&#xff0c;但是否真正…

大数据(1.1)纽约出租车大数据分析实战:从Hadoop到Azkaban的全链路解析与优化

目录 一、背景与数据价值‌ ‌二、技术选型与组件分工‌ ‌三、数据准备与预处理‌ 四、实战步骤详解‌ ‌1. 数据上传至HDFS ‌2. Hive数据建模与清洗‌ 4‌.2.1 建表语句&#xff08;分区表按年份&#xff09;‌&#xff1a; ‌4‌.2.2 数据清洗&#xff08;剔除无效…

代码随想录刷题day50|(回溯算法篇)131.分割回文串▲

目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见&#xff1a;代码随想录刷题day46|&#xff08;回溯算法篇&#xff09;77.组合-CSDN博客 二、分割回文…

VS Code PowerShell、Windows PowerShell、CMD 的区别与联系

VS Code PowerShell、Windows PowerShell、CMD 的区别与联系? VS Code PowerShell、Windows PowerShell、CMD 的区别与联系&#xff1a; 一、核心概念对比 名称 全称 类型 定位 VS Code PowerShell Visual Studio Code PowerShell 代码编辑器集成终端 开发/脚本编写…

关于Unity的CanvasRenderer报错

MissingReferenceException: The object of type ‘CanvasRenderer’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.UI.GraphicRaycaster.Raycast (UnityEng…

C++编译流程

编译器其实就是一个翻译器&#xff0c;把我们的文件内容翻译成机器能够看懂的指令&#xff0c;但如何合理翻译是核心。 C语言编译 需要经过以下几步&#xff1a; 词法分析&#xff1a;扫描代码&#xff0c;确定单词类型&#xff0c;比如是变量还是函数&#xff0c;是标识符还…

python学智能算法(八)|决策树

【1】引言 前序学习进程中&#xff0c;已经对KNN邻近算法有了探索&#xff0c;相关文章链接为&#xff1a; python学智能算法&#xff08;七&#xff09;|KNN邻近算法-CSDN博客 但KNN邻近算法有一个特点是&#xff1a;它在分类的时候&#xff0c;不能知晓每个类别内事物的具…

使用 OpenCV 拼接进行图像处理对比:以形态学操作为例

图像处理在计算机视觉中起着至关重要的作用&#xff0c;而 OpenCV 作为一个强大的图像处理库&#xff0c;提供了丰富的函数来实现各类图像处理任务。形态学操作&#xff08;Morphological Operations&#xff09;是其中常用的技术&#xff0c;尤其适用于二值图像的处理。常见的…

版本控制器Git ,Gitee如何连接Linux Gitee和Github区别

&#x1f4d6; 示例场景 假设你和朋友在开发一个「在线笔记网站」&#xff0c;代码需要频繁修改和协作&#xff1a; 只用本地文件管理 每次修改后手动复制文件&#xff0c;命名为 v1.html、v2.html 问题&#xff1a;无法追踪具体改动内容&#xff1b;多人修改易冲突&#xff1…

使用DeepSeek翻译英文科技论文,以MarkDown格式输出,使用Writage 3.3.1插件转换为Word文件

一、使用DeepSeek翻译英文科技论文&#xff0c;以MarkDown格式输出 以科技论文“Electrical Power System Sizing within the Numerical Propulsion System Simulation”为例。 关于Writage 3.3.1的进一步了解&#xff0c;可发送邮件至邮箱pyengine163.com. 首先&#xff0c;打…

【NPU 系列专栏 3.0 -- scale-out 和 scale-in 和 scale-up 和 scale-down

文章目录 Overview1. Scale-out 和 Scale-in (横向扩展/缩减)举例:AI SoC 中的 Scale-out 和 Scale-in2. Scale-up 和 Scale-down (纵向扩展/缩减)举例:AI SoC 中的 Scale-up 和 Scale-down对比总结Overview 本文会 以 AI SoC 为例 详细介绍什么是 scale-out 和 scale-i…

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

Spring Boot 集成 Quartz 实现定时任务&#xff08;Cron 表达式示例&#xff09; 前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Spring Boot 观察定时任务执行5. Quartz Cron 表达式详解6. 结论 前言 在 Spring Boot 项目中&#xff0c;我们经常…

智能汽车图像及视频处理方案,支持视频智能拍摄能力

美摄科技&#xff0c;作为智能汽车图像及视频处理领域的先行者&#xff0c;凭借其卓越的技术实力和前瞻性的设计理念&#xff0c;为全球智能汽车制造商带来了一场视觉盛宴的革新。我们自豪地推出——美摄科技智能汽车图像及视频处理方案&#xff0c;一个集高效性、智能化、画质…