已存大量数据的mysql库实现主从各种报错----解决方案

  • 背景
  • 何谓“先死后生”
  • 本文使用技术
  • 1、实施流程图
  • 2、实施
    • 2.1、数据库备份
    • 2.2、搭建Mysql的Master-Slave
      • 2.2.1、准备工作
      • 2.2.2、开始部署
      • 2.2.3、账号配置
      • 2.2.4、slave 同步配置
      • 2.2.5、验证
    • 2.3、Master做数据恢复
  • 结语

背景

计划对已有大量数据的mysql库的主从搭建,使用了常规先做数据同步,完成首次同步后,再进行主从配置,已失败告终;
过程出现了Error_code:1593、Error_code: 1062、Error_code:1033等主从start启动异常,有的code可以解决,有些code反复出现。耗费大量时间在研究解决问题;
于是思考,是不是方向错了,重新梳理流程,想出一个方案 “先死后生”,理论可以跳过这些问题的出现,觉得可行性很高,实施后,很快就成功了,方案与实施分享如下

何谓“先死后生”

备份后源数据库的数据,弄死源数据库,配置一个全新的主从,将备份的数据恢复到全新主上。

本文使用技术

mysql、docker
本文通篇是用例 docker 容器部署数据库,如果是主机部署数据库,学习思想即可,不需要看查实施过程。

1、实施流程图

在这里插入图片描述

2、实施

2.1、数据库备份

步骤一、进入mysql数据库容器
		在宿主机运行命令进行入mysql容器
		docker exec -it [容器id] /bin/bash

在这里插入图片描述

步骤二、备份数据库
		按数据库唯度备份,一个库备份一份sql
		mysqldump -u root -p dbname > dbname_backup.sql
		运行完成这条命令会提示输入root的密码

在这里插入图片描述

输入密码后,数据多的话,需要耐心待待,数据量大的情况生成备份sql文档是需要一些时间的

上图中生成的autoplat_backup.sql 这个数据库sql文档,如下图
在这里插入图片描述

步骤三、从容器中将sql文拷贝出来
退出容器,什么命令?   exit
docker ps 找到mysql容器
然后使用下面命令copy到当前目录下
docker cp [容器id]:/[sql文件路径] ./

在这里插入图片描述

有多个数据库就执行多次备份,方式多种多样,可以将多个sql起tar打包再docker cp出来也行
备份操作行告一段落

2.2、搭建Mysql的Master-Slave

2.2.1、准备工作

先准备三个文件
一个docker compose的mysql编排文件, 主从两个mysql的 my.cnf配置文件
如果不会docker compose的请先刷docker compose部署容器的文档:
【暂略】

1、编排文件mysql.yaml(主从都用这个部署)
version: '3'
services:
  mysql:
    restart: always
    image: mysql:5.7.38
    container_name: mysql-master   # master 、slave
    volumes:
      - /data/apps/mysql/mydir:/mydir
      - /data/apps/mysql/datadir:/var/lib/mysql
      - /data/apps/mysql/conf/my.cnf:/etc/my.cnf
      - /data/apps/mysql/source:/docker-entrypoint-initdb.d
    environment:
      - "MYSQL_ROOT_PASSWORD=qwer1234"
      - "MYSQL_DATABASE=testdb"
      - "TZ=Asia/Shanghai"
    ports:
      - 3306:3306
2、master my.cnf
#master节点的配置
[mysqld]
server-id=1    #设置服务id,需全局唯一  
log-bin=/var/lib/mysql/mysql-bin  #加入binlog配置,供从库读取  #binlog-do-db =test
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=performance_scheme
binlog-ignore-db=information_scheme
binlog_format=row
3、slave my.cnf
slave节点的配置
[mysqld]
server-id=2    #设置服务id,需全局唯一  
log-bin=/var/lib/mysql/mysql-bin  #加入binlog配置,供从库读取  #binlog-do-db =test
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=performance_scheme
binlog-ignore-db=information_scheme
binlog_format=row

2.2.2、开始部署

  • 1、配置my.cnf

    在主从上按照compose的my.cnf 目标创建一个目录

mkdir -p /data/apps/mysql/conf/
然后将my.cnf文档放到这个目录,注意主从对应放,别放反了
  • 2、运行容器

    在master服务器上将mysql_master.yaml(这个里面内容与slave的内容一样,只是yaml名称不一样)放到某个目录下,进入到这个目录,运行命令
    docker compose -f mysql_master.yaml up -d
    如下图,运行成功
    在这里插入图片描述
    在slave服务器上将mysql.yaml放到某个目录下,进入到这个目录,运行命令
    docker compose -f mysql.yaml up -d
    如下图,运行成功
    在这里插入图片描述

