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

【MySQL备份】mysqldump基础篇

目录

1.简介

2.基本用途

3.命令格式

3.1常用选项

3.2常用命令

4.备份脚本

5.定时执行备份脚本


1.简介

mysqldump 是 MySQL 数据库管理系统的命令行实用程序,用于创建数据库的逻辑备份。它能够导出数据库的结构(如表结构、视图、触发器等)以及表中的数据为 SQL 格式的文本文件。

2.基本用途

  • 全库备份:可以备份整个 MySQL 服务器上的所有数据库。
  • 单数据库备份:仅备份指定的单一数据库。
  • 表备份:备份特定数据库中的某几张表。

3.命令格式

mysqldump [选项] [数据库名 [表名...]]

3.1常用选项

选项描述
-u 用户名, --user=用户名指定连接MySQL服务器的用户名。
-p[密码], --password[=密码]提供连接MySQL服务器的密码。如果仅使用 -p,将会提示输入密码。为安全起见,建议不在命令行直接暴露密码。
-h 主机名, --host=主机名指定MySQL服务器的主机名或IP地址,默认是localhost。
-P 端口, --port=端口如果MySQL服务不是运行在默认的3306端口,可以用此选项指定端口号。
-A, --all-databases备份所有数据库。
-B, --databases允许指定多个数据库进行备份,后面直接列出数据库名。
数据库名 [表名...]指定要备份的数据库和可选的表名,如果不指定,则默认备份所有表。
> 备份文件路径输出重定向符号,用于指定备份文件的保存路径和名称。
--single-transaction对于支持事务的存储引擎(如InnoDB),在开始导出前启动一个事务,确保导出数据的一致性,适用于在线备份,无需锁表。
--lock-tables=false防止在备份时锁定表,通常与 --single-transaction 一起使用,尤其适用于InnoDB表。
--routines包含数据库中的存储过程和函数到备份中。
--triggers包含数据库中的触发器到备份中。
--events包含数据库中的事件调度器事件到备份中。
--skip-add-drop-table备份时不包含 DROP TABLE 语句,这样在恢复时不会删除已存在的表。
--quick在转储大表时,使用更快的读取方法,减少内存消耗。

3.2常用命令

**导出命令大全**
#导出education数据库里面的users表的表数据和表结构mysqldump -u[用户名] -h[ip] -p[密码] -P[端口号] 数据库名 表名 >导出的文件名.sqlmysqldump -uroot -h127.0.0.1 -proot -P3306 education users>d:/user.sql
#导出包括系统数据库在内的所有数据库(all.sql默认保存在bin文件夹下面)mysqldump -uroot -proot --all-databases>all.sql
#导出多张表:mysqldump -uroot -proot --databases test --tables t1 t2>two.sql
#只导出表结构不导表数据,添加“-d”命令参数mysqldump -uroot -h127.0.0.1 -proot -P3306 -d education users>d:/user.sql
#只导出表数据不导表结构,添加“-t”命令参数mysqldump -uroot -h127.0.0.1 -proot -P3306 -t education users>d:/user.sql
#只导出test数据库的表结构导出:mysqldump -uroot -proot --no-data --databases test>s1.sql导入:mysql -uroot -proot -h127.0.0.1 -P3306 test<s1.sql**导入命令大全**格式:mysql -h[ip] -P[(大写)端口] -u[用户名] -p[密码]  [数据库名] < d:XX.sql(路径) mysql -uroot -proot -h127.0.0.1 -P3306 education<d:/database.sqlmysql -uroot -proot -h127.0.0.1 -P3306 <d:/all_database.sql 
#命令行导入mysql> use test;mysql> source /home/test/database.sql

4.备份脚本

