- 数据库备份种类
按备份时数据库的状态分:1)热备份,数据库运行,且对数据库没有影响。2)冷备,数据库停止状态。3)温备,数据库运行,但是备份对数据库有影响。
按备份后的文件内容分:1)逻辑备份,备份出来的文件内容可读。2)裸文件备份,备份的是数据库的物理文件,这种文件恢复速度快
按照备份数据库内容来分:1)完全备份。2)增量备份,第一次完全备份,以后每次增量备份,主要依靠前面提到的lsn,以后备份都会去比较lsn,只有大于当前的lsn页会被备份。3)日志备份,依靠前面文件时提到的二进制日志文件,数据库复制或者说分布式数据库都是这个原理。 - 冷备份
停止mysql数据库,备份共享表空间,独立表空间,还有表结构,同时带上my.cnf配置文件,备份简单,恢复也很简单,只需要复制相关文件到对应位置 - 逻辑备份
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=线程数,和文件数相同就好 数据库 脚本
- 二进制日志备份
二进制文件可以完成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来跳过错误语句。
- 热备
mysql提供了ibbackup可以进行热备,在线备份不阻塞任何sql语句,备份性能好,支持压缩,但是不免费。所以常用的是xtraBackup工具,它实现了所有ibbackup功能,而且免费开源,使用地址见博客https://blog.csdn.net/qq_31075763/article/details/102496381