MySQL数据库迁移与备份实录

news2024/9/20 5:46:52

这里写目录标题

    • 事情起因的概述
    • 查看磁盘空间使用情况
      • 为了进一步的明确宕机原因,查看MySQL日志信息进一步排查
    • 如何针对磁盘空间不足进行挂载区域的修改以及数据的迁移与备份
      • 分析与梳理
      • 如何修改MySQL数据卷的挂载位置
        • 停止MySQL服务
        • 备份 MySQL 配置文件
        • 迁移 MySQL 数据目录
          • 创建新目录
          • 迁移数据
          • 修改权限
        • 修改 MySQL 配置文件
          • 修改 `my.cnf` 文件
        • 更新 SELinux(如果启用)-------------这一步是可选的
        • 重新启动 MySQL 服务
        • 检查 MySQL 服务状态
        • 验证迁移结果
        • 删除旧的数据目录
      • 介绍一下使用`mysqldump` 进行备份
      • 传统的备份方式
      • 使用DataGrip使用脚本文件进行数据的恢复

事情起因的概述

由于公司系统服务进行升级,需要进行开发测试环境分离。对应绩效基线产品服务需要单独部署,但是很不幸的是,当我使用备份的SQL文件进行对开发数据库数据恢复时候出现了MySQL数据库直接挂掉了。

5f756c87eec471d1758d444ba9b1d2e8

image-20240919221113093

通过查看日志,发现MySQL服务进行多次启动失败并且进入了 “start-limit” 状态,结合AI大模型提供的分析思路存在以下几种可能性:

image-20240919221318258

经过分析之后,最有可能就是磁盘空间不足,导致4G左右SQL数据库挂载不上导致数据库宕机。

查看磁盘空间使用情况

df -h

通过查看磁盘空间的使用情况得知,需要进行修改MySQL的默认数据卷挂载位置,在本次的物理机资源中,默认的根路径资源已经全部使用完,需要将资源的挂载放在空间相对充裕的home路径之下。

image-20240919221607049

为了进一步的明确宕机原因,查看MySQL日志信息进一步排查

本次MySQL的日志存放位置是在 /var/log 目录之下,进一步查看具体的信息

image-20240919222521427

可以从下图中看出,由于挂载空间不足,已经无法支撑数据临时文件的写入导致最终MySQL服务的宕机。

image-20240919222703247

如何针对磁盘空间不足进行挂载区域的修改以及数据的迁移与备份

分析与梳理

首先经过前面的分析,已经得出是由于MySQL使用的数据卷挂载默认是在根目录下,根目录的空间不足导致本次服务的宕机,现在需要修改将数据卷挂载迁移到空间相对充裕的home路径下,以及完成对数据库中开发库的数据备份。

如何修改MySQL数据卷的挂载位置

这里有一点需要注意就是直接可以进行对MySQL默认的数据卷迁移到别的位置,因此可以不用对数据执行mysqldump 进行备份,等迁移卷介绍完再说说如何使用mysqldump 进行备份。

停止MySQL服务

这一步操作其实如果你的MySQL以及宕机了可以省略,因为以及停止了。。。

systemctl stop mysqld
备份 MySQL 配置文件
mkdir -p /home/mysql-backup
cp /etc/my.cnf /home/mysql-backup/my.cnf.bak

image-20240919223722961

迁移 MySQL 数据目录
创建新目录

/dev/mapper/centos-home 上创建一个新目录,专门用于存放 MySQL 数据。

mkdir -p /home/mysql-data
迁移数据

现有的 MySQL 数据目录(通常位于 /var/lib/mysql)迁移到新目录 /home/mysql-data

rsync -avz /var/lib/mysql/ /home/mysql-data/  #rsync 是一个可靠的文件传输工具,它会保留文件权限和时间戳,同时进行安全的复制。
修改权限

确保 MySQL 数据目录的权限和所有权正确:

chown -R mysql:mysql /home/mysql-data
chmod 750 /home/mysql-data
修改 MySQL 配置文件
修改 my.cnf 文件

编辑 MySQL 的配置文件 /etc/my.cnf,将 datadir 路径指向新目录 /home/mysql-data

[mysqld]
datadir=/home/mysql-data
socket=/home/mysql-data/mysql.sock

image-20240919224504661

image-20240919224519617

更新 SELinux(如果启用)-------------这一步是可选的

如果系统启用了 SELinux,可能需要更新文件上下文。使用以下命令让 SELinux 允许 MySQL 在新位置运行:

semanage fcontext -a -t mysqld_db_t "/home/mysql-data(/.*)?"
restorecon -Rv /home/mysql-data

如果没有 semanage 命令,安装它:

yum install policycoreutils-python
重新启动 MySQL 服务
systemctl start mysqld
检查 MySQL 服务状态
systemctl status mysqld

image-20240919224734735

验证迁移结果