#!/bin/bash# 设置脚本名称、日期等信息
NAME="MySQL Database Backup Script"
DATE=$(date +%Y-%m-%d-%H-%M)
LOG_FILE="/var/log/mysql_backup.log"# 使用环境变量或配置文件读取敏感信息,提高安全性
source /etc/mysql_backup.conf 2>/dev/null # 假设配置文件存放于此路径# 若配置文件不存在,则设置默认值或提示错误
: ${MYSQL_USER:=mysql_user_not_set}
: ${MYSQL_PASSWORD:=mysql_passwd_not_set}
: ${MYSQL_HOST:=localhost}
: ${MYSQL_PORT:=3306}
: ${MYSQL_CHARSET:=utf8mb4}
: ${BACKUP_PATH:=/backups/mysql}
: ${MAX_BACKUPS:=10}
: ${EMAIL_TO:=you@example.com}
: ${EMAIL_FROM:=backup_script@example.com}# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_PATH"# 获取当前日期时间,用于备份文件命名
DATE_TIME=$(date +%Y%m%d_%H%M%S)# 执行备份并压缩
mysqldump --opt --all-databases --single-transaction --flush-logs --master-data=2 \-h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD \| gzip > "$BACKUP_PATH/mysql_backup_$DATE_TIME.sql.gz"if [ $? -eq 0 ]; thenecho "$(date) - 数据库备份成功" >> "$LOG_FILE"# 删除超出保留数量的旧备份find "$BACKUP_PATH" -name "*.sql.gz" -type f | sort | head -n -$MAX_BACKUPS | xargs -r rm -fecho "$(date) - 已清理过期备份文件" >> "$LOG_FILE"# 发送邮件通知(需要安装mail或msmtp等工具){echo "主题: MySQL 数据库备份通知"echo "From: $EMAIL_FROM"echo "To: $EMAIL_TO"echo ""echo "数据库备份已完成,备份文件:mysql_backup_$DATE_TIME.sql.gz"echo "备份路径:$BACKUP_PATH"} | mail -s "$(echo -e "MySQL Backup on $DATE")" "$EMAIL_TO"
elseecho "$(date) - 数据库备份失败,请检查错误日志" >> "$LOG_FILE"# 发送错误通知{echo "主题: MySQL 数据库备份失败通知"echo "From: $EMAIL_FROM"echo "To: $EMAIL_TO"echo ""echo "数据库备份失败,请立即检查。"} | mail -s "$(echo -e "MySQL Backup Failure on $DATE")" "$EMAIL_TO"
fi

说明:

  • 环境变量: 使用环境变量读取敏感信息,可以提高脚本的灵活性和安全性。这里假设存在一个/etc/mysql_backup.conf配置文件来集中管理这些变量,以避免硬编码。
  • 日志记录: 添加了日志文件,用于记录备份操作的详细信息,方便追踪和审计。
  • 备份压缩: 使用gzip命令对备份文件进行压缩,减少存储空间占用。
  • 自动清理: 使用find命令自动清理超过保留数量的旧备份文件,提高了脚本的自动化程度。
  • 邮件通知: 添加了成功和失败的邮件通知功能,可以及时提醒管理员备份状态,mail命令用于发送邮件,需确保系统已正确配置邮件发送工具。

5.定时执行备份脚本

  1. 编辑Crontab配置:首先,打开终端并以您的用户身份运行crontab命令来编辑Cron配置。如果您想要以root用户身份执行备份,可以使用sudo crontab -e,否则,只需输入crontab -e

  2. 添加定时任务:在打开的Crontab文件中,移动光标到文件末尾,然后添加以下行来设定定时任务。假设您的备份脚本名为mysql_backup.sh,且该脚本位于/usr/local/bin/目录下:

    0 2 * * * /usr/local/bin/mysql_backup.sh

    这行的意思是:每天的凌晨2点0分执行/usr/local/bin/mysql_backup.sh脚本。Cron任务的时间格式为分钟 小时 日 月 星期,从左到右依次对应。

  3. 保存并退出:编辑完成后,保存文件并退出编辑器。大多数情况下,您可以通过按下Ctrl+X,然后按Y键确认保存,最后按回车键退出。

  4. 测试与验证:您可以通过查看Cron的日志(通常是/var/log/syslog/var/log/cron.log,具体取决于您的系统配置)来确认任务是否按时执行,或者等待下一个执行时间点查看是否收到了邮件通知(如果您的脚本配置了邮件通知功能)。

