mysql(mariadb)定时自动热备份+增量+远程备份脚本

优点:热备份,不影响业务,增量备份,远程备份。

目的:自动打包备份到远程10.0.0.111备份服务器

前提:

1.安装xtrabackup

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

yum install percona-xtrabackup-22

2.创建目录

mkdir -p /data/backup

mkdir -p /data/backuptar/

3.添加mysql公钥到备份服务器(10.0.0.111),能免密码远程登录。

4.创建备份用户

GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO ‘bkuser‘@‘localhost‘ IDENTIFIED BY ‘passwd‘;

FLUSH PRIVILEGES;

------------------------

#!/bin/bash

backdir=/data/backup

backupbin=/usr/bin

begintime=`date +"%Y-%m-%d %H:%M:%S"`

format_time=`date +"%Y-%m-%d_%H_%M_%S"`

time_cost=$backdir/xtrabackup_time.txt

week=`date +%w`

user_name=bkuser

password="passwd"

file_cnf=/etc/my.cnf.d/wsrep.cnf

backtar=/data/backuptar/

remote_host="10.0.0.111"

remote_dir=/data/mysqlbak_remote_23

remote_user="wanzi"

out_log=$backdir/xtrabackup_log_$format_time

if [ -d "$backdir/rec5" ];then

echo "开始打包5次的备份"

cd $backdir

