首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqldump 差异备份

基础概念

mysqldump 是 MySQL 数据库管理系统提供的一个命令行工具,用于备份数据库或将其导出为 SQL 文件。差异备份(Differential Backup)是一种备份策略,它只备份自上次完整备份以来发生更改的数据。相比于完整备份,差异备份可以节省存储空间和备份时间。

相关优势

  1. 节省存储空间:只备份自上次完整备份以来的更改数据,而不是整个数据库。
  2. 缩短备份时间:由于备份的数据量减少,备份过程会更快。
  3. 恢复速度快:在恢复时,先恢复完整备份,然后应用差异备份,比恢复多个增量备份更快。

类型

  1. 完整备份:备份整个数据库的所有数据。
  2. 差异备份:备份自上次完整备份以来发生更改的数据。
  3. 增量备份:备份自上次任何类型备份(完整、差异或增量)以来发生更改的数据。

应用场景

  • 数据库维护:定期进行完整备份,并在此基础上进行差异备份,以确保数据的安全性和可恢复性。
  • 数据迁移:在将数据库从一个服务器迁移到另一个服务器时,可以使用备份文件进行恢复。
  • 灾难恢复:在发生数据丢失或损坏时,可以使用备份文件快速恢复数据。

遇到的问题及解决方法

问题:为什么 mysqldump 差异备份文件很大?

原因

  • 数据库在完整备份后发生了大量更改。
  • 备份过程中包含了不必要的数据(如视图、存储过程等)。

解决方法

  • 确保在完整备份后只进行必要的更改。
  • 使用 mysqldump--no-data--no-create-info 选项排除不必要的数据。
代码语言:txt
复制
mysqldump --no-data --databases your_database > backup.sql

问题:为什么 mysqldump 差异备份恢复速度慢?

原因

  • 差异备份文件很大,导致恢复时间增加。
  • 系统资源(如 CPU、内存)不足。

解决方法

  • 优化备份策略,减少差异备份的数据量。
  • 增加系统资源,如升级 CPU 或内存。

问题:如何自动化 mysqldump 差异备份?

解决方法: 可以使用脚本和定时任务来自动化差异备份。以下是一个简单的 Bash 脚本示例:

代码语言:txt
复制
#!/bin/bash

# 数据库连接信息
DB_USER="your_username"
DB_PASS="your_password"
DB_NAME="your_database"

# 备份目录
BACKUP_DIR="/path/to/backup"

# 完整备份文件名
FULL_BACKUP_FILE="$BACKUP_DIR/full_backup_$(date +%Y%m%d%H%M%S).sql"

# 差异备份文件名
DIFF_BACKUP_FILE="$BACKUP_DIR/diff_backup_$(date +%Y%m%d%H%M%S).sql"

# 执行完整备份
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $FULL_BACKUP_FILE

# 执行差异备份
mysqldump -u $DB_USER -p$DB_PASS --single-transaction --flush-logs --master-data=2 $DB_NAME > $DIFF_BACKUP_FILE

# 删除旧的备份文件(可选)
find $BACKUP_DIR -type f -name "full_backup_*.sql" -mtime +7 -exec rm {} \;
find $BACKUP_DIR -type f -name "diff_backup_*.sql" -mtime +7 -exec rm {} \;

将上述脚本保存为 backup.sh,并使用 chmod +x backup.sh 赋予执行权限。然后可以使用 crontab 设置定时任务:

代码语言:txt
复制
0 2 * * * /path/to/backup.sh