相关文章:

【MySQL备份】mysqldump基础篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序&#xff0c;用于创建数据库的逻辑备份。它能够导出数据库的结构&#xff08;如表结构、视图、触发器等&#xf…...

C# Halcon目标检测算法

在Halcon中进行目标检测可以使用传统的计算机视觉方法&#xff0c;也可以使用深度学习的方法。Halcon提供了丰富的函数库来处理这些任务&#xff0c;而在C#中使用Halcon&#xff0c;你需要通过Halcon .NET接口。 以下是使用Halcon进行目标检测的一般步骤&#xff0c;这里我将给…...

7.4总结

今天写了几道题目 最近&#xff0c;一年级学生马克西姆学习了科拉兹猜想&#xff0c;但他在讲课时没有太注意&#xff0c;所以他认为猜想中提到了以下过程&#xff1a; 有一个变量 $$$x$$$ 和一个常数 $$$y$$$ 。下面的操作要执行 $$$k$$$ 次&#xff1a; - 将 $$$x$$$ 增加…...

知识图谱查询语言的表示

文章目录 SPARQL知识图谱查询基本构成常见的SPARQL查询算子语义Markup表示语言SPARQL知识图谱查询基本构成 RDF 支持类似数据库的查询语言,叫作SPARQL,它提供了查询RDF 数据的标准语法、处理SPARQL查询的规则以及结果返回形式。 变量,RDF中的资源,以“?”或者“$”指示;…...

重生之我要学后端100--计算机网络部分概念(持续更新)

TCP/IP、DNS、负载均衡器等等 前言一、TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;二、DNS&#xff08;域名系统&#xff09;三、负载均衡器其他网络概念 前言 了解网络基础知识对于后端开发者至关重要&#xff0c;因为这些知识有助于理解应用程序是如何在更广阔的…...

时空预测+特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比

时空预测特征分解&#xff01;高性能&#xff01;EMD-Transformer和Transformer多变量交通流量时空预测对比 目录 时空预测特征分解&#xff01;高性能&#xff01;EMD-Transformer和Transformer多变量交通流量时空预测对比效果一览基本介绍程序设计参考资料 效果一览 基本介绍…...

Vue 循环内部获取图片高度

在vue循环里面获取图片宽度或者高度,有时候会用到,则可以 <div classconmon v-for"(item, index) in items"><router-link :to"{path: /art/details,query:{artid:item.app_id,item_id:item.image_id}}"><img :src"item.src" al…...

vue动态组件与插件到底是什么?

