使用linux命令定时备份还原数据库

一、定时备份

1、找到合适位置创建文件夹,放置脚本文件和备份数据
创建备份数据库的脚本路径
mkdir -p /usr/local/msyql/mysql_backup
创建存放备份数据的路径
mkdir -p /usr/local/mysql/database_bak/
进入备份数据库的脚本路径
cd /usr/local/mysql/mysql_backup
创建脚本并填写内容
vi mysql_backup.sh
2、填充mysql_backup.sh脚本的内容

#!/bin/bash
#================基础参数===============
#这里的用户名输入自己的用户名
user="root"
#这里的密码输入自己的密码
password="123456"
port="3306"
#备份库名列表,括号内多个数据库空格隔开,这个也是自己的数据库名称
db_name_array=("test")
#备份位置(若不存在,会自动创建)
datafile_path="/usr/local/mysql/database_bak"
#mysqlDump的绝对位置,基本为mysql安装路径
mysqlDump_path="/usr/bin/mysqldump"
#是否删除.sql文件(包含子目录): ON开启,其他字符不开启
rf_switch="ON"
#备份数据保留天数(按文件修改时间计算)
expire_day=10
#================非开发人员勿改================
#备份最终路径,db_name是自己的数据库名称
bak_path="${datafile_path}/${db_name}"
#错误日志文件名称
error_log="${bak_path}/${db_name}_error.log"
#================备份执行指令================
#判断文件夹,不存在则创建
if [ ! -d "$bak_path" ]
then
 mkdir -p  ${bak_path}
 echo "已创建文件夹${bak_path}"
#这个是和if对着的
fi
#判断mysql是否开启 
# lsof要root权限启动
checkPort=`lsof -i:${port} | wc -l`
if [ "$checkPort" -gt "0" ]
then
 echo "mysql 已启动"
else
 echo "mysql 未启动无法进行备份"
 echo "mysql 未启动无法进行备份" > $error_log
fi

#执行备份,
for db_name in ${db_name_array[*]}
do
${mysqlDump_path} --defaults-extra-file=/etc/my.cnf --databases $db_name | gzip > ${bak_path}"/"$db_name$'_'$(date +%Y%m%d).sql.gz 2>>${error_log}
done
#删除过期文件
if [ $rf_switch == "ON" ]
then
 find ${bak_path} -name "*.sql" -mtime +${expire_day} | xargs rm -f
fi

3、脚本增加权限

chmod +x ./mysql_backup.sh
4、安装lsof
yum install -y lsof
6、修改mysql配置文件
vi /etc/my.cnf
在文件末尾加入下面内容(密码是数据库的密码):
[mysqldump]
user=root
password=你的密码
5、测试脚本运行
./mysql_backup.sh

6、设置定时自动执行备份脚本
打开脚本
crontab -e

编辑脚本
#每天下午4点半执行脚本
30 16 * * * sudo /usr/local/mysql/mysql_backup/mysql_backup.sh
二、接收方自动接收数据库备份
在接收方上操作:
1.安装sshpass
yum install sshpass

2.设置定时传输备份
打开脚本
crontab -e

编辑脚本
#定时拷贝生产库的备份
30 16 * * * sshpass -p ‘admin’ scp -r admin@192.168.60.204:/usr/local/mysql/database_bak/* /usr/local/mysql/database_bak
创建存放备份数据的路径
mkdir -p /usr/local/mysql/database_bak/

三、数据库定时还原脚本
1、首先在接受方服务器上创建一个定时还原的脚本

vi /usr/local/mysql/mysql_backup/Reduction.sh
然后可以打开脚本
#这里写自己发送方的数据库名称,也是将数据库名称封装在变量中
db_name=‘test’
#将定时时间封装在变量中
DATE=date +%Y%m%d
#备份所在的文件路径
DIR=/usr/local/mysql/database_bak
echo $DIR
#解压备份文件
gunzip D I R / DIR/ DIR/db_nameKaTeX parse error: Expected group after '_' at position 2: '_̲'DATE.sql.gz

#前边都是为了最后这一步
mysql --defaults-extra-file=/etc/my.cnf $db_name < D I R / DIR/ DIR/db_nameKaTeX parse error: Expected group after '_' at position 2: '_̲'DATE.sql

2、切换到路径下,给脚本增加权限
cd /usr/local/mysql/mysql_backup
chmod 755 ./ Reduction.sh
3、修改mysql配置文件vi /etc/my.cnf
在文件末尾加入下面内容:
[mysql]
user=root
password=你的密码
4、设定定时
打开脚本
crontab -e

在脚本最后一行添加
#固定时间执行执行还原脚本
30 16 * * * sudo /usr/local/mysql/mysql_backup/Reduction.sh

i

总结:

使用 Linux 命令定时备份和还原数据库具有许多重要的意义和优势,特别是对于数据库管理和数据保护方面。以下是一些主要的意义:

  1. 数据安全和冗余: 数据库可能会因为硬件故障、人为错误、恶意攻击等而丢失。定时备份可以创建数据的冗余副本,以保护数据免受意外损坏的影响。

  2. 数据恢复能力: 如果数据库损坏或数据丢失,定时备份将提供一种手段来还原数据,使业务能够迅速恢复正常运作。

  3. 业务连续性: 数据库是许多业务的核心,定时备份确保即使发生数据丢失,业务也能够在较短的时间内继续运行。

  4. 避免数据丢失: 定时备份可以减少因为数据丢失而造成的信息损失,特别是对于重要的业务数据和客户信息。

  5. 数据完整性: 定时备份可以帮助维护数据的完整性,确保数据在备份和还原过程中不会受到破坏。

  6. 防止人为错误: 人为错误可能导致数据的意外删除或更改。定时备份可以提供保护机制,以便在错误发生时能够恢复正确的数据状态。

  7. 数据库管理: 定时备份和还原是数据库管理的一部分,有助于管理数据、执行维护任务和优化性能。

  8. 合规性和法规要求: 对于某些行业,定时备份是符合法规和合规性要求的一部分,以确保数据的保护和可恢复性。

  9. 减少停机时间: 定时备份可以在业务低谷期间执行,以减少对业务运行的干扰,从而减少停机时间。

  10. 数据迁移和测试: 定时备份可以用于数据库的迁移、升级和测试,以确保新环境中的数据与原始环境一致。

总之,定时备份和还原数据库是保护数据完整性、安全性和可用性的关键步骤。它可以在数据丢失或损坏时提供一个备用计划,使企业能够迅速恢复并继续业务运作。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Circ.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值