使用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 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
相关文章
|
6天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用
|
20天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
33 11
|
2月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
99 14
Linux 10 个“who”命令示例
|
2月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
203 20
|
2月前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
140 8
|
2月前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
128 7
|
2月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
3月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
342 8
|
3月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1128 6