脚本的实现在我的文章:https://blog.csdn.net/weixin_45946213/article/details/127221071?spm=1001.2014.3001.5501
完全备份作为:原始数据的保存
增量备份是作为:仅备份这之间的数据变化
备份类型
从物理与逻辑的角度分类可分为:逻辑备份、物理备份
从数据库的备份策略角度分类可分为:完全备份、差异备份、增量备份
完全备份:每次对数据进行完整的备份,即对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。完全备份的备份与恢复操作都非常简单方便,但是数据存在大量的重复,并且会占用大量的磁盘空间,备份的时间也很长。
差异备份:备份那些自从上次完全备份之后被修改过的所有文件,备份的时间节点是从上次完整备份起,备份数据量会越来越大。恢复数据时,只需恢复上次的完全备份与最近的一次差异备份。
增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份开始到最后一次增量备份之的所有增量依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。
查看日志是否开启log_bin
show variables like ‘%log_bin%’;
完全备份
如何备份多个表?
答:mysqldump -u用户 -p 数据库 表1 表2 …… 表N > 备份文件路径
如何备份1个数据库?
答:mysqldump -u用户 -p -B 数据库 > 备份文件路径
如何备份多个数据库?
答:mysqldump -u用户 -p -B 库1 库2 …… 库N >备份文件路径
如何备份所有数据?
答:mysqldump -u用户 -p -A >备份文件路径
//备份所有数据
mysqldump -uroot -p -A >D:\MySQL\backup\123.sql
增量备份
增量备份的关键命令:通过执行如下命令,使用新的日志文件:
执行后更新日志,便于返回
mysqladmin -uroot -p flush-logs
查看biglog日志
mysqlbinlog --base64-output=decode-rows -v DESKTOP-RHSPC6C-bin.000189
增量恢复
1.使用日志直接
从binlog日志恢复数据语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
mysqlbinlog /mysql/data/DESKTOP-RHSPC6C-bin.000181 | mysql -uroot -p pass_geteway
按位置恢复:
mysqlbinlog DESKTOP-RHSPC6C-bin.000172 --start-pos=121 | mysql -uroot -p333
按时间点恢复:
mysqlbinlog --no-defaults --stop-datetime="2020-04-30 15:29:05" E:\mysqlBackup\backup.000001|mysql -uroot -proot
2.把日志转sql文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v D:\mysql\Data\DESKTOP-RHSPC6C-bin.000189 > D:\MySQL\backup\123.sql
如何恢复
完全备份:使用sql文件
增量备份:mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
mysql -h 120.24.234.127 -P7360 -Dboos -uadmin --default-character-set=gbk -pgdsnm@2021 --ssl-mode=DISABLED < 1.sql