【云原生 | Docker】Linux 定时自动化备份Mysql数据到本地 Windows 最佳实践,确定不来看看?

news2024/11/28 2:33:38

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

@toc

Linux 定制自动备份至 本地及当地window目录下 (docker )

以下是在Linux(CentOS)上实现MySQL定时备份并将备份传输到Windows本地的方案详解,同时以Markdown表格的形式列出名称、介绍以及优缺点。

名称介绍优缺点
使用Shell脚本和Cron使用Shell脚本和Cron定时任务来备份MySQL数据,并使用文件传输协议(如SCP或SFTP)将备份文件传输到Windows本地。优点:简单易用,无需额外工具;可通过Cron实现定时备份;支持备份文件传输到远程服务器。缺点:备份文件传输速度受网络影响;需要配置正确的文件传输协议和权限。
使用第三方备份工具使用第三方备份工具(如Percona XtraBackup、mysqldump等)来备份MySQL数据,并将备份文件传输到Windows本地。可以结合Shell脚本和Cron来实现定时备份和传输。优点:提供更多备份选项和功能;备份效率高;支持备份文件的远程传输。缺点:需要额外学习和配置第三方备份工具;备份文件传输速度受网络影响。
使用数据复制方案配置MySQL的主从复制,将数据复制到另一台Linux服务器上,然后使用文件传输协议将备份文件传输到Windows本地。优点:实时备份,数据可靠性高;可在从服务器上进行备份文件的传输;支持主从复制的其他优点。缺点:配置复杂;需要额外的硬件和网络资源。
使用云存储服务将MySQL备份文件上传到云存储服务(如Amazon S3、Google Cloud Storage等),然后从Windows本地下载备份文件。优点:备份文件安全可靠;无需自行配置文件传输;支持跨平台备份文件的访问。缺点:需要注册和配置云存储服务;备份文件传输速度受网络影响;可能需要支付额外的存储和传输费用。
使用Shell脚本和Cron
  1. 编写备份脚本:创建一个Shell脚本文件,例如backup.sh,用于执行MySQL数据备份操作。在脚本中,需要包含连接MySQL数据库的相关信息、备份文件的保存路径以及备份命令。
  2. 编辑备份脚本:在备份脚本中,使用适当的命令(如mysqldump)来执行MySQL数据备份。确保备份命令包括必要的选项,如备份的数据库名称、用户名、密码等。
  3. 设置备份文件路径:在备份脚本中,指定备份文件的保存路径。可以选择本地路径或远程路径,例如/var/backups/mysql/。
  4. 设置定时任务:使用Cron定时任务来自动执行备份脚本。打开终端,运行crontab -e命令编辑Cron表。
  5. 编辑Cron表:在Cron表中,添加一行指定备份脚本的执行时间和路径。例如,0 2 * * * /path/to/backup.sh表示每天凌晨2点执行备份脚本。
  6. 保存和退出:保存Cron表的修改,并退出编辑器。
  7. 测试备份脚本:运行备份脚本进行测试,确保备份正常工作。在终端中执行bash /path/to/backup.sh命令,检查备份文件是否生成。
  8. 自动定时备份:Cron将按照设置的时间自动执行备份脚本,并生成MySQL数据备份文件。

MySQL数据备份可以使用多种命令进行,以下是一些常用的MySQL数据备份命令:

  1. 使用mysqldump命令备份整个数据库:
mysqldump -u [用户名] -p [密码] [数据库名] > [备份文件路径]

示例:

mysqldump -u root -p mydatabase > /var/backups/mydatabase.sql
  1. 使用mysqldump命令备份指定表:
mysqldump -u [用户名] -p [密码] [数据库名] [表名] > [备份文件路径]

示例:

mysqldump -u root -p mydatabase mytable > /var/backups/mytable.sql
  1. 使用–all-databases选项备份所有数据库:
mysqldump -u [用户名] -p [密码] --all-databases > [备份文件路径]

示例:

mysqldump -u root -p --all-databases > /var/backups/alldatabases.sql
  1. 使用–single-transaction选项备份大型数据库,以保证一致性:
mysqldump -u [用户名] -p [密码] --single-transaction [数据库名] > [备份文件路径]

示例:

mysqldump -u root -p --single-transaction mydatabase > /var/backups/mydatabase.sql

