【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,具体取决于您的系统配置)来确认任务是否按时执行,或者等待下一个执行时间点查看是否收到了邮件通知(如果您的脚本配置了邮件通知功能)。

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

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

相关文章

reactjs18 中使用@reduxjs/toolkit同步异步数据的使用

react18 中使用@reduxjs/toolkit 1.安装依赖包 yarn add @reduxjs/toolkit react-redux2.创建 store 根目录下面创建 store 文件夹,然后创建 index.js 文件。 import {configureStore } from "@reduxjs/toolkit"; import {counterReducer } from "./feature…

Does a vector database maintain pre-vector chunked data for RAG systems?

题意&#xff1a;一个向量数据库是否为RAG系统维护预向量化分块数据&#xff1f; 问题背景&#xff1a; I believe that when using an LLM with a Retrieval-Augmented Generation (RAG) approach, the results retrieved from a vector search must ultimately be presented…

WIFI各版本的带宽

带宽的定义&#xff1a; 带宽在网络领域通常指信道带宽&#xff0c;即信号在频谱中占用的频宽&#xff0c;单位是MHz&#xff08;兆赫&#xff09;。在无线通信中&#xff0c;带宽越宽&#xff0c;能够传输的数据量越大&#xff0c;因此信道带宽直接影响着数据传输速率。WiFi标…

FairGuard游戏加固无缝兼容 Android 15 预览版

2024年6月25日&#xff0c;谷歌发布了 Android 15 Beta 3 &#xff0c;作为Android 15 “平台稳定性”的里程碑版本&#xff0c;谷歌建议所有应用、游戏、SDK、库和游戏引擎开发者都将“平台稳定性”里程碑版本作为规划最终兼容性测试和公开发布的目标。 安卓开发者博客提供的版…

【2024-热-办公软件】ONLYOFFICE8.1版本桌面编辑器测评

在今日快速发展的数字化办公环境中&#xff0c;选择一个功能全面且高效的办公软件是至关重要的。最近&#xff0c;我有幸体验了ONLYOFFICE 8.1版本的桌面编辑器&#xff0c;这款软件不仅提供了强大的编辑功能&#xff0c;还拥有众多改进&#xff0c;让办公更加流畅和高效。在本…

货运大模型的未来:轻量化、场景化

“加快数字化和智能化转型发展&#xff0c;已成为物流行业的重要战略方向。”6月25日&#xff0c;在第十九届中国国际物流节暨第二十一届中国国际运输与物流博览会&2024亚洲物流双年展在上海开幕&#xff0c;中国交通运输协会会长、原铁道部副部长胡亚东在开幕致辞中表示。…

Python实践项目讲解:如何用制作一个桌面宠物

制作一个桌面宠物&#xff08;Desktop Pet&#xff09;在Python中通常涉及多个步骤&#xff0c;包括创建宠物的图形界面、添加动画效果、处理用户交互等。下面是一个简化的步骤指南&#xff0c;帮助你开始使用Python制作桌面宠物&#xff1a; 选择图形库&#xff1a; Tkinter&…

《我的第一本编程书》-Sunaba编程中的存储区与数字

第一个Sunaba的代码是 存储区[65049]→500000 其中存储区相当于在内存中申请了一个空间&#xff0c;这个空间用来存储数据 有点类似其他变量并赋值 存储区后面的数字是在sunaba界面存储的坐标&#xff0c;修改这个坐标&#xff0c;输出的位置不同。 →后面的数字是存储的数…

新能源行业必会基础知识-----电力市场概论笔记-----绪论

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…

量子信息基础知识与实践指南

量子信息是一门涉及量子力学和信息理论的交叉学科&#xff0c;它探讨如何利用量子力学的性质来传输、存储和处理信息。以下是关于量子信息的基础知识和实践指南&#xff1a; 量子信息的基础知识&#xff1a; 量子比特&#xff08;Qubit&#xff09;&#xff1a; 量子比特是量子…

【Echarts】散点图 制作 气泡 类型图表