使用命令,查看默认的数据库配置文件

grep socket /etc/my.cnf

image-20240919230301622

mysql -u root -p --socket=/home/mysql-data/mysql.sock -e "SHOW VARIABLES LIKE 'datadir';"
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"

除了可以使用上述命令查看配置位置,也可以看看新建的数据库是不是在当前目录下,可以看到存在

image-20240919230353664

或者我们这里可以反推一下查看一下原先默认位置的数据卷信息是否有新建数据库信息,经过查看并没有新建的数据库信息

image-20240919230556767

或者我们也可以查看一下如何现在卷的挂载情况,可以明显的看到home路径的磁盘使用率上去了,根路径的磁盘使用率下来了

image-20240919230727327

删除旧的数据目录
rm -rf /var/lib/mysql

image-20240919230855506

介绍一下使用mysqldump 进行备份

传统的备份方式

由于公司规章制度的限制,不能使用破解版navicate进行数据库迁移,因此本次使用mysqldump进行数据的迁移与备份

全量备份的命令展示

mysqldump -u root --all-databases > /home/databases.sql

这里有一个需要注意的点是如果数据库的配置文件my.cnf。位置做过个性化修改,因此再备份时候需要进行个性化适配。如果数据库没有进行个性化配置,如果你想备份某个库信息直接使用下述命令示例即可:

mysqldump -u root xxxxx > /home/xxxxx.sql

由于110数据库进行个性化配置,所以上述命令执行就会出现:

image-20240919154913388

因此需要查看一下my.cnf配置文件的位置:

grep socket /etc/my.cnf

image-20240919154958602

使用下述命令进行备份SQL文件的生成:

mysqldump -u root -p --socket=/data/mysql/mysql.sock xxxx > /home/xxxx.sql

# 这里需要注意一下的就是information_schema和performance_schema虽然是系统自带的只读库在四个自带库的其中两个,使用下面的命令备份得不到完成的库信息,只能使用别的命令进行备份得到结构信息,所以只需要备份自带的mysql、sys 这两个库信息就可以了
mysqldump -u root -p information_schema > /home/mysql-backup/information_schema.sql

mysqldump -u root -p mysql > /home/mysql-backup/mysql.sql

mysqldump -u root -p performance_schema > /home/mysql-backup/performance_schema.sql

mysqldump -u root -p sys > /home/mysql-backup/sys.sql

从下面的文件大小也能看出来information_schema和performance_schema 这两个是备份失败的

image-20240919231653132

使用这个命令之后会提示你输入数据库对应的密码(输入完密码之后会进行备份文件的生成,生成完成之后会得到下述图片中的脚本文件信息):

image-20240919231809227

使用DataGrip使用脚本文件进行数据的恢复

选择目标库之后使用对应下载好的SQL脚本进行数据的备份:

image-20240919231900123

可以在控制台中看到具体的备份进度和详细的日志信息

image-20240919155401432

等待备份文件执行完成就可以得到对应的备份开发数据库。

但是使用上述方式生成的数据库备份信息不存在数据库的函数相关信息

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

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

相关文章

MTK zephyr平台:USB升级、枚举流程

一、USB升级流程 通过代码及log分析,当前平台升级过程在PL阶段进行 USB download相关代码 mtk/modules/hal/boot/preloader/platform/flashc/ mtk/modules/hal/boot/preloader/platform/board_name/flash/ mtk/modules/hal/boot/preloader/platform/board_name/src/drive…

【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新

应对数字化与可持续发展的双重挑战,开放标准是关键 在当今快速变化的商业环境中,企业不仅需要通过数字化转型提升竞争力,还面临日益严格的可持续发展要求。开放标准正在成为企业破解这一双重挑战的核心工具。The Open Group 2024生态系统架构…

智能BI项目第四期

开发图表管理功能 规划思路 首先需要做一个列表页。后端已经在星球提供了一个基础的万能项目模板,包含增删改查接口,我们只需要在此基础上进行定制化开发即可。所以本期后端的开发量不多,只需要复用即可,主要是前端。 规划功能…

【IPV6从入门到起飞】5-4 IPV6+Home Assistant(ESP32+MQTT+ILI9488)远程留言墙

IPV6Home Assistant[ESP32MQTTILI9488]远程留言墙 1 背景2 Home Assistant 配置2-1 配置 yaml2-2 效果 3 ESP32 配置3-1 使用 TFF_eSPI 库3-2 修改默认的SPI屏幕配置文件3-3 接线3-4 ESP32 工程代码 4 测试4-1 留言板设置内容4-2 ESP32 屏幕显示 5 后记 1 背景 在前面我们的几…

自动驾驶中的决策规划技术分享--轻舟智航

文章目录 0.概述:1 导航模块2 决策模块2.1 车道决策2.2 障碍物决策 3 轨迹规划3.1 时空分离规划3.2 时空联合规划 4 对比 0.概述: 李仁杰,轻舟智航规划算法负责人,自动驾驶决策与规划技术专家。 在自动驾驶系统中,决策…