这些命令将会生成一个以.sql扩展名的备份文件,其中包含了数据库或表的结构和数据。在执行备份命令时,需要替换[用户名]、[密码]、[数据库名]、[表名]和[备份文件路径]为实际的值。

如果是在docker之中,则需要先进入到docker中

要备份Docker中的MySQL,您可以使用以下步骤:

  1. 查找MySQL容器的名称或ID:运行以下命令来获取正在运行的MySQL容器的名称或ID:
docker ps
  1. 进入MySQL容器:使用以下命令进入MySQL容器的命令行界面:
docker exec -it <容器名称或ID> bash
  1. 在MySQL容器中执行备份命令:在MySQL容器的命令行界面中,可以使用mysqldump命令来执行备份。例如,要备份整个数据库,可以运行以下命令:
mysqldump -u [用户名] -p [密码] [数据库名] > [备份文件路径]

示例:

mysqldump -u root -p mydatabase > /var/backups/mydatabase.sql
  1. 退出MySQL容器:完成备份后,使用以下命令退出MySQL容器的命令行界面:
exit
  1. 将备份文件从容器复制到宿主机:在宿主机上使用以下命令将备份文件从MySQL容器复制到宿主机的特定位置:
docker cp <容器名称或ID>:<容器内备份文件路径> <宿主机备份文件路径>

示例:

docker cp my-mysql:/var/backups/mydatabase.sql /host/backups/mydatabase.sql

现在,您已经成功备份了Docker中的MySQL数据库,并将备份文件复制到了宿主机上的指定位置。请确保替换命令中的占位符 <容器名称或ID><容器内备份文件路径><宿主机备份文件路径> 为实际的值。

添加定时删除文件

