tar做物理备份

12 篇文章 0 订阅
1 篇文章 0 订阅

tar cp scp 工具/备份数据库 一般用于完整全备份。

无法实现增量备份。

备份的过程: [ 完全 的 物理 方式 冷备。] 可以实现 完全备份 + 增量备份

备份步骤

  1. 施加全局锁
  2. 实施 tar 命令 压缩备份
  3. 复制备份好的数据库到备份目录
  4. 刷新二进制日志文件
  5. 立刻解锁

模拟数据丢失:

1、以某张表的数据 为依据, 例如学生表。 在这次备份完成后。
a\ 当前学生表多少条记录 1015条
b\ 当前使用的二进制日志,已经 它停留的位置
c\ 这次备份后,灾难发生于,下一次备份到来之前。

2、 模拟业务向前运行(插入 另外10条数据) , 这 10条 数据,存在哪个位置???

3、在没有任何预备的情况下, 停库,删除所有数据 rm -rf /data/mysql

然后执行还原过程

还原的过程:

  1. 如果软件损坏,就重装Mysql,先不要启动。
  2. 将完全备份恢复到 数据库 目录。 (## 恢复后的文件,权限 是否 都是 Mysql 用户 )
  3. 添加防火墙规则,临时禁止 3306 端口的连接 INPUT上加
  4. 启动数据库,检查是否有报错。 1015 条数据找回
  5. 找到 另外 10 条数据所在的 二进制日志文件,将他们导出。
    mysqlbinlog --start-position=154 /data/log-bin/mysql-bin.000003 > /root/03.sql
    6.停止 当前的 二进制日志的记录功能。
    mysql> set session sql_log_bin=0;
    7、导入数据
    mysql> source /root/03.sql;
    8、开启二进制日志记录功能
    mysql> set session sql_log_bin=1;
    查看验证。
    9、清除防火墙 规则。
    恢复流程 完毕。

备份脚本如下:

[root@mysql-21 /test]# cat full-backup.sh

#!/bin/bash
a_log="/root/mysql-bak.log"                      #mysql备份日志
a_dir=/backup                                       #备份路径
data_dir=/data/mysql                           # 备份数据库路径
data_name=`echo echo $data_dir | awk -F "/" '{print $NF}'`     #要备份的数据库名称
echo "=============`date`=====================">> $a_log
tail -1 /bin-log/mysql-bin.index >> $a_log     #备份mysql的二进制文件

echo "对/data/mysql的完全备份开始..."
time1=`date +%s`    #获得当前时间

#备份mysql的配置文件
cp /etc/my.cnf $a_dir/my-`date +%F-%H-%M-%S`.cnf     
mysql -uroot<<EOF
system echo "锁定表..."
flush table with read lock;
system cd $data_dir && cd .. && tar -zcf $a_dir/$data_name`date +%F-%H-%M-%S`.tar.gz mysql 2>> $a_log
unlock table;
system echo "解锁表..."
EOF
time2=`date +%s`    #获得备份结束时间
echo "备份完成时`expr $time2 - $time1`秒"


###########实现备份的回滚功能#################
 ##获取mysql备份数量,超过$num份后删掉最早的一份
num=5
count=`ls -lt $a_dir | grep "mysql" | wc -l`
if [ $count -gt $num ]
then
   rm -rf `ls -lt $a_dir | grep "mysql" |tail -1| awk '{print $NF}`
fi

 ##获取数据库配置文件my.cnf备份数量,超过$num份后删掉最早的一份
count1=`ls -lt $a_dir| grep "\<my\>".*cnf| wc -l`
if [ $count1 -gt $num ]
then
 rm -rf `ls -lt $a_dir| grep "\<my\>".*cnf| tail -1|awk '{print $NF}'

注意

当前配置环境是在centos7下,数据库的配置/etc/my.cnf
https://blog.csdn.net/ITCBD_l/article/details/89295541

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值