备份与恢复
注意事项:
1)mysql因为是inodb存储引擎支持事务,因此能够支持热备只需将事务的隔离级别改成REPEATABLE READ(可重复读),这样在某个特定的时间采用热备份,就不会出现在备份的途中将其他事务提交的结果备份进去。
2)备份完数据后要做还原演练否则如果备份失败会造成无法还原的情况
3)查看笔记中的备份准则
冷备
备份)通过rsync工具进行增量冷备(这里二进制日志和数据库文件都放mysql,生产中二进制日志要分开放分别进行拷贝)
rsync -a /var/lib/mysql 10.0.0.100:/data ### -a 保留属性,否则可能无法拷贝
恢复)如果数据库"彻底"崩溃可将备份文件下的所有内容复制到数据库文件夹中
注意:备份的文件版本号要与当前当前数据库版本相同否则会报错,使用冷备需要将mysql宕机不推荐使用
cp -a /data/mysql/* /var/lib/mysql/
热备
命令: mysqldump(逻辑备份工具)能够实现完全和部分备份,其本身不支持增量和差异备份,配合binlog可实现增量备份
mysqldump -A -uroot -p'123456' >/PATH/xxx.sql ###备份所有数据库不包括内存数据库且多个数据库备份到同一个文件中(不灵活)
mysqldump -B -uroot -p'123456' 数据库名 >/PATH/xxx.sql ###备份指定数据库,数据库名可通过mysql -e调用mysql命令show databases;查看所有数据库使用awk进行取值并循环赋值到数据库名为$i,以脚本的方式备份多个数据库文件,倘若单个数据库崩溃会恢复的更加灵活
缺点:不会"备份数据的基本属性也即是字符集 触发器 函数事件等这些配置"
完全备份):
--single-transaction :开启事务进行备份,innodb事务隔离级别默认为REPEATABLE READ,如果不是请设置,能够精准的备份某个时间点以前的数据。
--master-data= :1 级别用于实现master slave 备份,因为这里没有实现主从数据库因此采用2
mysqldump -uroot -p'123456' -A -F -E -R --triggers --single-transaction --master-data=2 --default-character-set=utf8 --hex-blob --flush-privileges >/data/all_`date +%F`.sql
<完全备份后查看 all_`date +%F`.sql 可以看到二进制日志备份到了哪一个以及MASTER_LOG_POS(日志的结束位置标记为156)>
增量备份)因为完全备份中记录的结束位置为156,那么进行增量备份时就要从156开始备份。
--start-position=156 :开始备份的位置
mysqlbinlog binlog.000004 --start-position=156 > inc.sql
恢复)
第一步:将二进制日志功能关闭,因为在恢复数据的过程中也会记录在日志中。
set sql_log_bin=off;
第二步:先还原完全备份
source /data/all_2021-06-18.sql;
第三步:还原增量备份(由上一个完全备份或者增量备份的二进制日志position的结束位置开始转储的备份文件)
source /data/binary_logs/inc.sql;
第四步:开启二进制日志功能
show binary logs;
:
posted on 2021-06-18 16:11 1251618589 阅读(3) 评论(0) 编辑 收藏 举报