【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[端口号] 数据库名 表名 >导出的文件名.sql
	mysqldump -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.sql
 	mysql -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 ]; then
    echo "$(date) - 数据库备份成功" >> "$LOG_FILE"
    
    # 删除超出保留数量的旧备份
    find "$BACKUP_PATH" -name "*.sql.gz" -type f | sort | head -n -$MAX_BACKUPS | xargs -r rm -f
    echo "$(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"
else
    echo "$(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.mfbz.cn/a/771598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB贝叶斯线性回归模型案例

采用辛烷值数据集“spectra_data.mat”(任意数据集均可),介绍贝叶斯线性回归模型的构建和使用流程。 运行结果如下: 训练集预测精度指标如下: 训练集数据的R2为: 1 训练集数据的MAE为: 0.00067884 训练集数据的RMSE为: 0.00088939 测试集预测精度指标如下: 测试集数据的R2…

Python学习之小游戏--坦克大作战

今天跟视频学习了Python实现坦克大作战小游戏&#xff0c;挺有意思的&#xff0c;一起来玩吧~ 按空格发射子弹&#xff0c;上下左右键实现移动&#xff0c;ESC键无限复活。 import pygame,time,random from pygame.sprite import Sprite SCREEN_WIDTH800 SCREEN_HEIGHT500 BG…

如何改善提示词,让 GPT-4 更高效准确地把视频内容整体转换成文章?

&#xff08;注&#xff1a;本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 让我们来讨论一下大语言模型应用中的一个重要原则 ——「欲速则不达」。 作为一个自认为懒惰的人&#xff0c;我一直有一个愿望&#xff1a;完成视频制作…

typescript2-类的类型

/* 输出 吃饭 游泳 */ []( )继承与多态------------------------------------------------------------------------1. 子类继承父类特征子类 extends 父类2. 当需要父类参数传递时&#xff0c;用子类也可以&#xff0c;这就是多态/* 继承&#xff1a;子类继承父类 多态…

集团型企业组织架构复杂,业务线多,如何进行高效费用管控?

企业管理中流行这样一句话&#xff1a;“企业转型&#xff0c;财务先行”。对集团型企业而言&#xff0c;当今的发展形势下&#xff0c;通过财务战略全面转型、最终撬动企业价值提升&#xff0c;是一件难而正确的事情。 集团企业具有经营规模大、产业链多、分支机构多、地域跨度…

容器部署rabbitmq集群迁移

1、场景&#xff1a; 因业务需要&#xff0c;要求把rabbitmq-A集群上的数据迁移到rabbitmq-B集群上&#xff0c;rabbitmq的数据包括元数据&#xff08;RabbitMQ用户、vhost、队列、交换和绑定&#xff09;和消息数据&#xff0c;而消息数据存储在单独的消息存储库中。 2、迁移要…

中国算力网络市场发展分析

中国算力网络市场发展现状 算力涵盖计算、内存、存储等全方位能力&#xff0c;广泛分布于网络边缘、云计算中心、联网设备及转发节点。随着数字化技术革新&#xff0c;算力与网络正深度融合&#xff0c;推动“算网一体化”的演进。这一新型基础设施日渐凸显其重要性&#xff0c…

番外篇 | YOLOv8改进之即插即用全维度动态卷积ODConv + 更换Neck网络为GFPN

前言:Hello大家好,我是小哥谈。本文所做出的改进是在YOLOv8中引入即插即用全维度动态卷积ODConv和更换Neck网络为GFPN,希望大家学习之后能够有所收获~!🌈 目录 🚀1.基础概念 🚀2.网络结构 🚀3.添加步骤 🚀4.改进方法 🍀🍀步骤1:block.py文件修改…

Kamailio-Web管理页面Siremis的安装与部署

