使用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的迁移。
相关文章
|
2天前
|
Linux
Linux常用命令包括
Linux常用命令包括
10 5
|
2天前
|
Linux
Linux命令
Linux命令
13 5
|
6天前
|
Linux Python Perl
Linux命令删除文件里的字符串
Linux命令删除文件里的字符串
18 7
|
6天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
8天前
|
Linux Perl
Linux之sed命令
Linux之sed命令
|
8天前
|
Linux
深入理解Linux中的cp命令:文件与目录的复制利器
深入理解Linux中的cp命令:文件与目录的复制利器
|
8天前
|
Linux Docker 容器
9. 同步执行Linux多条命令
9. 同步执行Linux多条命令
|
19天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
21天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
160 11
|
16天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
58 13
MySQL的安装&数据库的简单操作
下一篇
无影云桌面