background: yellow; } 子组件1 <ul><li v-for"item of items" :key"item"><input type"checkbox" />{{ item }}</li></ul>子组件2 PostMail 子组件3 RecycleBin ![在这里插入图片描述](https://img-blog.csdni…...

SwiftUI九创建watchOS应用

代码下载 这篇教程让可以应用之前所学到的SwiftUI知识&#xff0c;把Landmarks应用从iOS平台迁移到watchOS平台上。在拷贝可以共用的数据和视图文件之前&#xff0c;需要先给项目中添加一个对应watchOS的Target编译目标。在所有 assets 就绪后&#xff0c;将自定义SwiftUI视图…...

【Linux进阶】文件和目录的默认权限与隐藏权限

1.文件默认权限&#xff1a;umask OK&#xff0c;那么现在我们知道如何建立或是改变一个目录或文件的属性了&#xff0c;不过&#xff0c;你知道当你建立一个新的文件或目录时&#xff0c;它的默认权限会是什么吗&#xff1f; 呵呵&#xff0c;那就与umask这个玩意儿有关了&…...

SQL 查询中 (+) 符号的含义

您已经很好地解释了 SQL 查询中 () 符号的含义&#xff0c;它确实用于表示左外连接&#xff08;LEFT OUTER JOIN&#xff09;&#xff0c;这是 SQL 中的一种连接操作。以下是对您提供的信息的补充和完善&#xff1a; ### 左外连接&#xff08;LEFT OUTER JOIN&#xff09;&…...

基于Vue的MOBA类游戏攻略分享平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术、SpringBoot框架、B/S模式、Vue.js 工具&#xff1a;MyEclipse、MySQL 系统展示 首页 用…...

如何在PhpStorm中运行SQL文件?

如何在PhpStorm中运行SQL文件&#xff1f; 提问&#xff1a;如何在PhpStorm中运行SQL文件&#xff1f; 解答&#xff1a;本文将详细介绍如何在PhpStorm中运行SQL文件的步骤&#xff0c;包括如何配置数据库连接和执行SQL脚本&#xff0c;并附带示例SQL代码。 1. 配置数据库连…...

Qt实现检测软件是否多开

Qt实现检测软件是否多开 在桌面软件开发中&#xff0c;软件通常要设置只允许存在一个进程&#xff0c;像一些熟知的音乐软件&#xff0c;QQ音乐这种。而这些软件在限制只有一个进程的同时&#xff0c;通常还会有双击桌面图标唤醒已运行的后台进程的功能。关于双击桌面唤醒已运…...

spring security + vue,登录功能

前端代码&#xff1a;https://gitee.com/forgot940629/vuelogin 后端代码&#xff1a;https://gitee.com/forgot940629/springbootloginv2 参考代码&#xff1a;https://github.com/PuZhiweizuishuai/SpringSecurity-JWT-Vue-Deom 基于前后端分离实现登录功能。登录成功后后端向…...

64.函数参数和指针变量

目录 一.函数参数 二.函数参数和指针变量 三.视频教程 一.函数参数 函数定义格式&#xff1a; 类型名 函数名(函数参数1,函数参数2...) {代码段 } 如&#xff1a; int sum(int x&#xff0c;int y) {return xy; } 函数参数的类型可以是普通类型&#xff0c;也可以是指针类…...

原创作品 —(金融行业)年金系统交互和视觉设计

金融行业软件交互设计要点&#xff1a;“简化操作流程&#xff0c;确保流畅易用&#xff0c;同时注重交易环境的安全可靠&#xff0c;通过个性化体验提升用户满意度&#xff0c;并及时收集反馈以持续优化。” 2.UI设计要点&#xff1a;“注重视觉效果与用户体验的平衡&#xff…...

3D slicer

...

面试题--SpringCloud

SpringCloud SOA 和微服务的区别?(必会) 谈到 SOA 和微服务的区别, 那咱们先谈谈架构的演变 1. 集中式架构 项目功能简单, 一个项目只需一个应用, 将所有功能部署在一起, 这样的架构好处是减 少了部署节点和成本. 缺点: 代码耦合&#xff0c;开发维护困难 2. 垂直拆分架构 …...

Qt windeployqt 打包的Qt动态库介绍

前言 在 Windows 平台&#xff0c;通常使用 Qt 的工具 windeployqt 将可执行文件的相关 Qt 依赖项部署到当前路径下。 Windows windeployqt 部署工具 Windows 部署工具 windeployqt 旨在自动化创建一个可部署文件夹的过程&#xff0c;该文件夹包含运行应用程序所需的 Qt 相关…...

Phi-4-reasoning-vision-15B高算力适配:双GPU显存占用监控与低并发稳定性验证

Phi-4-reasoning-vision-15B高算力适配&#xff1a;双GPU显存占用监控与低并发稳定性验证 1. 模型概述与技术背景 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型&#xff0c;专为复杂视觉理解任务设计。作为2026年发布的重要模型&#xff0c;它在图像理解、文档…...

AI 开发实战:技术决策为什么总失忆,决策日志可以怎么做

AI 开发实战&#xff1a;技术决策为什么总失忆&#xff0c;决策日志可以怎么做 一、这个问题为什么值得专门拿出来做&#xff1f; 在 AI 工程落地里&#xff0c;真正拖慢团队的往往不是模型本身&#xff0c;而是流程和协作方式没有跟上。 围绕“技术决策为什么总失忆&#xff0…...

捉妖雷达Web版:如何解决游戏数据实时同步的技术挑战?

捉妖雷达Web版&#xff1a;如何解决游戏数据实时同步的技术挑战&#xff1f; 【免费下载链接】zhuoyao_radar 捉妖雷达 web版 项目地址: https://gitcode.com/gh_mirrors/zh/zhuoyao_radar 捉妖雷达Web版是一个开源的游戏辅助工具项目&#xff0c;旨在为捉妖游戏玩家提供…...

AI Agent驱动业务规则测试:从复杂逻辑到精准用例的自动化实践

1. AI Agent如何重塑业务规则测试 第一次接触AI Agent驱动的测试用例生成时&#xff0c;我正被一个保险理赔系统的测试工作折磨得焦头烂额。那套系统里有上百条复杂的业务规则&#xff0c;光是理解"投保人年龄超过60岁且保单满5年但未达10年时&#xff0c;赔付比例调整为8…...

Qwen3-ASR-1.7B语音识别实战:科研访谈录音转文本+主题自动聚类

Qwen3-ASR-1.7B语音识别实战&#xff1a;科研访谈录音转文本主题自动聚类 想象一下这个场景&#xff1a;你刚刚结束了一场长达两小时的深度科研访谈&#xff0c;录音文件静静地躺在你的电脑里。接下来&#xff0c;你需要逐字逐句地听录音、做笔记、整理成文字稿&#xff0c;然…...

如何让2015年前的MacBook Pro焕发新生?OpenCore Legacy Patcher完全指南

如何让2015年前的MacBook Pro焕发新生&#xff1f;OpenCore Legacy Patcher完全指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的老款Mac无法升级到…...

**发散创新:策略即代码 —— 用 Rust实现动态权限控制引擎**在现代软件架构中,**权限管理不再是静态配

发散创新&#xff1a;策略即代码 —— 用 Rust 实现动态权限控制引擎 在现代软件架构中&#xff0c;权限管理不再是静态配置的附属品&#xff0c;而是核心业务逻辑的一部分。传统 RBAC&#xff08;基于角色的访问控制&#xff09;虽然成熟&#xff0c;但在微服务、多租户和复杂…...

用STM32F411+LVGL+FreeRTOS做个小玩意:从零打造一个桌面级健康监测仪(附完整源码和PCB)

从零打造桌面级健康监测仪&#xff1a;STM32F411LVGLFreeRTOS全栈实战 在创客圈里&#xff0c;把一堆传感器和屏幕拼凑成能用的设备不算难事&#xff0c;但要做成能长期摆在桌面上、看着不违和的实用工具&#xff0c;完全是另一个维度的挑战。去年我用了三个月时间迭代了四版原…...

多模态交互概念展示:LFM2.5-1.2B-Thinking-GGUF如何理解并处理图像描述文本

多模态交互概念展示&#xff1a;LFM2.5-1.2B-Thinking-GGUF如何理解并处理图像描述文本 1. 当文本模型遇见视觉世界 你可能好奇&#xff0c;一个纯文本模型如何参与多模态交互&#xff1f;关键在于语义桥梁的搭建。LFM2.5-1.2B-Thinking-GGUF虽然不能直接处理图像&#xff0c…...

别再手动飞了!用Python脚本一键操控AirSim无人机,实现自动巡航与悬停

用Python脚本全自动操控AirSim无人机&#xff1a;从基础巡航到复杂航线规划 在无人机仿真测试和算法开发中&#xff0c;手动控制不仅效率低下&#xff0c;更难以保证飞行动作的精确性和可重复性。想象一下&#xff0c;当你需要测试一个新型避障算法&#xff0c;或者采集特定飞行…...