Win10 录屏秘籍大公开:从新手到高手的进阶之路

之前因为某些原因不方便到客户那里进行软件培训,我们就发现录屏讲解供客户随时查看的方式好像更有效果。这次我就介绍一些能够实现win10怎么录屏操作的工具讲解。 1.福昕录屏大师 链接:www.foxitsoftware.cn/REC/ 这个工具是一款专业的电脑录屏软件&a…

SVN泄露 CTFHUB 解题笔记

参考大佬链接CTFHub | SVN泄露_ctfhubsvn泄露-CSDN博客 先下载插件 然后把GIT;里面的代码 乱盘上去 python2 不知道需不需要 先装了 再说。。。我的是裸机~ 开始作妖模式 Ubuntu 22.10 | Installati.one 上面一行的代码 链接 下面 插件 GITHUB页面下面的代码 d…

企业网络安全关键:防御措施和应急响应

感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 什么是网络安全常见的网络安全威胁病毒和恶意软件网络钓鱼拒绝服务攻击中间人攻击社会工程学 基本的网络安全措施强密码策略双因素认证安装和更新防病毒软件定期备份 高级的网络安全方…

Java-面向对象编程(基础部分)

类和对象的区别和联系 类:类是封装对象的属性和行为的载体,在Java语言中对象的属性以成员变量的形式存在,而对象的方法以成员方法的形式存在。 对象:Java是面向对象的程序设计语言,对象是由类抽象出来的,…

使用 MobaXterm 远程连接 Linux 虚拟机并实现文件传输

文章目录 前言一、什么是 MobaXterm二 、MobaXterm 安装三、使用 MobaXterm 远程连接 Linux 虚拟机1. 准备工作2. 创建 SSH 连接3. 登录虚拟机 四、使用 MobaXterm 进行文件传输总结 前言 在日常开发和运维中,Windows 用户经常需要通过远程连接到 Linux 服务器进行…

链式栈讲解

文章目录 🍊自我介绍🍊链式栈入栈和出栈linkstack.hlinkstack.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是小珑也要…

UBUNTU20.04安装CH384串口卡驱动

继续上文:统信UOS安装CH384串口卡驱动-CSDN博客 统信UOS系统成功安装CH384串口驱动后,继续在ubuntu20.04下安装驱动,发现一直报错,原因是内核驱动不一致。 解决办法: 1. 下载最新的驱动。CH35XCH384驱动源文件资源-C…

【WPF】02 按钮控件圆角配置及状态切换

按钮圆角 先从工具箱里拖进来一个Button控件&#xff0c;然后对这个按钮进行美化。 首先在 xaml 里按钮控件部分 添加如下代码&#xff1a; <Button x:Name"btnLogin" Content"登录" HorizontalAlignment"Center" Margin"0,399,0,0&q…

报错合计-1

向开发描述&#xff1a;先勾选一个病灶后复制&#xff0c;控制台报错 报错类型查询后为前端DOM节点相关报错&#xff0c;提给前端开发 报错解释&#xff1a; TypeError: Failed to execute selectNode on Range: parameter 1 is not of type Node 这个错误表明你尝试使用 Range…

【机器学习】:深潜智能的底层逻辑、前沿探索与未来展望】

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 在科技的浩瀚星空中&#xff0c;机器学习犹如一颗璀璨的新星&#xff0c;以其独特的魅力和无限潜力&#xff0c;引领着我们向智能的深处探索。今天&#xff0c;我们将一同踏上这场深度之旅&#xff0c;不仅解析…

AI时代,服务器厂商能否打破薄利的命运?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 AI大模型正在引发新一轮的“算力焦渴”。 近日&#xff0c;OpenAI刚发布的o1大模型再次刷新了大模型能力的上限。对比上一次迭代的版本&#xff0c;o1的推理能力全方位“吊打”了GPT-4o。更优秀的能力&#xff0c;来自与o1将思维…

Flink官方文档

Flink官方文档&#xff08;全面、详细&#xff09;&#xff1a;https://nightlies.apache.org/flink/flink-docs-master/zh/

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a&#xff0c;编写一个程序检测a信号的上升沿给出指示信号rise&#xff0c;当a信号出现下降沿时给出指示信号down。 注&#xff1a;rise,down应为单脉冲信号&#xff0c;在相应边沿出现时的下一个时钟为高&#xff0c;之后恢复到0&#xff0…

116页PPT麦肯锡方法详解-用简单的方法做复杂的事

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《116页PPT麦肯锡方法详解-用简单的方法做复杂的事》资料&#xff0c;欢迎大家文末扫码下载学习。 以下是在实际工作中应用麦肯锡问题解决法的具体方式&#xff1a; 一、项目管理与流程优化领域 界定问题 …