MySQL数据库备份脚本

MySQL数据库备份脚本概述远程或者本地备份mysql数据库,并且保存最新7天的备份内容。#!/bin/sh#definevariables#thelogininformationofyourmysqldb.login_user=""login_passwd="&a

大家好,又见面了,我是你们的朋友全栈君。

概述

每天定时远程或者本地备份mysql数据库,并且保存最新7天的备份内容。

脚本内容

[root@myhost ~]# cat  /home/script/mysqlbackup.sh
#!/bin/sh 
source /etc/profile
#define variables
#the login information of your mysql db.
login_user=""
login_passwd=""       #数据库密码最好不要含有$符号,因为避免被当成变量,这是个大坑,被坑惨了
db_host=""   
db_port=""
#the real databases which you want to backup.
db_array=("db_name0" "db_name1" "db_name2")
#the dir for saving your backup file.
backup_dir="/home/backup/mysql_bak/$db_host-backup"
if [ ! -d  $backup_dir ];then
	mkdir -p $backup_dir
fi 
#date format for the backup file (yyyy-mm-dd) 
time=`date +"%Y-%m-%d"`
#the mysql,mysqldump and other bin's path
MYSQL_COMMDAND=""   			#根据自己的数据库安装路径决定
MYSQLDUMP_COMMAND=""			#根据自己的数据库安装路径决定
MKDIR_COMMAND="/bin/mkdir"
RM_COMMAND="/bin/rm"
MV_COMMAND="/bin/mv"
GZIP_COMMAND="/bin/gzip"

# check the dir for saving backup file is writeable or not.
if [ ! -w  $backup_dir ];then

	echo "Error: $backup_dir is un-writeable." && exit 0 

fi

#check if the dir for saving the backup file exists or not.
if [ ! -d  ${backup_dir}/backup.0 ];then

	$MKDIR_COMMAND  -p "$backup_dir/backup.0"

fi

#starting to backup.

for db_name in ${db_array[*]}
do
	$MYSQLDUMP_COMMAND -P$db_port -u$login_user -h$db_host  --set-gtid-purged=off -p$login_passwd -B  $db_name | $GZIP_COMMAND -9 > "$backup_dir/backup.0/$time.$db_name.gz" 
done

# delete the oldest backup 
if [ -d "$backup_dir/backup.7" ];then

	$RM_COMMAND -rf "$backup_dir/backup.7" 

fi


# rotate backup directory 

#for int in 6 5 4 3 2 1 0 
for int in {6..0}
do 
	if [ -d "$backup_dir"/backup."$int" ];then
		next_int=`expr  $int  + 1` 
		$MV_COMMAND "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int" 
	fi
done 
	
exit 0; 

定时任务

数据库备份的定时任务尽量避开数据库访问的高峰期,可以选择在半夜执行。

[root@myhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
30 3  *  *  * root /home/script/mysqlbackup.sh

数据库恢复

[root@myhost ~]#  cd $backup_dir  && ll
##假设备份文件名为:2019-09-29.dbname.gz
[root@myhost ~]#  gzip -d 2019-09-29.dbname.gz && ll    #解压备份文件之后文件名: 2019-09-29.dbname
[root@myhost ~]#  cat  2019-09-29.dbname > 2019-09-29_dbname.sql 或者 mv  2019-09-29.dbname  2019-09-29_dbname.sql 
[root@myhost ~]# mysql -uroot -proot123456 -B  dbname <   2019-09-29_dbname.sql   #恢复数据库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130902.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac idea 激活码【在线注册码/序列号/破解码】

    mac idea 激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    76
  • springboot参数_spring的aop是什么

    springboot参数_spring的aop是什么springaop参数传递

    2022年8月11日
    4
  • 前端工程配置Nginx反向代理[通俗易懂]

    前端工程配置Nginx反向代理HTTP配置HTTPS配置配置两个反向代理,一个代理http页面,一个代理https页面,前者监听80端口,后者监听443端口。配置后整个文件如下,其中有不少冗余,挑有用的看即可。#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid

    2022年3月11日
    45
  • NSGA2算法中文详解与MATLAB实现整理「建议收藏」

    NSGA2算法中文详解与MATLAB实现整理「建议收藏」NSGA2算法NSGA-II多目标遗传算法概述http://www.omegaxyz.com/2017/04/14/nsga-iiintro/NSGA2算法MATLAB实现(能够自定义优化函数)http://www.omegaxyz.com/2018/01/22/new_nsga2/NSGA2算法特征选择MATLAB实现(多目标)http://www.omegaxyz.co…

    2022年5月12日
    46
  • SOAP协议规范

    SOAP协议规范SOAP协议规范SOAP协议规范1.简介SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。SOAP包括三个部

    2022年7月27日
    4
  • CVE-2014-0160:心脏出血(心血)漏洞

    CVE-2014-0160:心脏出血(心血)漏洞0x00漏洞介绍是一个出现在加密程序库OpenSSL的安全漏洞,该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多0x01漏洞成因由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露0x02…

    2022年7月17日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号