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

阿里云服务器环境部署 四 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,且两者差异仅为主库新产生的事务。

相关文章:

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

安装MySQL 导入mysql镜像 docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar docker run --privilegedtrue --name mysql8 --restartunless-stopped -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/d…...

GPT-5 将免费向所有用户开放?

GPT-5 将免费向所有用户开放&#xff1f; 硅谷知名分析师 Ben Thompson 最近与 OpenAI CEO Sam Altman 进行了一场深度对谈&#xff0c;其中Sam Altman透漏GPT-5将免费向大家发放。 OpenAI 这波操作可不是一时冲动&#xff0c;而是被逼出来的。DeepSeek 这个新秀横空出世&am…...

web客户端存储,IndexDB相关讲解

IndexDB详细讲解 IndexedDB 是浏览器提供的一种底层 API,用于在客户端存储大量结构化数据。相比 Web Storage(localStorage/sessionStorage),它支持更复杂的数据结构、事务处理、索引查询等高级功能。以下是一个系统化的讲解: 一、核心概念 1、​数据库(Database)​ 每…...

excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果输出到json文件

import pandas as pd import json# 1. 读取 Excel 文件&#xff08;假设列名为 question 和 answer&#xff09; try:df pd.read_excel("input.xlsx", usecols["question", "answer"]) # 明确指定列 except Exception as e:print(f"读取文…...

项目日记 -云备份 -服务器配置信息模块

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【项目日记-云备份】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 代码已上传 gitee 目录 前言配置信息文件文件配置类getInstance 获得实例readConfigFile 读取配置信息文件 测试 #mermaid-svg-ewlCpjdOf0q0VTLI {font-family:…...

gralloc usage flags

下面这些示例主要说明了 gralloc usage flags 在图像处理和多媒体应用中如何影响性能和正确性。让我们逐个详细分析每个问题的 根因 和 修复方案&#xff0c;并深入解析 gralloc 标志对 缓存管理 和 数据流 的影响。 ✅ Example 1: 长曝光快照耗时异常 &#x1f4cc; 问题描述…...

Mysql配套测试之查询篇

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 条件查询简单测试&#xff1a; 1.查询英语成绩不及格的同学(<60) 2…...

mysql——第二课

学生表 CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,sex varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,c_id int(10) DEFAULT NULL,PRIMARY KEY (id),KEY c_id (c_id),CONSTR…...

Python网络编程入门

一.Socket 简称套接字&#xff0c;是进程之间通信的一个工具&#xff0c;好比现实生活中的插座&#xff0c;所有的家用电器要想工作都是基于插座进行&#xff0c;进程之间要想进行网络通信需要Socket&#xff0c;Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...

arm linux下的读写信号量rw_semphore的实现

本文基于arm linux 5.10来介绍内核中使用的读写信号量rw remphore的实现代码。 内核中信号量结构体struct rw_semaphore的定义在include/linux/rwsem.h 32位architectures下&#xff0c;结构体struct rw_semaphore中的count的使用如下&#xff1a; 先来看信号量的定义和初始化…...

完整的类在JVM中的生命周期详解

首先给出一个示例代码&#xff1a; 示例的目标是展示一个多功能的类结构&#xff0c;包含继承、接口实现、静态成员、本地方法、线程安全等特性&#xff0c;同时模拟一个简单的“计算器”场景&#xff0c;计算并管理数字。&#xff08;尽量将所有的 Java 组件和关键字都给出&am…...

Flutter中常用命令

1.检测flutter运行环境 flutter doctor 2.升级flutter flutter upgrade 3.查看flutter 版本 flutter --version 4.查看连接的设备 flutter devices 5.运行flutter项目 flutter run 或者在vscode中按FnF5 6.打包 flutter build apk //默认打release包 7.开…...

C#里使用libxl的数字格式