这将在每天凌晨 2 点执行备份脚本。

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • mysqldump备份技巧分享

    前言: mysqldump 是日常比较常用的一个工具了,在对数据库进行导出工作时,经常会用到 mysqldump 。本篇文章将介绍 mysqldump 工具的使用方法并分享几点备份技巧。...1.mysqldump使用简介 mysqldump 是 MySQL 系统自带的逻辑备份工具,主要用于转储数据库。...2.几点备份小技巧 虽然 mysqldump 不太适用于大数据量的备份,但因其具有灵活方便、可根据场景定制参数等优点,还是被广泛应用在数据导出领域。...笔者根据自己的使用经验,简单分享几点 mysqldump 备份小技巧: 建议使用 --single-transaction 参数来获得一致性备份,减少锁表。...下面分享几个不同场景下的 mysqldump 使用方法: # 备份全部数据库(包含存储过程、自定义函数及事件) mysqldump -uroot -pxxxxxx --single-transaction

    2.1K30

    mysqldump 备份的后门

    简介 mysqldump备份 MySQL 数据库的常用工具,其中会包含 创建表、删除表、插入数据 这些数据库操作的语句 而黑客可能会利用 mysqldump 来黑掉你的系统,在 dump 文件被导入时就会执行黑客设置好的...黑客具有 CREATE TABLE 权限,这也不难,很多开源系统的安装教程中都不会注意这点,可能其中某个步骤就是让你执行 GRANT ALL PRIVILEGES ON wordpress.* 3)使用 mysqldump...进行常规备份 4)黑客想要提升他们的权限,进而可以访问操作系统 过程 首先创建一个恶意表 CREATE TABLE `evil \!...id select user(),@@version/*` (test text); 之后使用 mysqldump 备份数据库 在正常情况下,dump 文件中应该是这样的结构 -- -- Table...小结 本文翻译整理自 https://blog.tarq.io/cve-2016-5483-backdooring-mysqldump-backups 这个安全点对我很有价值,我的 mysqldump

    1.5K80

    mysql逻辑备份mysqldump

    mysqldump工具备份: 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份...提供三种级别的备份,表级,库级和全库级 备份数据库 备份单个数据库 mysqldump --databases we -uroot -pAa123456 > /we/sjk.sql 备份多个数据库 mysqldump...-pAa123456 -d > /we/sjk.sql 数据库恢复 mysql -uroot -pAa123456 we < /we/sjk.sql 全库备份/恢复 备份 mysqldump -uroot...表(包含数据) mysqldump -uroot -pAa123456 we userc > /we/sjkb.sql 备份we库中的userc数据表的表结构(不含数据) -d参数,只备份表结构 mysqldump...-uroot -pAa123456 -d we userc > /we/sjkb.sql 备份we库的userc表的数据 -t参数,只备份数据 mysqldump -uroot -pAa123456

    2.1K90

    使用 mysqldump 备份 MySQL

    基本用法 mysqldump是一个客户端应用程序,可用于进行逻辑备份。它将生成必要的 SQL 语句来重现原始数据库。...> database_name.sql 库表架构备份 如果您只需要备份没有数据的数据库架构,请使用以下选项运行 mysqldump --no-data: $ mysqldump -u username...指定条件备份 如果您需要创建包含符合条件的数据的备份,您可以使用WHERE带有 mysqldump 的子句。...mysql``mysqldump``MYSQLDUMP_OPTIONS 安全注意事项 一些常见问题是关于如何从完整备份进行部分恢复。...例如,当您使用 备份数据库时mysqldump,您将获得用于创建数据库架构和从备份中插入数据的语句。 如果您只需要架构,则可以使用 --no-data 选项运行 mysqldump

    1K20

    MySQL备份工具——mysqldump

    MySQL的安装包里面提供了“mysqldump”工具,它可以执行逻辑备份,如果执行备份的对象是InnoDB存储引擎,则可以执行热备份,默认情况下,它对所有的引擎执行温备份。...在大多数的运维场景中,用户利用Linux的“crontab”,或Windows的任务调度程序自动运行“mysqldump”。...“mysqldump”可以将表的内容转储为文件,具有如下特点: 备份全部的数据库、指定的数据库,或指定的表。 允许在本地或远程进行备份。 独立于存储引擎。 生成文本格式的转储文件。...适用于少量的数据导出,但不是一个完整的备份解决方案。...一个基本的使用例如下: mysqldump --username --password=password db_name > backup.file 保证数据一致性 "mysqldump"可以通过如下选项保证数据的一致性

    49010

    MySQLDump备份方法

    mysqldump使用简介 mysqldump 是 MySQL 系统自带的逻辑备份工具,主要用于转储数据库。...几点备份小技巧 虽然 mysqldump 不太适用于大数据量的备份,但因其具有灵活方便、可根据场景定制参数等优点,还是被广泛应用在数据导出领域。...笔者根据自己的使用经验,简单分享几点 mysqldump 备份小技巧: 建议使用 --single-transaction 参数来获得一致性备份,减少锁表。...下面分享几个不同场景下的 mysqldump 使用方法: # 备份全部数据库(包含存储过程、自定义函数及事件) mysqldump -uroot -pxxxxxx --single-transaction...--single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql # 备份部分表 mysqldump -uroot -pxxxxxx

    2.3K00

    MySQL逻辑备份mysqldump

    MySQL 备份mysqldump mysqldump mysqldump工具备份: 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢...,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份 提供三种级别的备份,表级,库级和全库级 Usage: mysqldump [OPTIONS] database [tables] OR...全库备份 / 恢复 全库级备份: 考虑到数据库有innodb,也有其他类型的表,那么就只能锁表备份 [root@Admin ~]# mysqldump -p123 --lock-tables --all-databases...mysqldump+binlog 完全备份mysqldump)+增量备份(binlog) 适用于中小型数据库;通过结合二进制日志文件,把数据库恢复到最新的状态 二进制日志默认会记录下所有对数据库变化的操作...+binlog做增量备份——>通过binlog日志恢复到最新状态 •当前数据库必须开启二进制日志(修改配置文件) •使用mysqldump工具做全库备份 •更新数据 •直接恢复 •使用全库备份恢复 •使用

    1.2K10

    mysqldump备份容灾脚本(下)

    cd /ops/bak 解开最近时间点的全量备份包,最近时间是2016-04-06 tar -xf mybak-all-2016-04-06-00-00.tar.gz 解压后可以看到 mybak-all...解压增量备份的文件夹 ,因为这2个脚本是先后执行的,所以不需要解压6号前的,只解压6号及以后的。...mybak-section-2016-04-06-00-00.tar.gz 解压后可以看到 mysql-bin.000008 和 mysql-bin.000009 2个binlog日志 恢复第二步:全备份恢复...导入数据进去 mysql -uroot -p'123456' < mybak-all-2016-04-06-00-00.sql 用如下命令检查表的条目数是否是3000条,6号备份完成后,才添加的最后1000...mysql -uroot -p'123456' 检查表的条目数是否是3000条,因为在写入3000条后,mysqldmp全备刷新了一下binlog,这个最新的是14,而还没有写入任何东西时便执行增量备份

    1.4K20

    Mysql备份工具mysqldump--参数

    参数 Mysqldump命令参数 #获得帮助 --help #备份所有库,这样设置的账号密码什么的也会备份了 --all-databases #不缓冲查询,直接导出到标准输出。...#所以该参数明显不能保证各个表之间的数据一致性(特别是外键约束的父表和子表之间) #一致性快照说的是如果4点开始备份,那对数据做一个快照,6点结束了,这期间只会保存4点前的,新的改变不进行同步保存,根据...比如user=root,在执行mysqldump备份命令时候可以不用加--user了 --print-defaults #已不从任何选项文件读取默认选项 --no-defaults #只有给指定的文件读取默认选项...,默认是/etc/my.cnf --defaults-file= #在全局下面读取这个文件,同上一个参数 --defaults-extra-file= #备份所有的数据库 -A #导出全部表空间 -Y...session级别的sql_mode为空,避免可能有些sql_mode值对备份产生影响' 2017-07-01T17:42:17.779564+08:00 6 Query /*!

    1.5K30

    MySQL 数据备份&恢复(mysqldump 工具)

    数据无价,谨慎操作, 防止误删,学习备份......一、mysqldump 备份工具 MySQL自带的逻辑备份工具 它支持数据库全备或指定库备份备份的输出以文件形式保存 并且文件内容都是SQL语句 选项 含义 -A --all-databases导出...-databases导出一个或多个数据库 -d 只导出表结构 -t 只导出表内容 --tables 指定需要导出的表名 --single-transaction innodb热备启用一个大的事务完成的备份保证数据完整性...-uroot -p db_name > E:\dbname.sql #导出多个数据库 mysqldump -uroot -p -B db1 db2 > E:\dbname.sql #导出所有数据库...mysqldump -uroot -p -A > E:\dbname.sql 2.导出数据表(Table) #导出整张表,导出多张表需空格隔开 mysqldump -uroot -p123456 -B

    2.8K20

    mysqldump备份容灾脚本(中)

    /xx.sh -uroot -p'123456',将第一次增量备份后的binlog文件名写到/tmp/binlog-section中,若都没有,自动填写mysql-bin.000001 #过程:增量先刷新...binlog日志,再查询/tmp/binlog-section中记录的上一次备份中最新的binlog日志的值 # cp中间的binlog日志,并进行压缩。...再将备份中最新的binlog日志写入。 #恢复:先进行全量恢复,再根据全量备份附带的time-binlog.txt中的记录逐个恢复。当前最新的Binlog日志要去掉有问题的语句,例如drop等。...变量] begin_time=`date +%F-%H-%M-%S` my_sql="/usr/local/mysql/bin/mysql" bak_sql="/usr/local/mysql/bin/mysqldump..." >> ${log_dir} /usr/bin/echo >> ${log_dir} 二.备份策略 周日晚3点进行全量备份 周一到周六每天进行增量备份, 全量保存4周 增量保存近一周的每天数据 crontab

    1.1K00
    领券