2.2.3、账号配置

master 创建同步账号
# 创建一个账号,%为任意ip能访问,可以指定ip,在%号添加IP即可,多IP,以逗号确认
create user 'slave'@'%' identified by "qwer1234";

#给所有库与表的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%';

#配置成功
FLUSH PRIVILEGES;

在这里插入图片描述

2.2.4、slave 同步配置

slave配置同步账号
stop slave;

CHANGE MASTER TO MASTER_HOST = '172.17.0.2', MASTER_USER = 'slave', MASTER_PASSWORD = 'qwer1234', MASTER_PORT = 3306, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;

start slave;

2.2.5、验证

在master中建一个库一个表,检查slave中是否也同步有了这个表
在这里插入图片描述
在这里插入图片描述

2.3、Master做数据恢复

1、建恢复库
库名称需要与备份时的一样
响应2.1 步骤二的备份,需要在master上建一个autoplat库

在这里插入图片描述

2、导致备份sql文件
使用docker cp 将autoplat_backup.sql文件导致master mysql容器
docker cp autoplat_backup.sql [容器id]:/

在这里插入图片描述
进入到master的容器

docker exec -it [容器id] /bin/bash
#运行恢复命令,会弹出mysql root账号的密码确认,输入密码,回归
mysql -u root -p autoplat < autoplat_backup.sql
#恢复需要一会,数据越多,越久,需要耐心

在这里插入图片描述

3、进入到master检查 autoplat数据
可见数据已经恢复

在这里插入图片描述

4、进入slave机器看数据同步
可见已经同步

在这里插入图片描述

结语

过程很艰辛,但成功的喜悦让嘴解始终压不住

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代&#xff0c;零售业务是充满活力和活力的业务领域之一。每天&#xff0c;由于销售运营和客户行为&#xff0c;它都会生成大量数据。因此&#xff0c;公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…

模电复习易错题

PN 结&#xff1a;PN 结是由 P 型半导体和 N 型半导体通过特殊工艺结合在一起形成的结构。P 型半导体中多子是空穴&#xff0c;N 型半导体中多子是电子。内建电场&#xff1a;在 PN 结形成时&#xff0c;由于 P 区和 N 区载流子浓度的差异&#xff0c;会在结区形成一个内建电场…

AI安全:从现实关切到未来展望

近年来&#xff0c;人工智能技术飞速发展&#xff0c;从简单的图像识别到生成对话&#xff0c;从自动驾驶到医疗诊断&#xff0c;AI技术正深刻改变着我们的生活。然而&#xff0c;伴随着这些进步&#xff0c;AI的安全性和可控性问题也日益凸显。这不仅涉及技术层面的挑战&#…

nfs网络文件系统

