Docs/数据库/mysql/mysql备份恢复
2022-10-18 16:59:37 +08:00

84 lines
3.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

备份对象:
数据
配置文件
代码:存储过程,存储函数,触发器
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请求锁定所有表之后再备份对InnoDBMyISAMAria做温备
--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