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

简介: 使用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

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
15天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
103 6
|
16天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3
|
16天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
48 2
|
10天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
44 3
|
16天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
53 3
|
19天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
55 6
|
19天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
19 2
|
23天前
|
缓存 监控 Linux
|
27天前
|
Linux Shell 数据安全/隐私保护
|
28天前
|
域名解析 网络协议 安全