mysql的备份和恢复

mysql的备份和恢复

备份:完全备份 增量备份
完全备份:将整个数据库进行备份
增量备份:在完全备份的基础上,对后续新增的内容进行备份

备份需求:
1、在生产环境中,表的安全至关重要,任何数据都可能产生非常严重的后果,
2、数据丢失,程序操作错误,运算错误,不可预期的事件,人为操作。
冷备份:停止mysql服务进行备份。
热备份:无需停止mysql服务进行备份。
物理备份:对数据库系统文件(数据文件、日志文件)进行备份。、
逻辑备份:只对数据库的逻辑组件进行备份,(表结构),以sql语句形式,把库、表结构,表数据进行备份保存(直接在数据库系统中删除全部文件,逻辑备份无法恢复。)

物理备份

物理备份:完全备份,对整个数据库进行完整的打包备份
优点:操作简单
缺点:数据库文件占用量是很大的,占用空间太大,备份和恢复的时间都很长。而且需要暂定数据库服务.
打包备份最好是把服务关掉,避免有新的数据进入,被覆盖。也可能会导致恢复失败。

物理冷备份和物理热备份

特点:简单。
数据量:占用的备份空间比较大。
mysqldump:这是mysql自带的备份文件的命令
特点:方便,简单。但是只能基于逻辑上的表结构和表数据恢复。物理删除之后再用逻辑恢复会报错。也可以做数据迁移,占用空间大,比较物理备份相对来说占的空间要小的多。

逻辑备份

热备份当中的逻辑备份

这是mvsql自带的工具: mysqldump

mysqldump备份:

备份数据库格式:mysqldump -u root -p --databases 数据库 > 指定备份文件存放路径

备份库中数据库格式: mysqldump -u root -p 库名 表名 表名 > 指定备份文件存放路径

注:多库 和 库中多表 用空格隔开
单数据库:mysqldump -u root -p --databases kgc > 指定备份文件存放路径
多个数据库:mysqldump -u root -p --databases kgc kgc1 > 指定备份文件存放路径
全部数据库:mysqldump -u root -p --all-databases > 指定备份文件存放路径

备份kgc库中的info1和info2表 mysqldump -u root -p kgc info1 info2 > /opt/kgc_info1-2.sql

mysqldump恢复

恢复库格式:mysql -u root -p < 指定备份文件存放路径
mysql -u root -p < 指定备份文件存放路径

备份kgc库中的info1和info2表 mysqldump -u root -p kgc info1 info2 > /opt/kgc_info1-2.sql


mysql-u root -p123456 -e 'show databases';
-e 进入数据库执行完括号内命令有直接退出

增量备份

mysqldump支持增量备份
优点:没有数据重复,备份量小,时间短;增量备份恢复表数据期间,表会锁定。
缺点:备份时锁定表,影响业务。超过10G,耗时会比较长,导致服务不可用

增量备份过程:

1、mxsql提供的二进制日志间接的实现增量备份。
二进制文件:修改配置文件
打开二进制日志文件
vim /etc/my.cnf
----------
log-bin=mysql-bin
binlog_format=MIXED
----------
systemctl restart mysqld

mysql一进制日志记录格式有三种
1.STATEMENT:基于sql语句
记录修改的sql语句,高并发情况下,记录sql语句时候的顺序可能会出错,恢复数据时可能会导致丢失和误差。效率比较高.
2.ROW:基于行
精准记录每一行的数据,准确率高,但是恢复的时效率低
3.MIXED: 即可以根据sql语句,也可以根据行
在正常情况下使用STATEMENT,一旦发生高并发


查看新增日志:

格式:mysqlbinlog --no-defaults --base64-output=decode-rows -v 断点文件名

断点:

格式:mysqladmin -u root -p flush-logs

mysql的备份和恢复_第1张图片

恢复:
格式:mysqlbinlog --no-defaults 断点文件 | mysql -u root -p

位置点恢复

1.从某一个点开始,恢复到最后
格式:mysqlbinlog --no-defaults --start-position='位置点' 文件名 | mysql -u root -p
从开头,一直恢复到某个位置
2.开头到指定点
格式:mysqlbinlog --no-defaults --stop-position='位置点' 文件名 | mysql -u root -p
3.指定点到指定点
格式:mysqlbinlog --no-defaults --start-position='位置点' --stop-position='位置点' 文件名 | mysql -u root -p

mysql的备份和恢复_第2张图片

时间点恢复

1.从指定时间点开始恢复
格式:mysqlbinlog --no-defaults --start-datatime='时间点' 文件名 | mysql -u root -p
2.从开头到指定时间点
格式:mysqlbinlog --no-defaults --stop-datatime='时间点' 文件名 | mysql -u root -p
3.从指定时间到指定时间
格式:mysqlbinlog --no-defaults --start-datatime='时间点' --stop-datatime 文件名 | mysql -u root -p

mysql的备份和恢复_第3张图片

注:同名的数据覆盖掉原有的,不同名则增加表。

show variables like 'general%';
#查询是否开启通用日志访问记录
 
show variables like 'log_bin%';
#查询二进制日志是否开启
 
show variables like 'slow%';
#查询是是否开启慢查询访问日志

你可能感兴趣的:(adb)