84 lines
3.6 KiB
Text
84 lines
3.6 KiB
Text
备份对象:
|
||
数据
|
||
配置文件
|
||
代码:存储过程,存储函数,触发器
|
||
OS相关的配置文件,如crontab及相关脚本等
|
||
|
||
跟复制相关的配置:二进制日志文件
|
||
|
||
备份工具:
|
||
mysqldump:逻辑备份工具
|
||
InnoDB热备、MyISAM温备、Aria温备
|
||
备份和恢复过程慢
|
||
mysqldumper:多线程的mysqldump
|
||
难实现差异或增量备份
|
||
|
||
lvm-snapshot:
|
||
接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁
|
||
使用cp、tar等工具物理备份,备份与恢复速度快
|
||
难以实现增量备份,并且请求全局锁需要等待一段时间,在繁忙的服务器上更慢
|
||
|
||
select clause into outfile '/path/to/somefile'(备份)
|
||
load data infile '/path/from/somefile' (恢复)
|
||
部分备份工具,不会备份关系定义,仅备份表中的数据
|
||
逻辑备份工具,快于mysqldump
|
||
|
||
Innobase:商业备份工具,Innobackup
|
||
Xtrabackup:开源备份工具
|
||
InnoDB热备,增量备份
|
||
MyISAM温备,不支持增量
|
||
物理备份,速度快
|
||
|
||
|
||
mysqldump:适用于数据量较小的情况(注意备份前要加锁)
|
||
mysqldump [options] [db_name] [tb_name]
|
||
备份单个数据库:mysqldump -u 用户名 -h 主机 -p 数据库 > 备份文件
|
||
恢复时,如果目标库不存在,需要事先手动备份 mysql -u 用户名 -h 主机名 -p 数据库名 < 备份文件
|
||
|
||
备份所有库:mysqldump --all-database > 备份文件
|
||
备份指定多个库: mysqldump --databases db1 db2
|
||
|
||
|
||
--lock-all-tables:请求锁定所有表之后再备份,对InnoDB,MyISAM,Aria做温备
|
||
--single-transaction:能够对InnoDB存储引擎实现热备
|
||
|
||
备份代码:
|
||
--events:备份事件调度器代码
|
||
--routines:备份存储过程与存储函数
|
||
--triggers:备份触发器
|
||
备份时滚动日志
|
||
--flush-logs:备份前、请求到锁之后滚动日志
|
||
复制时的同步位置标记
|
||
--master-data=[0|1|2]
|
||
0:不记录
|
||
1:记录为change master语句
|
||
2、记录为注释的change master语句
|
||
|
||
备份InnoDB存储引擎的数据库:mysqldump --database 数据库 --single-transaction -flush-logs --master-data=2 > 数据文件
|
||
备份MyISAM存储引擎的数据库:mysqldump --database 数据库 --lock-all-tables -flush-logs --master-data=2 > 数据文件
|
||
|
||
|
||
恢复时,查看备份文件中记录的标记位置(--master-data=2参数实现,mysqlbinlog文件中的位置)
|
||
关闭其他连接,然后使用mysqlbinlog --start-position=标记位置 --end-position=结束标记 binlog文件 > 恢复文件
|
||
关闭binlog日志记录([交互]set session sql_log_bin=0)
|
||
执行全量备份脚本及binlog中抽出的数据文件
|
||
开启binlog日志记录([交互]set session sql_log_bin=1)
|
||
|
||
滚动二进制文件:mysqldump flush-logs
|
||
|
||
lvm-snapshot:
|
||
step1: 锁表,保证数据的一致性。flush table with read lock;
|
||
|
||
step2:滚动日志flush logs;
|
||
|
||
step3:查看master二进制当前的状态,以便slave的复制使用,或者其他的恢复使用。show master status;
|
||
|
||
step4: 为mysql数据目录所在的lvm做快照(-p r只读) lvcreate -s -n sqlbak_snap -L 100M -p r /dev/sqlbak/sqlbck_lv
|
||
|
||
step5: 解锁unlock tables;
|
||
|
||
step6: 挂载快照卷到一个目录下
|
||
|
||
就可以读取里面的数据。当然也可以mv到其他的目录下用来恢复。
|
||
|
||
step7: 卸载快照卷。删除快照卷 lvremove /dev/sqlbak/sqlbck_lv
|