MySQL data backup-full and incremental backup and recovery experiment (theory)

Full and incremental backup and recovery experiment

1. The importance of database backup

在生产的环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。

Causes of data loss

程序错误
人为商店
计算机失败
磁盘失败
灾难(如火山、地震)和偷窃

2. Classification of database backup

1. From a physical and logical point of view, backup can be divided into:

1.物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
  物理备份又可以分为脱机备份(冷备份)、联机备份(热备份)和温备份:
       冷备份:是在关闭数据库的时候进行的
       热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件
       温备份:数据库锁定表格(不可写入但可读写)的状态下进行备份操作
2.逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份

2. From the perspective of database backup strategy, backup can be divided into:

完全备份:每次对数据进行完整的备份
差异备份:备份那些自从上次完全备份之后被修改过的文件
增量备份:只有那些在.上次完全备份或者增量备份后被修改的文件才会被备份
差异与增量相辅相成

Three. MySQL full backup

完全备份是对整个数据库的备份、数据库结构和文件结构的备份
完全备份保存的是备份完成时刻的数据库
完全备份是增量备份的基础

1. Advantages of full backup

备份与恢复操作简单方便

2. Disadvantages of full backup

数据存在大量的重复
占用大量的备份空间
备份与恢复时间长

Four. mysqldump backup library

1. MySQL database backup can be done in many ways

直接打包数据库文件夹,如/usr/local/mysql/data
使用专用备份工具mysqldump

2.mysqldump command

MySQL自带的备份工具,相当方便对MySQL进行备份
通过该命令工具可以将指定的库、表或全部的库导出为SQL脚本,在需要恢复时可进行数据恢复

The mysqldump command makes a full backup of a single library

mysqldump -u用户名-p  [密码] [选项] [数据库名] > /备份路径/备份文件名

The mysqldump command makes a full backup of multiple libraries

mysqldump -u 用户名 -p [密码] [选项] --databases 库名1 [库名2]... >/备份路径/备份文件名

Full backup of all libraries

mysqldump -u用户名-p [密码] [选项] --all-databases > /备份路径/备份文件名

3. mysqldump backup table

在实际生产环境中,存在对某个特定表的维护操作,此时mysqldump同样发挥重大作用

Use mysqldump to backup table operations

mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名

Use mysqldump to backup table structure operations

mysqldump -u 用户名 -p [密码] [选项] -d 数据库名 表名 > /备份路径/备份文件名

Five. Restore the database

1. The SQL backup script exported using the mysqldump command can be imported using the following methods when recovering data

source命令 数据库模式中运行
mysq|命令 Linux模式中运行

2. Steps to restore the database using source

登录到MySQL数据库
执行source备份sq|脚本的路径(绝对路径)

3.source recovery example

MySQL [(none)] > source /backup/all-data.sql

4. Use mysq| command to restore data

mysql -u用户名-p [密码] <库备份脚本的路径

Six. Recovery table operation

1.恢复表时同样可以使用source或者mysql命令进行
2.source恢复表的操作与恢复库的操作相同
3.当备份文件中只包含表的备份,而不包括创建库的语句时,必须指定库名,且目标库必须存在
mysql -u用户名-p [密码] < 表备份脚本的路径

mysql -u root -p mysql < /backup/mysql-user.sql

4.在生产环境中,可以使用shell脚本自动实现定期备份

Seven. MySQL backup ideas

1. Regularly implement backups, formulate backup plans or strategies, and strictly abide by them

2. In addition to performing a full backup, it is important to turn on the log function of the MySQL server

完全备份加上日志,可以对MySQL进行最大化还原
MySQL-bin:MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了   数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容

3. Use a uniform and easy-to-understand backup file name

不要使用backup1、backup2等这样没有意义的名字
推荐使用库名或者表名加上时间的命名规则

8. MySQL incremental backup

1. Problems with using mysqldump for full backup

备份数据中有重复数据
备份时间与恢复时间长

2. Incremental backup is to back up files or content that have been added or changed since the last backup

3. Features of incremental backup

没有重复数据,备份量不大,时间短
恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有 增量备份进行逐个反推恢复

4. MySQL does not provide a direct incremental backup method

可以通过MySQL提供的二进制日志(binary logs)间接实现增量备份

5. The meaning of MySQL binary log for backup

1.二进制日志保存了所有更新或者可能更新数据库的操作
2.二进制日志在启动MySQL服务器后开始记录,并在文件达到max_ binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件
3.只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些旧的日志保存到安全的地方就完成了一个时间段的增量备份

Nine. MySQL database incremental recovery

1. General recovery:

添加数据—进行完全备份—录入新的数据—进行增量备份—模拟故障—恢复操作

method

mysqlbinlog [--no-defaults]增量备份文件 | mysql -u用户名 -p

2. Recovery based on location

就是将某个起始时间的二进制日志导入数据库中,从而跳过某个发生错误的时间点实现数据的恢复

method

恢复数据到指定位置
mysqlbinlog --stop-position=操作'id' 1进制日志 | mysql -u用户名 -p 密码

3. Based on point-in-time recovery

使用基于时间点的恢复,可能会出现在一个时间点里既同时存在正确的操作又存在错误的操作,所以我们需要一种更为精确的恢复方式

method

1.从日志开头截止到某个时间点的恢复
mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码

2.从某个时间点到日志结尾的恢复
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码

3.从某个时间点到某个时间点的恢复
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小时:分钟:秒' --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码

Nine. View the binary log file (decoding)

mysqlbinlog --no-defaults --base64-output=decode-rows -V mysql-bin.000002 > /opt/ bak. txt

Guess you like

Origin blog.csdn.net/weixin_45647891/article/details/111639517