全面了解Mysql(九)备份与恢复

  1. 数据库备份种类
    按备份时数据库的状态分:1)热备份,数据库运行,且对数据库没有影响。2)冷备,数据库停止状态。3)温备,数据库运行,但是备份对数据库有影响。
    按备份后的文件内容分:1)逻辑备份,备份出来的文件内容可读。2)裸文件备份,备份的是数据库的物理文件,这种文件恢复速度快
    按照备份数据库内容来分:1)完全备份。2)增量备份,第一次完全备份,以后每次增量备份,主要依靠前面提到的lsn,以后备份都会去比较lsn,只有大于当前的lsn页会被备份。3)日志备份,依靠前面文件时提到的二进制日志文件,数据库复制或者说分布式数据库都是这个原理。
  2. 冷备份
    停止mysql数据库,备份共享表空间,独立表空间,还有表结构,同时带上my.cnf配置文件,备份简单,恢复也很简单,只需要复制相关文件到对应位置
  3. 逻辑备份
    1)mysqldump,可以使用 --help查看相关语法,常见的就是
 mysqldump -u用户名 -p 数据库名 --single-transaction >文件

也可以对某些表进行备份,就是在数据库名后跟上表名就可以了,这样备份不带删除表语句,可以添加参数 --add-drop-database
2)使用 select …into outfile进行表备份
3)逻辑备份的恢复
使用mysqldump备份的可以使用

mysql -u用户名 -p密码 < 脚本

或者登录mysql后使用

source 脚本

如果使用mysqldump-tab或者select … into outfile导出的数据需要恢复可以使用
登录myslq

load data into table a ignore 1 lines infie '脚本'

可以设置参数 foreign_key_checks=0来关闭外键检查加快导入速度
mysql为了方便使用load data infile提供了一个命令行程序mysqlimport,和load data infile不同的是mysqlimport可以并发的导入多个文件

mysqlimprot --use-threads=线程数,和文件数相同就好 数据库 脚本
  1. 二进制日志备份
    二进制文件可以完成point-in-time的恢复工作,在复制二进制日志时最好先执行下flush logs来生成新的日志文件,然后备份之前的文件。
    恢复二进制日志文件也很简单,使用
mysqlbinlog log_file | mysql -u用户名 -p密码 数据库名

也可以一次导入多个log文件

mysqlbinlog * | mysql -u用户名 -p密码 数据库名

最好是通过mysqlbinlog 导出到文件,在使用source来导入

mysqlbinlog log_file > 脚本

如果技术上去了还可以使用 --start-position和–stop-position来跳过错误语句。

  1. 热备
    mysql提供了ibbackup可以进行热备,在线备份不阻塞任何sql语句,备份性能好,支持压缩,但是不免费。所以常用的是xtraBackup工具,它实现了所有ibbackup功能,而且免费开源,使用地址见博客https://blog.csdn.net/qq_31075763/article/details/102496381
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章