一、备份与恢复
MySQL备份与恢复
备份
备份方式
是否停业务
冷备:停掉业务或DB进行备份(copy、rsync)
热备:不停业务的情况下进行备份
逻辑备份:导出SQL脚本进行备份
mysqldump:只支持单线程工作
mysqlpump:并行的最小粒度是单个数据库对象,对于每张表的导出只能是单个线程的
mydumper:支持对单表多个线程备份,参数-rselectinto outfile
物理备份:通过拷贝文件进行备份
xtrabackup+binlog
是否拷贝所有数据
全量备份:某一时刻整个数据库快照
增量备份:首次增量基于全量,后续增量可选择基于全量/增量
保存位置
本地备份
远程备份
备份原理
mysqldump、mysqlpump、mydumper、xtrabackup备份原理
InnoDB Crash Recovery
MySQLD Crash Recovery和InnoDB Crash Recovery的区别
redo大小调整:5.6以上直接修改my.cnf;5.6以下在apply-log前修改backup-my.cnf中的innodb_log_file%DML、DDL操作对备份的影响
DML操作可能导致mysqldump、mysqlpump备份的non-InnoDB表不一致
DDL操作可能导致InnoDB表开启一致性快照事务之后,如果表结构定义发生改变,事务将无法对该表执行查询
备份方案选择
数据量小:逻辑备份
数据量大:xtrabackup+binlog,日常备份使用方案
恢复
备份时刻恢复
物理备份->copy-back;逻辑备份->mysql、myloader、source
任意时间点恢复
binlog2sql实现对误操作的闪回
全备+mysqlbinlog
高级技术
原始节点做master,恢复节点做slave
copy binlog2 relay-log利用sql_thread应用日志
binlog伪装成master,利用io_thread读取日志恢复
View Code
对于数据量超大的情况,建议结合Delayed Replication。其实最好是做分库分表,控制单实例的大小●-●
二、备份参考
2.1、txt、csv导出导入
1、备份生成文本1.1、mysqldump -T
mysqldump-T 批量导出表结构 tablename.sql(对应逻辑show create table)和数据文件 tablename.txt(对应逻辑select into outfile)
mysqldump-h127.0.0.1 -P3306 -umydba -p123456 --skip-lock-tables sbtest sbtest1 -T /tmp/
1.2、selectinto outfile
mysql> select * from sbtest.sbtest1 into outfile '/tmp/sbtest1.csv';
注意上面两种方式目标路径要和 secure_file_pr