MySQL数据库迁移与备份实录

这里写目录标题

    • 事情起因的概述
    • 查看磁盘空间使用情况
      • 为了进一步的明确宕机原因,查看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.sqlmysqldump -u root -p mysql > /home/mysql-backup/mysql.sqlmysqldump -u root -p performance_schema > /home/mysql-backup/performance_schema.sqlmysqldump -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.xdnf.cn/news/144057.html

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

相关文章

info 命令:查看命令手册

一、命令简介 在 Linux 系统中,可以使用 man​ 查看普通的帮助手册。还可以使用 info​ 命令阅读 Info 格式的文档。 ​info​ 文档的特点:大量使用超链接,通过方向键将光标移动到链接的文字,按下回车键,就可以切换到…

新发布的OpenAI o1生成式AI模型在强化学习方面迈出了重要的一步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

ROS第五梯:ROS+VSCode+C++单步调试

解决问题:在ROS项目中进行断点调试。 第一步:创建一个ROS项目或者打开一个现有的ROS项目。 第二步:修改c_cpp_properties.json 增加一段命令: "compileCommands": "${workspaceFolder}/build/compile_commands.json"第三…

[Python]案例驱动最佳入门:Python数据可视化在气候研究中的应用

在全球气候问题日益受到关注的今天,气温变化成为了科学家、政府、公众讨论的热门话题。然而,全球气温究竟是如何变化的?我们能通过数据洞察到哪些趋势?本文将通过真实模拟的气温数据,结合Python数据分析和可视化技术&a…

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(3)】

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(3)】 1、前言说明2、流程说明3、现场提交(线下)4、网上提交1-起诉书样例2-起诉书编写(1)原告信息:&…

如何将MySQL卸载干净(win11)

相信点进来的你肯定是遇到了这个问题,那就是在安装MySQL的时候操作错误,最后结果不是自己想要的。卸载重新安装又发现安装不了。其实最主要的原因就是没有将MySQL卸载干净,那么如何把MySQL卸载干净?下面本篇文章就来给大家一步步介…

sensitive-word 敏感词 v0.20.0 数字全部匹配,而不是部分匹配

敏感词系列 sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word-admin v1.3.0 发布 如何支持分布式部署? 01-开源敏感词工具入门使用 02-如何实现一个敏感词工具?违禁词实现思路梳理 03-敏感词之 StopWord 停止词优化与特殊符号 04-…

Matlab进行频率切片小波变换

Matlab进行频率切片小波变换(FSWT)源代码,将一维信号生成时频图。 输入信号可以是任何一维信号,心电信号、脑电信号、地震波形、电流电压数据等。 相比连续小波变换(CWT),频率切片小波变换(Frequency Slice Wavelet Transform,FSWT)是一种更具…

计算机毕业设计hadoop+spark知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

《HadoopSpark知网文献论文推荐系统》开题报告 一、研究背景及意义 随着互联网技术的迅猛发展和大数据时代的到来,学术文献的数量呈爆炸式增长,用户面临着严重的信息过载问题。如何高效地从海量文献中筛选出用户感兴趣的论文,成为当前学术界…

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后,请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作: systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

Parasoft助力Joby Aviation符合DO-178B标准

Joby Aviation,这家成立于2009年的美国高科技企业,以其对电动垂直起降(eVTOL)技术的深刻洞察与不懈追求,正引领着全球空中出行领域的革新。作为该领域的先驱者,Joby Aviation专注于研发并商业化运营其革命性…

蓝桥杯嵌入式客观题合集

十四届模拟赛二客观题 解析:STM32微控制器的I/O端口寄存器必须按32位字被访问 解析:微分电路能将三角波转换为方波;积分电路能将方波转换为三角波 解析:放大电路的本质是能量的控制与转换 解析:具有n个节点&#xff0c…

Ansible——Playbook基本功能???

文章目录 一、Ansible Playbook介绍1、Playbook的简单组成1)“play”2)“task”3)“playbook” 2、Playbook与ad-hoc简单对比区别联系 3、YAML文件语法:---以及多个---??使用 include 指令 1. 基本结构2. 数…

Java入门:09.Java中三大特性(封装、继承、多态)02

2 继承 需要两个类才能实现继承的效果。 比如:类A 继承 类B A类 称为 子类 , 衍生类,派生类 B类 称为 父类,基类,超类 继承的作用 子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要…

IDEA开发HelloWorld程序

IDEA管理Java程序的结构 project(项目、工程)---project中可以创建多个modulemodule(模块)---module中可以创建多个packagepackage(包)---package中可以创建多个classclass(类)---c…

光控资本:股市黑色星期一是什么意思?黑色星期五什么意思?

股市黑色星期一是指股市大跌经常出现在星期一的现象。 最著名的黑色星期一便是1987年10月19日(星期一)产生的全球股市暴降工作,当日全球股市在纽约道琼斯公司工业均匀指数带头暴降下全面下泻, 引发金融商场惊惧, 以及…

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式,速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式,速度快很多。 option Options() o…

2024 go-zero社交项目实战

背景 一位商业大亨,他非常看好国内的社交产品赛道,想要造一款属于的社交产品,于是他找到了负责软件研发的小明。 小明跟张三一拍即合,小明决定跟张三大干一番。 社交产品MVP版本需求 MVP指:Minimum Viable Product&…

【C语言二级考试】循环结构设计

C语言二级考试——循环结构程序设计 五.循环结构程序设计 1.for循环结构 2.while和do-while循环结构 3.continue语句和break语句 4.循环的嵌套 知识点参考【C语言】循环-CSDN博客 文章目录 1.for循环2.while和do-while循环结构3.continue语句和break语句4.循环的嵌套 1.for循环…

阿里云容器服务Kubernetes部署新服务

这里部署的是前端项目 1.登录控制台-选择集群 2.选择无状态-命名空间-使用镜像创建 3.填写相关信息 应用基本信息: 容器配置: 高级配置: 创建成功后就可以通过30006端口访问项目了