目录 需求主要代码效果展示注 需求 需参照设计图画出对应图表 主要代码 /**** 数据 ****/ this.dataList [...Array(8).keys()].map((item) > {return {ywlxmc: 业务类型 (item 1),sl: item > 4 ? 50 : 70} })/**** 气泡样式 ****/ const styleList [{offset: [56…

NVIDIA控制面板3D设置一栏中不能通过预览更改图形设置的解决办法

今天因为GeForce Experience弹窗让我更新之后&#xff0c;手欠直接删掉了 然后图中标出的两个选项就没了 解决方法很简单&#xff0c;就是下回来&#xff0c;hhh https://www.nvidia.cn/geforce/drivers/ 直接下载就行&#xff0c;不用管版本&#xff0c;但是这种驱动千万不要…

基于Patroni的Citus高可用环境部署

1. 前言 Citus是一个非常实用的能够使PostgreSQL具有进行水平扩展能力的插件&#xff0c;或者说是一款以PostgreSQL插件形式部署的基于PostgreSQL的分布式HTAP数据库。本文简单说明Citus的高可用技术方案&#xff0c;并实际演示基于Patroni搭建Citus HA环境的步骤。 2. 技术方…

U盘提示格式化怎么搞定?本文有5种方法(内含教程)

U盘提示格式化是一种常见故障&#xff0c;即&#xff1a;当U盘插入电脑后&#xff0c;电脑上弹出对话框&#xff0c;提示该U盘需要格式化才能使用。 接触不良、文件系统损坏、热插拔、感染病毒、芯片损坏等原因都可能导致U盘出现此故障。这时点击“格式化”&#xff0c;大概率会…

Vim使用教程

1.为啥用Vim 一个字帅&#xff0c;但是我这个属于自己的笔记&#xff0c;写的水平不高&#xff0c;不懂得可以评论。用的是windows上的nvim 2.常用模式 普通模式&#xff0c;就是阅读模式插入模式&#xff0c;常用i/a/o键可进入&#xff0c;就是编辑模式。可视化模式&#xff…

蒸汽架空管道中的关键守护者:滑动管托、导向管托与固定管托

蒸汽架空管道中的关键守护者&#xff1a;滑动管托、导向管托、固定管托与补偿器的重要角色在蒸汽架空管道系统中&#xff0c;每一个组件都扮演着不可或缺的角色&#xff0c;共同确保管道的安全、高效运行。今天&#xff0c;我们就来深入探讨滑动管托、导向管托、固定管托以及补…

武汉星起航:深度洞察消费趋势,亚马逊美国站选品独具匠心

亚马逊美国站作为全球电商巨头的重要分支&#xff0c;其选品特点不仅反映了美国市场的消费趋势&#xff0c;更引领着全球消费者的购物潮流。从运动户外、宠物用品到美容个人护理&#xff0c;亚马逊美国站的选品策略始终紧跟市场脉搏&#xff0c;为消费者提供丰富多样、品质优良…

Go实现SFTP客户端

我将提供一个封装了 SFTP 客户端操作的简单例子&#xff0c;以确保通用性。这个例子包括连接、断开连接、上传文件、下载文件、列出目录和创建目录的基本操作。 这个 SFTPClient 结构体包含了一个 *sftp.Client 字段&#xff0c;我们通过实现方法来提供基本的 SFTP 操作。NewC…

简化收支记录,只留关键日期! 一键掌握财务流动,高效管理您的每一笔收支

在繁忙的生活中&#xff0c;管理个人或家庭的财务收支变得尤为重要。然而&#xff0c;传统的记账方式往往繁琐且复杂&#xff0c;让人望而却步。今天&#xff0c;我们为您推荐一款简洁易用的记账神器——晨曦记账本&#xff0c;让您轻松记录收支&#xff0c;只显示日期&#xf…

揭秘!这款电路设计工具让学校师生都爱不释手——SmartEDA的魔力何在?

随着科技的飞速发展&#xff0c;电子设计已成为学校师生们不可或缺的技能之一。而在众多的电路设计工具中&#xff0c;有一款名为SmartEDA的工具&#xff0c;凭借其强大的功能和友好的用户体验&#xff0c;迅速赢得了广大师生的青睐。今天&#xff0c;就让我们一起探索SmartEDA…