由于EXCEL里可以表示不同的数字格式, 比如表示货币数字时,与表示普通序号的数字就不一样。 还有科学计算表示的数字使用小数点位数与普通货币也不一样。 如下所示: 要使用这些格式, 下面创建一个例子来演示保存这些数字格式: private void button11_Click(object send…...

c#难点整理2

1.对象池的使用 就是先定义一系列的对象&#xff0c;用一个&#xff0c;调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…...

android adjust 卸载与重装监测

想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…...

自然语言处理(5)—— 中文分词

中文分词的基本原理及实现 1. 什么是词2. 基本原理3. 发展趋势&#xff1a;多数场景无需显式分词 信息处理的目标是使用计算机能够理解和产生自然语言。而自然语言理解和产生的前提是对语言能够做出全面的解析。 汉语词汇是语言中能够独立运用的最小的语言单位&#xff0c;是语…...

解锁物联网高效开发,Synaptics SYN43756E Wi-Fi 6E 芯片登场

Synaptics 的 SYN43756E 芯片是一款高性能的 Wi-Fi 6E 支持 11a/b/g/n/ac/ax 的物联网&#xff08;IoT&#xff09;SoC&#xff0c;具备多项先进特性&#xff0c;适用于多种应用场景&#xff0c;以下是其主要优势&#xff1a; 1. 广泛的应用场景 智慧家庭&#xff1a;支持多种…...

C++和标准库速成(十二)——练习

目录 练习1.1题目答案 练习1.2题目答案 练习1.3题目答案 练习1.4题目答案 练习1.5题目答案 练习1.6题目答案 参考 练习1.1 题目 修改下面的Employee结构体&#xff0c;将其放在一个名为HR的名称空间中。你必须对main()中的代码进行那些修改才能使用此新实现&#xff1f;此外&a…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…...

5、linux c 线程 - 上

【四】线程 1. 线程的创建 #include <pthread.h> ​ int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*routine)(void *), void *arg); pthread_t *thread&#xff1a;指向线程标识符的指针&#xff0c;用于存储新创建线程的 ID。 const p…...

2024年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)

2024 年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书&#xff08;四&#xff09;&#xff09; 背景描述&#xff1a;任务一&#xff1a;Hadoop 完全分布式安装配置&#xff08;25 分&#xff09;任务二&#xff1a;离线数据处理&#xff08;25 分&#xff0…...

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…...

dify创建第一个Agent

1、首先LLM模型必须支持 Function Calling 由于deepseek-R1本地化部署时还不支持&#xff0c;所以使用 qwq模型。 2、创建空白 Agent 3、为Agent添加工具 4、测试 当未添加时间工具时 询问 时间 如下 5、开启时间工具 询问如下...

⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree

图论入门【数据结构基础】&#xff1a;什么是树&#xff1f;如何表示树&#xff1f; 之前我们有分别讲解二叉树的三种遍历的相关代码实现&#xff1a; ⭐算法OJ⭐二叉树的前序遍历【树的遍历】&#xff08;C实现&#xff09;Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…...

深度解析 | Android 13 Launcher3分页指示器改造:横线变圆点实战指南

一、需求背景与技术挑战 在Android 13系统定制开发中&#xff0c;我们面临将Launcher3桌面从传统双层架构优化为现代单层布局的挑战。原生系统采用的分页横线指示器在视觉呈现上存在两点不足&#xff1a; 风格陈旧不符合Material You设计规范 空间占用较大影响屏幕利用率 通…...

2. 商城前端部署

商城客户端前端部署 https://gitee.com/newbee-ltd/newbee-mall-api-go 使用开源新蜂商城的前端&#xff0c;git clone到本地 然后在vscode终端依次输入下列指令&#xff08;配置好vue3相关环境的前提下&#xff09;&#xff1a; npm install npm i --legacy-peer-deps npm …...

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙&#xff08;OpenHarmony&#xff09;构建的分布式操作系统生态&#xff0c;旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务&#xff0c;覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…...

基于STM32进行FFT滤波并计算插值DA输出

文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话五、项目联想与扩展1. 倍频2. 降频3. 插值3.1 线性插值3.2 样条插值 一、前言背景 STM32 对 AD 采样信号进行快…...

【Oracle资源损坏类故障】:详细了解坏块

目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…...

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");...