Mysql数据备份与恢复方案

该文档详细描述了一个MySQL数据库的每日全量备份流程,包括在Docker中的MySQL备库创建备份目录,编写并执行备份脚本,利用crontab设定定时任务,以及设置远程服务器的免密登录以实现备份文件的异地存放。同时,也提供了数据恢复的操作步骤。
摘要由CSDN通过智能技术生成

1. 需求描述

1.1 需求

备份目标:数据库(mysql)

备份周期:每天一次

备份方式:全量备份

备份存放:异地存放

1.2 环境介绍

应用应用名称启动方式所在服务器应用数据目录
主数据库Mysql_masterDocker172.16.0.57/data/containers/mysql
备数据库Mysql_saveDocker172.16.0.208/data/containers/mysql

1.3 备份存放环境

存放服务器:172.16.0.47

存放目录:/data/remove_backup/mysql_backup  

备份策略:保留最近3次备份

1.4 配置远程免密登录(用作文件传输)

   在172.16.0.29 服务器执行以下操作

   # ssh-keygen

   一直按回车,直到结束

   # ssh-copy-id 172.16.0.47

   输入172.16.0.208服务器root密码

   测试能否免密登录服务器

   # ssh 172.16.0.47

在172.16.0.208 服务器执行以上相同操作

   备注:也可以使用明文密码scp

2. 备份操作

2.1 数据库备份(以下操作在mysql备服务器上执行)

数据库备份在备库每晚12点进行

2.1.1 在备数据库服务器创建备份目录

# mkdir -p /data/mysql_backup

2.1.2上传备份脚本.mysql_backup.sh到/data/mysql_backup

     - 或  -

     在/data/mysql_backup目录下创建脚本文件.mysql_backup.sh

     # vim .mysql_backup.sh

     # chmod +x .mysql_backup.sh 

注意:不要漏了脚本前面的` . ` ;由于脚本中带有数据库账号密码,本着安全设置为隐藏文件。

------------------ 

#!/bin/bash

#数据库的定时备份

DATETIME=`date +%Y%m%d`

#定义本地备份的信息

BACKUP_DIR="/data/mysql_backup"

BACKUP_NAME="all_$DATETIME.sql"


if [ ! -d "$BACKUP_DIR" ];then

   mkdir -p $BACKUP_DIR

fi


#执行mysql的备份数据库指令

docker exec mtwomysql mysqldump -uroot -p123456 --lock-tables=0 --default-character-set=utf8 --all-databases >$BACKUP_DIR/$BACKUP_NAME



#删除3天前的备份文件

find $BACKUP_DIR -mtime +3 -name "*.sql" -exec rm rf {} \;

echo "===========backup success======"


#定义远程备份

REMOVE_IP="172.16.0.47"

REMOVE_USER="root"

REMOVE_PORT=22   

REMOVE_BACKUP_DIR="/data/remove_backup/mysql_backup"


scp $BACKUP_DIR/$BACKUP_NAME  $REMOVE_USER@$REMOVE_IP:$REMOVE_BACKUP_DIR/


#远程文件清理

ssh -p $REMOVE_PORT $REMOVE_USER@$REMOVE_IP "find $REMOVE_BACKUP_DIR -mtime +3 -name \"*.sql\" -exec rm -rf {} \;"


echo "===========scp success========"

------------------  

说明: BACKUP_DIR            本地存放备份文件地址

      REMOVE_IP             远程存放服务器IP

REMOVE_USER           远程服务器登录用户

REMOTE_PORT           远程服务端口

      REMOVE_BACKUP_DIR     远程存放服务器目录位置

2.1.3 创建定时任务

# crontab -e

输入小写 i  编辑文件,在文件结尾添加如下信息:

 0 */48  * * *    /data/mysql_backup/.mysql_backup.sh

  

输入 :wq  保存

3. 恢复操作

3.1 数据库mysql恢复

将备份的SQL文件拷贝到数据库服务器上

执行以下命令进行数据恢复:

# docker  exec  mysql_save  sh -c “ mysqldump  -u  root  -p123456  < all.sql”

使用root账号登录mysql数据库执行以下命令:

# source  all.sql

注释: mysql_save数据库容器名称

       123456 数据库密码

       all.sql 备份的数据文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值