NFS(Network File system&#xff0c;网络文件系统)是由SUN公司研制的UNIX表示层协议&#xff0c;它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源&#xff0c;主要在unix系列操作系统上使用。在NFS的应用中&#xff0c;本地NFS的客户端应用可以…

mac终端配置-支持 git branch

mac 终端一般使用的是 zsh&#xff1b; 由于不想安装三方的软件&#xff0c;可以自行编写脚本实现一些效果&#xff1b; 最终效果如下&#xff0c;支持显示git 分支&#xff1a; git_branch(){branch"git branch 2>/dev/null | grep "^\*" | sed -e "…

tableau练习-制作30个图表

一、导入数据 1、导入数据 -添加-添加连接-到文件-excel格式用第一个excel导入&#xff0c;csv格式用第二个文本格式导入 2、连接数据 -从旁边这里直接拖到中间 标头连接 -日期若不一致需调节日期格式 3、保存数据 点击数据提取-再保存数据&#xff0c;保存为twbx格式 二、设计…

使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据

我是做汽车行业的&#xff0c;可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容&#xff0c;分析各种电动汽车口碑数据。 之前&#xff0c;我写过很多Python网络爬虫的案例&#xff0c;使用requests、selenium等技术采集数据&#xff0c;这次尝试去采集小米SU7在微博、汽车…

【HarmonyOS开发实战】使用animation 和 animateTo来制作按钮动画(实现点击按钮释出更多小按钮)

如果你想在页面中添加按钮来实现页面跳转或者其他操作&#xff0c;又觉得过多的按钮太占地方&#xff0c;造成界面不美观。 那么我们可以将多个按钮“压缩”到一个按钮中&#xff0c;如下 在开始开发前&#xff0c;我们先了解一下animation和animateTo的区别。 animation&am…

国家级资质!同驭汽车获得CNAS实验室认证

近日&#xff0c;同驭汽车科技顺利通过中国合格评定国家认可委员会&#xff08;简称CNAS&#xff09;评审&#xff0c;获得《中国合格评定国家认可委员会实验室认可证书》。这标志着同驭已建立国际标准的实验室管理体系&#xff0c;产品的试验与检测技术能力达到了国际认可的准…

选择使用whisper.cpp进行语音转文字

需要将一些wav格式的语音文件转成文字&#xff08;ASR&#xff0c;STT&#xff09;&#xff0c;接到这个任务后&#xff0c;首先上网搜索有没有现成免费的工具或服务可以使用。常用的关键字如“语音转文字 免费 在线”。 搜到的很多野鸡网站&#xff0c;都可以免注册免费提供短…

消息称三星正与 OpenAI 洽谈,有望令 Galaxy AI 整合ChatGPT,三星都要和chatgpt合作了,你会使用chatgpt了吗?

还不知道怎么订阅chatgpt4.o和国外app服务的同学&#xff0c;可以看这里&#xff1a;WildCard官方平台订阅chatgpt 11 月 25 日消息&#xff0c;金融分析师 Dan Nystedt 在 X 平台透露称 OpenAI 正在与三星电子洽谈合作计划&#xff0c;讨论将其 ChatGPT 引入三星 Galaxy AI 的…

candence: 常用的一些命令: Move / Mirror / Rotate / Spain / Fix / unFix / Flipdesign

常用的一些命令 一、 Move 移动 一个可移动一个&#xff0c;也可多个 移动器件 二、 Mirror 镜像 Mirror 就是top 和 bottom 层的器件进行相互转换 三、 Rotate 旋转 移动过程中旋转 四、旋转 Spain 不能在移动中旋转 可以一次旋转一个&#xff0c;也可多个 一次旋转…

【深度学习】【RKNN】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转rknnpytorch转onnxonnx转rkn…

Hadoop3.3.6集群安装

Hadoop3.3.6 三节点集群安装 准备工作 准备三台机器&#xff0c;大小为4c8g&#xff0c;主节点为 8c16g。并需要保证网络连通性&#xff0c;每台机器都相互ping一下 1、关闭网络防火墙 # 查看网络防火墙状态 sudo systemctl status firewalld # 立即停止 firewalld sudo sy…

计算机网络-GRE(通用路由封装协议)简介

昨天我们学习了VPN的基本概念&#xff0c;虚拟专用网络在当前企业总部与分支间广泛使用。常用的划分方法为基于协议层次有GRE VPN、IPSec VPN、L2TP VPN、PPTP VPN、SSL VPN等。其实我有考虑该怎么讲&#xff0c;因为在IP阶段好像虚拟专用网络讲得不深&#xff0c;在IE的阶段会…

Android 应用测试的各种环境问题记录(Instrumentation测试)

报错记录 failed to configure packages targetSdkVersion&#xff08;未解决&#xff09; failed to configure com.demo.test.SettingsActivityTest.testOnCreate_withNullSavedInstanceState: Package targetSdkVersion34 > maxSdkVersion32 java.lang.IllegalArgumentE…

计算机网络复习笔记(湖科大教书匠)

课程链接&#xff1a;【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 https://www.bilibili.com/video/BV1c4411d7jb/?p61&share_sourcecopy_web&vd_sourcecd12864239c2976e9f2bce4b307393f0 一、基础概念 信息交换方式 电路交换 电话交换机接通…

探索运维新视界,CMDB的3D机房功能深度解析

在数字化转型的浪潮中&#xff0c;数据中心作为企业信息架构的核心&#xff0c;其高效、智能的管理成为了企业竞争力的关键因素之一。3D机房作为这一趋势下的创新产物&#xff0c;正逐步改变着传统机房运维的面貌。本文将结合乐维CMDB&#xff0c;深入探讨3D机房的功能细节、应…

时序论文25|ShapeFormer: 用于多变量时间序列分类的Shapelet Transformer

论文标题&#xff1a;ShapeFormer: Shapelet Transformer for Multivariate Time Series Classification 论文链接&#xff1a;https://arxiv.org/abs/2405.14608 代码链接&#xff1a;https://github.com/xuanmay2701/shapeformer. 前言 本文面向的任务是多元时间序列分类…

Unity 设计模式-状态模式(State Pattern)详解

状态模式&#xff08;State Pattern&#xff09; 状态模式&#xff08;State Pattern&#xff09; 是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态发生改变时改变其行为。状态模式将与状态相关的行为封装在独立的状态类中&#xff0c;系统在运行时根据状态的变化…