mysql的增量备份与全量备份

本文介绍了MySQL的全量备份与增量备份。全量备份可使用mysqldump备份整个库、单个库或表的结构与内容;增量备份基于数据库的bin - log日志,需开启二进制日志文件。还给出了相应的备份和恢复命令及脚本,建议生产环境一周或三天全量备份,一天一次增量备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


mysql的全量备份与增量备份

全量备份可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表。

备份所有数据库:
[root@my ~]# mysqldump -uroot -p123456 --all-databases >/opt/all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

备份单个数据库的所有表:
[root@my ~]# mysqldump -uroot -p123456 --databases test>/opt/test.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

备份数据库中的单个表的结构:
[root@my ~]# mysqldump -uroot -p123456 -d test userinfo >/opt/test_userinfo_jiegou.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

备份数据库中的单个表的内容:
[root@my ~]# mysqldump -uroot -p123456 test userinfo>/opt/test_userinfo_neirong.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.


增量备份:增量备份是针对于数据库的bin-log日志进行备份的,需要开始数据库的bin-log日志。增量备份是在全量的基础上进行操作的。增量备份主要是靠mysql记录的bin-log日志。(可以把二进制日志保存成每天的一个文件)

1.开启二进制日志文件;
[root@my ~]# echo -e "log-bin = /usr/local/mysql/logs/mysql_bin \nserver_id = 1\n max_binlog_size = 100M " >>/etc/my.cnf 

根据position值位置进行恢复;
[root@my ~]# mysqlbinlog --start-position=1 --stop-position=795 /usr/local/mysql/logs/mysql_bin.000001 |mysql -uroot -p123456

根据时间点位置进行恢复;-d指定数据库,选项-h指定主机
[root@my ~]#mysqlbinlog --start-date='2019-05-30 14:49:25' --stop-date='2019-05-30 14:52:39' -d linux -h127.0.0.1 /usr/local/mysql/logs/mysql-bin.000001 |mysql -uroot -p123456

将二进制日志文件中所有的数据记录全部恢复;
[root@my ~]# mysqlbinlog /usr/local/mysql/logs/mysql_bin.000001 |mysql -uroot -p123123


脚本:
全量备份:
[root@calldb1 ~]# cat /shell/fs_sql_bak.sh 
#!/bin/bash
##beifen sql

Bakdir=/data/sql-bak
Time=$(date +"%F_%T")
[ -f /usr/bin/mysqldump ] && echo "ok" || exit
/usr/bin/mysqldump -uroot -p123456 -R --all-databases > $Bakdir/$Time"_34.sql"
#echo $Bakdir/$Time"_34.sql"

增量备份:
[root@calldb2 shell]# cat zeng_sql.sh 
#!/bin/bash
## zeng liang bak sql
Logdir=/usr/local/mysql/logs
Time=$(date +%F)
mkdir $Logdir/"log-"$Time
find $Logdir -type f -mmin 1 -exec cp {} $Logdir/"log-"$Time/ \;

if [ -f $Logdir/"log-"$Time/mysql-bin.* ];then
  echo "mysql is zeng backup success on time-$(date +%F)" >>$Logdir/"log-"$Time/mysql_zeng_backup.log
else
  echo "mysql is zeng backup fail on time-$(date +%F)" >>$Logdir/"log-"$Time/mysql_zeng_backup.log
fi
mysqladmin -uroot -p123456 flush-logs >/dev/null

生产环境:
建议一周或者三天进行一次全量备份,一天一次增量备份。
 

<think>好的,我现在需要回答用户关于MySQL增量备份全量备份的区别及实现方法的问题。首先,我需要回忆一下这两种备份的基本概念,然后结合提供的引用内容来整理信息。 全量备份应该是指备份整个数据库,包括所有数据结构。用户提到的引用中多次出现mysqldump命令,比如引用[1][5],这可能就是全量备份的实现方式。特别是引用[5]中的命令使用了--all-databases参数,说明是备份所有数据库。而增量备份则是备份自上次备份以来发生变化的部分,可能需要用到二进制日志,比如引用[2][4]提到的flush logs查看备份是否成功,可能涉及到日志文件的处理。 接下来,我需要明确两者的区别。全量备份数据量大,恢复快,但耗时;增量备份数据量小,但恢复时需要先恢复全量备份再逐步应用增量日志,步骤更多。引用[3]提到恢复完全备份是用mysql命令导入sql文件,而增量可能需要用到mysqlbinlog处理日志。 关于实现方式,全量备份使用mysqldump,而增量备份可能需要启用二进制日志,并通过flush logs来生成新的日志文件,然后备份这些日志。引用[5]中的命令有--flush-logs--delete-master-logs,这可能是在全量备份后重置日志,为增量备份做准备。 需要检查引用中的具体命令步骤,确保信息准确。比如,全量备份脚本可能包含mysqldump命令,而增量备份可能涉及备份二进制日志文件,并配合定时任务执行,如引用[2]提到的Java定时任务执行bat脚本。 最后,整理回答的结构,先解释两者的定义区别,再分别说明实现方法,引用相关的引用来源,并在末尾生成相关问题。需要注意使用中文,数学表达式用$...$格式,独立公式用$$...$$,但这里可能用不上数学公式,所以重点在代码块引用标注。</think>### MySQL增量备份全量备份的区别及实现方法 #### 1. **全量备份** **定义**:全量备份指一次性备份数据库的所有数据(包括表结构、索引、存储过程等)[^1]。 **实现方式**: - 使用`mysqldump`命令导出完整数据: ```bash mysqldump -u用户 -p密码 --all-databases --single-transaction > backup.sql ``` 参数说明: - `--all-databases`:备份所有数据库[^5]; - `--single-transaction`:保证备份一致性(适用于InnoDB引擎)[^5]。 **特点**: - 备份文件较大,耗时较长; - 恢复时直接导入SQL文件即可(如`mysql -u root -p < backup.sql`)[^3]。 --- #### 2. **增量备份** **定义**:仅备份自上次备份后发生变化的数据,通常依赖二进制日志(Binary Log)记录所有数据变更操作[^2]。 **实现方式**: 1. **启用二进制日志**: 在MySQL配置文件中设置: ```ini [mysqld] log-bin=mysql-bin ``` 2. **定时备份增量日志**: - 手动刷新日志生成新文件:`mysqladmin -u用户 -p密码 flush-logs`[^5]; - 备份最近未备份的二进制日志(如`mysql-bin.000002`)。 **恢复流程**: 1. 先恢复最近的全量备份; 2. 使用`mysqlbinlog`工具按顺序应用增量日志: ```bash mysqlbinlog mysql-bin.000002 | mysql -u用户 -p密码 ``` **特点**: - 备份文件小,频率高; - 恢复需结合全量备份所有增量日志[^4]。 --- #### 3. **核心区别** | **维度** | **全量备份** | **增量备份** | |----------------|----------------------------------|----------------------------------| | **数据范围** | 完整数据库 | 仅变更数据 | | **备份速度** | 慢 | 快 | | **恢复速度** | 快(一步完成) | 慢(需逐步应用日志) | | **存储占用** | 大 | 小 | | **适用场景** | 初始备份或低频备份 | 高频备份以减少资源消耗 | --- #### 4. **典型应用场景** - **全量备份**:每周/月定期执行(如`backup_sunday_1_PM.sql`)[^3]; - **增量备份**:每日结合定时任务(如Java调用Windows批处理脚本备份日志)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值