ls -lt <目录路径>/*.sql | tail -n 1 | awk '{print $9}' | xargs rm

这个命令的步骤如下:

  1. ls -lt <目录路径>/*.sql:使用 ls 命令列出目录中所有 .sql 文件,并按照最后修改时间降序排列。
  2. tail -n 1:获取排序后的结果中的最后一行,即最旧的文件。
  3. awk '{print $9}':提取出结果中的第九列,即文件名。
  4. xargs rm:将提取出的文件名作为参数,使用 rm 命令删除该文件。

请将 <目录路径> 替换为你要操作的目录路径,然后执行以上命令即可删除目录中最旧的一个 .sql 文件。

备份编写如下:

#!/bin/bash
docker exec -it f73d6e43f9cc bash -c "mysqldump -u root -pBigData@2021  --single-transaction  BigData  > /backup/BigData.sql"
docker cp f73d6e43f9cc:/backup/BigData.sql "/home/Backup/Bigdata_Backup/$(date '+%Y-%m-%d')-BigData.sql"
ls -lt ./*.sql | tail -n 1 | awk '{print $9}' | xargs rm
chmod 777 /home/Backup/Bigdata_Backup/$(date '+%Y-%m-%d')-BigData.sql ## 用户下载到本地

windows 自动下载

使用scp命令编写bat文件

@echo off
echo 正在下载文件...

scp -P 10086 -r root@10.10.61.7:/home/Backup/Bigdata_Backup/*.sql D:/project/易班/易班项目/数学与大叔据学院易班学工系统/数据备份/

echo 下载完成。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

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

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

相关文章

C#,数值计算——偏微分方程,Mgfas的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Mgfas { public int n { get; set; } public int ng { get; set; } public double[,] uj; public double[,] uj1 { get; …

云安全-攻防视角下如何看待堡垒机

0x00 堡垒机简介 堡垒机是种网络安全设备&#xff0c;用于保护和管理企业内部网络与外部网络之间的访问。它作为一种中间节点&#xff0c;提供安全的访问控制和审计功能&#xff0c;用于保护内部网络免受未经授权的访问和攻击。堡垒机通常被用作跳板服务器&#xff0c;即堡垒机…

2023辽宁省数学建模A题铁路车站的安全标线完整原创论文详细讲解(含matlab代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了辽宁省数学建模A题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B预计下午两点前更新完毕&#xff0c;A全…

【错误解决方案】TypeError: gca() got an unexpected keyword argument ‘projection‘

1. 错误提示 在 python程序中&#xff0c;使用Matplotlib库中的 gca() 函数出现错误&#xff0c;提示“TypeError: gca() got an unexpected keyword argument projection”。 2. 解决方案 这个错误的原因是 gca() 函数并不接受 projection 这个关键字参数。 gca() 函数是用来…

半导体芯片制造行业MES系统解决方案

半导体产业作为现代电子科技的重要支柱&#xff0c;驱动着电子设备和通信技术的飞速发展。随着技术不断演进&#xff0c;半导体制造企业面临着越来越多的挑战&#xff0c;如高度复杂的工艺流程、全球化的竞争、质量控制的要求以及能源效率等问题。 为了应对这些挑战&#xff0…

学电脑编程零基础,计算机编程入门先学什么

学电脑编程零基础&#xff0c;计算机编程入门先学什么&#xff0c;建议先从容易学习的语言入手&#xff0c;比如中文编程。 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&…

第六章 Python函数

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

美颜SDK哪家便宜?企业级美颜工具包

在当今竞争激烈的企业宣传领域&#xff0c;一张优质的照片可以为企业带来巨大的价值。然而&#xff0c;由于各种原因&#xff0c;拍摄的照片、视频往往存在一些瑕疵&#xff0c;如肤色不均、背景杂乱等。为了解决这个问题&#xff0c;美摄科技特别推出了面向企业的专业美颜SDK&…

大数据之LibrA数据库系统告警处理(ALM-12017 磁盘容量不足)

告警解释 系统每30秒周期性检测磁盘使用率&#xff0c;并把磁盘使用率和阈值相比较。磁盘使用率有一个默认阈值&#xff0c;当检测到磁盘使用率超过阈值时产生该告警。 平滑次数为1&#xff0c;主机磁盘某一分区使用率小于或等于阈值时&#xff0c;告警恢复&#xff1b;平滑次…

当 Next.js 遇到 Wordpress 会发生什么?

Wordpress 作为一款小型的内容管理系统&#xff0c;受到很多站长的欢迎&#xff0c;特别是作为个人博客&#xff0c;丰富的插件和主题提供了更多的定制和自由度。 自从前后端分离的开发模式兴起之后&#xff0c;Wordpress 又被作为数据存储的后端服务提供接口给第三方的前端页面…

JVM类的声明周期

文章目录 版权声明生命周期概述加载阶段查看内存中的对象 连接阶段连接阶段之验证连接阶段之准备连接阶段之解析 初始化阶段练习题目一练习题目二练习题目三练习题目四 使用阶段卸载阶段总结 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明…

第四章 Python运算符与流程控制

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

【Unity之UI编程】如何用UGUI搭建一个登录注册面板

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…

数据可视化:折线图

1.初看效果 &#xff08;1&#xff09;效果一 &#xff08;2&#xff09;数据来源 2.JSON数据格式 其实JSON数据在JAVA后期的学习过程中我已经是很了解了&#xff0c;基本上后端服务器和前端交互数据大多是采用JSON字符串的形式 &#xff08;1&#xff09;JSON的作用 &#…

【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】

教程背景 课程作业要求使用反编译技术&#xff0c;在游戏中实现无碰撞。正常情况下碰撞后角色死亡&#xff0c;修改为直接穿过物体不死亡。 需要准备的软件 il2CppDumper。DnSpy。IDA Pro。AndroidKiller。 一、使用il2CppDumper导出程序集 将{my_game}.apk后缀修改为{my_…

AD9371 官方例程 NO-OS 主函数 headless 梳理

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…

SpringCloudAlibaba - 项目完整搭建(Nacos + OpenFeign + Getway + Sentinel)

目录 一、SpringCloudAlibaba 项目完整搭建 1.1、初始化项目 1.1.1、创建工程 1.1.2、配置父工程的 pom.xml 1.1.3、创建子模块 1.2、user 微服务 1.2.1、配置 pom.xml 1.2.2、创建 application.yml 配置文件 1.2.3、创建启动类 1.2.4、测试 1.3、product 微服务 1…

LIME低亮度图像增强

LIME低亮度图像增强 main.cpp #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <opencv2/imgproc/imgproc.hpp> #include "lime.h"int main() {cv::Mat img_in cv::imread("…

Hello AIGC类杂志实验

shadow 类杂志是我们从6月开始孵化的一个小型内容产品。目前还在不断迭代升级中~~ 今天和大家聊聊心得体会&#xff1a; 从2023-06-12发布第一期以来&#xff0c;我和小杜一起打磨了前面几期&#xff0c;逐步找到稳定的内容表达方式后&#xff0c;由小杜独立负责此类杂志的更新…