tar -zcf lastweek.gz ./*

mv lastweek.gz $backtar/$format_time.lastweek.gz

echo "完成5次备份打包"

cd $backtar

rm -rf `ls |grep -v "$format_time.lastweek.gz"`

echo "删除本地上次备份完成"

echo "开始删除远程备份....."

ssh [email protected]$remote_host "cd $remote_dir;rm -rf ./*"

echo "删除远程多余备份完成"

echo "开始拷贝本地备份到远程服务器..."

scp $backtar/$format_time.lastweek.gz $remote_host:/$remote_dir

echo "远程备份完成"

rm -rf $backdir

mkdir $backdir

fi

#fullbackup

if [ ! -d "$backdir/fullbackup" ];then

echo "在$begintime开始全量备份" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf --user=$user_name --password=$password --no-timestamp --slave-info  $backdir/fullbackup 1>$out_log 2>&1

echo "完成全备"

elif [ ! -d "$backdir/rec0" ];then

echo "#####start 0 incremental backup at $BEGINTIME to directory rec0" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/fullbackup $backdir/rec0 1> $out_log 2>&1

echo "完成第0次增量备份"

elif [ ! -d "$backdir/rec1" ];then

echo "#####start 1 incremental backup at $BEGINTIME to directory rec1" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/rec0 $backdir/rec1 1> $out_log 2>&1

echo "完成第1次增量备份"

elif [ ! -d "$backdir/rec2" ];then

echo "#####start 2 incremental backup at $BEGINTIME to directory rec2" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/rec1 $backdir/rec2 1> $out_log 2>&1

echo "完成第2次增量备份"

elif [ ! -d "$backdir/rec3" ];then

echo "#####start 3 incremental backup at $BEGINTIME to directory rec3" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/rec2 $backdir/rec3 1> $out_log 2>&1

echo "完成第3次增量备份"

elif [ ! -d "$backdir/rec4" ];then

echo "#####start 4 incremental backup at $BEGINTIME to directory rec4" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/rec3 $backdir/rec4 1> $out_log 2>&1

echo "完成第4次增量备份"

elif [ ! -d "$backdir/rec5" ];then

echo "#####start 5 incremental backup at $BEGINTIME to directory rec5" >>$time_cost

$backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info  --incremental --incremental-basedir=$bac

kdir/rec4 $backdir/rec5 1> $out_log 2>&1

echo "完成第5次增量备份"

fi

ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`

begin_data=`date -d  "$BEGINTIME" +%s`

end_data=`date -d  "$ENDTIME" +%s`

spendtime=`expr $end_data - $begin_data`

echo "it takes $spendtime sec for packing the data directory" >>$time_cost

echo "备份结束......"`date`

时间: 2024-08-02 14:52:51

mysql(mariadb)定时自动热备份+增量+远程备份脚本的相关文章

mysql自动化(全量+增量)备份脚本

#!/bin/bash #At Sunday, we will backup the completed databases and the incresed binary log during Saturday to Sunday. #In other weekdays, we only backup the increaing binary log at that day! ################################ #the globle variables for 

数据库mysql 自动分库分表备份脚本

数据库mysql 自动分库分表备份脚本 当我们在公司中遇到数据库的备份,项目比较多,经常进行数据库和表的添加工作,那么我们 想要让系统脚本自动进行查询数据库里的库和表结构,然后进行自动的定期进行数据库和表的定期份, 那么我们该如何实现呢,大家看看以下的脚本: vi mysql_backup.sh #!/bin/sh #backup tiandao bbs edoing #coding tonye.li MYUSER=root MYPASS=meidi SOCKET=/data/3306/mysq

rdiff-backup远程备份脚本

任务:主机A存放备份的文件夹是/data/backup/主机B名称/axel_coin/,需要备份主机B的/roo/.axel/到存放备份的文件夹,每小时备份一次,将超过7天的备份删除,主机B也要备份主机A的文件夹. 脚本如下: #!/bin/bash check_step() { #检测上一个命令执行是否成功,如果失败就发送邮件通知if [[ $? == "0" ]]; then:elseecho " "|mail -s "failed rdiff-ba

MySQL数据库定时自动备份脚本

Web系统,最重要的事项就是数据库的安全性和完整性.   定时做好备份,非常重要,千万不要在这个问题上偷懒.如果你的重要数据丢失了,会让你欲哭无泪. 导出表结构和数据 mysqldump -uroot -pmypassword --databases fansunion --result-file=/var/www/backup/fansunion-table-and-data.sql 只导出表结构 mysqldump -uroot -pmypassword --databases fansun

mysql数据库定时自动备份(坑点都写出来了)

(1)首先创建text文件,(在什么地方创建都可以)修改后缀名为bat的文件,如果你的电脑没有设置显示后缀名,先通过左击我的电脑,“查看”->“文件扩展名”->打钩,这样你才那个成功修改后缀名为bat,否则是假的bat文件. (2)编辑刚刚创建的bat文件,(你也可以在创建txt文件的时候先修改好)加入如下内容保存:其中d:/MySQL/bin/mysqldump.exe"路径改成你自己对应的,DBNAME是你要备份的数据库,pxxx,我对于的是proot,其中root是密码,当然你

修改mysql/MariaDB数据库的端口号+远程

1.修改端口 2.远程+开放端口 (1)设置远程账号:xxx和密码yyyyyyygrant all privileges on *.* to 'xxx'@'%' identified by 'yyyyyyy';flush privileges; (2)开放端口 防火墙开放新端口 参考: https://www.howtoing.com/change-default-mysql-mariadb-port-in-linux 原文地址:https://www.cnblogs.com/andy9468/

tomcat集群日志切割和远程备份脚本分享

笔者一共有3台tomcat服务器,一共4个tomcat服务,未来还会增加4个作为负载,笔者想通过在存储服务器对tomcat服务的日志进行远程切割和备份到存储上. 文中采用清空日志的方式,优点是不用重启tomcat就能回收磁盘空间,缺点可能会丢失一小部分日志内容,所以笔者定时在了夜里3点执行. 本文中远程执行命令和scp用到了expect脚本,请查看expect的博文http://www.cnblogs.com/Eisenhower/p/7900907.html 1 2 3 4 5 6 7 8 9

Linux Shell脚本之Atlassian confluence远程备份方法

注:Atlassian confluence是一个较专业的wiki程序,由java语言写成,其详细介绍可以Google it(一点美中不足,java占用内存还是比较大的). 该脚本的设计思路是根据Atlassian confluence官方提供的文档说明写的,主要是备份一些配置文件,上传的一些附件之类的其他文件以及数据库,其数据库支持多种数据库,这次我采用的是PostgreSQL数据库,你可以使用自己熟悉的数据库,如MySQL. 问题释疑: 1.为什么不使用rsync而是使用scp作为远程文件传

LNMP 1.2/1.3+升级Nginx、MySQL/MariaDB、PHP教程

一般情况下不建议对生产环境进行升级,升级开始后会停止LNMP相关服务.本文仅适用于LNMP1.2.1.3及1.4等以后版本! 在LNMP目前LNMP v1.2/1.3+版本中已经包含了Nginx.MySQL/MariaDB.PHP.PHPMyAdmin的升级脚本,可以帮助搭建对环境中的程序进行升级.(注意:以下操作均必须在lnmp安装包压缩包解压后的目录里运行) 一.Nginx升级脚本执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en