siremis 是针对于 Kamailio 的web管理接口&#xff0c;使用PHP书写&#xff0c;更新至2020年&#xff0c;相对不是太新但是是官方友链的 以下就采用 Ubuntu 22.04Siremis 5.8.0apache http server 2.4php7.0 如有疑问请参看官方指南 以下开始介绍操作步骤 安装apache2.4 we…

一文读懂什么是“GPU算力”

在数字化转型的浪潮中&#xff0c;各行业对算力的需求日益激增&#xff0c;GPU&#xff08;图形处理单元&#xff09;算力作为推动科技进步的重要力量&#xff0c;正逐步从传统的图形渲染领域扩展到人工智能、大数据分析、高性能计算等多个前沿领域。通过本文&#xff0c;深入剖…

亮相2024世界人工智能大会,扫描全能王AIGC“黑科技”助力敦煌遗书数字化修复

7月4日&#xff0c;2024年世界人工智能大会&#xff08;简称“大会”&#xff09;在上海举行。这次这场科技与创新的盛会上&#xff0c;一张古朴、典雅的卷轴吸引了众人的目光。这张被修复的卷轴脱胎于敦煌遗书系列古籍&#xff0c;在被机器拍摄扫描后&#xff0c;卷轴上脏污、…

Airflow: 大数据调度工具详解

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

SalesForce集成案例-获取联系人信息

SalesForce本身比较复杂&#xff0c;涉及的东西比较多&#xff0c;下面以使用REST API接口为例&#xff0c;介绍与SalesForce集成的过程&#xff0c;集成案例&#xff1a;获取联系人信息。 首先需要注册一个免费的开发者帐号&#xff0c;具有完全操作SalesForce的权限。 1、注…

Echarts中的热力图和漏斗图(在Vue中使用热力图和漏斗图)

热力图 (Heatmap) Echarts的热力图用于展示两个维度数据矩阵中的值分布情况。它通过在平面上划分成多个矩形区域&#xff0c;并用不同的颜色填充这些区域来表示数据的大小或强度。颜色渐变从浅到深通常映射着数值从小到大&#xff0c;从而直观展示数据的集中程度和分布模式。热…

STM32工业自动化控制系统教程

目录 引言环境准备工业自动化控制系统基础代码实现&#xff1a;实现工业自动化控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 控制系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业自动化控制系统利用…

INFINI Console 使用介绍

上次在《INFINI Easysearch尝鲜Hands on》中我们部署了两个节点的Easysearch&#xff0c;并且也设置了Console对集群进行监控。那么今天我们再来介绍下INFINI Console的使用。 INFINI Console 仪表盘功能介绍 INFINI Console 是一个功能强大的数据管理和分析平台&#xff0c;…

JBoss JMXInvokerServlet 反序列化漏洞

漏洞原理&#xff1a; 这是经典的JBoss反序列化漏洞&#xff0c;JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象&#xff0c;然后我们利用Apache Commons Collections中的Gadget执行任意代码。 影响版本&#xff1a; JBoss Enterprise Application Platform 6…

实时数仓Hologres OLAP场景核心能力介绍

作者&#xff1a;赵红梅 Hologres PD OLAP典型应用场景与痛点 首先介绍典型的OLAP场景以及在这些场景上的核心痛点&#xff0c;OLAP典型应用场景很多&#xff0c;总结有四类&#xff1a;第一类是BI报表分析类&#xff0c;例如BI报表&#xff0c;实时大屏&#xff0c;数据中台等…

Java项目:基于SSM框架实现的班主任助理管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的班主任助理管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…

iOS App 测试环境升级,遇到的问题以及解决方法

iOS App 测试环境升级&#xff0c;遇到的问题以及解决方法 Mac 实体机升级到 Sonima 14.5 Xcode 升级到 15.3 问题1&#xff1a; Xcode 编译 WebDriverAgent 失败 尝试下载 最新版本的WDA 源码编译&#xff0c;可以编译成功。 问题2&#xff1a;具体坐标直接点击的代码都会报错…
最新文章