一条命令解决分库分表备份:

[root@db01 data]# mysql -uroot -p123456  -e "show databases;"|egrep -v "Data|sche|mysql|inf"|sed -r 's#^(.*)#mysqldump -uroot -p123456 -B \1 >/data/db/\1.sql.gz#g'|bash

实现思路

1)编程思想

mysqldump db1>db1.sql

mysqldump db2>db2.sql

.............

2)显示要备份的数据库

[root@web03 ~]# mysql -uroot -p123456 -S /data//mysql.sock  -e "show databases;"|grep -Evi "database|infor|perfor"
abcdocker
cnsyk
mysql
oldboy
syk_utf8
test

3)循环db,dump

实现脚本如下:

#!/bin/bash
#created by yangqiqi -- USERNAME=root #备份的用户名
PASSWORD= #备份的密码
HOST=localhost #备份主机
DATE=`date +%Y-%m-%d` #用来做备份文件名字的一部分
OLDDATE=`date +%Y-%m-%d -d '-10 days'` #本地保存天数 #指定命令所用的全路径
MYSQL=/application/mysql/bin/mysql
MYSQLDUMP=/application/mysql/bin/mysqldump
MYSQLADMIN=/application/mysql/bin/mysqladmin #创建备份的目录和文件
BACKDIR=/data/backup/db
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}
[ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE} #保存10天 多余的删除最前边的
#开始备份 for循环想要备份的数据库
MYSQLDUMP_LIST=`mysql -uroot -p'' -S /data//mysql.sock -e "show databases"| grep -Evi "database|infor|perfor"` for DBNAME in ${MYSQLDUMP_LIST} ##使用for依次罗列需要备份的数据库
do
${MYSQLDUMP} -B -F --master-data= --single-transaction -u${USERNAME} -p${PASSWORD} -S /data//mysql.sock ${DBNAME} | gzip > ${BACKDIR}/${DATE}/${DBNAME}-backup-${DATE}.sql.gz
/bin/sleep
logger "${DBNAME} has been backup successful - $DATE"
done
脚本出处:https://www.cnblogs.com/lazyball/p/8662586.html

脚本注意点:

MYSQLDUMP_LIST=`mysql -uroot -p'123456'  -e "show databases"| grep -Evi "database|infor|perfor"` 过滤掉不需要备份的数据库,这里需要注意,过滤完成
后拿到的库名是自己需要备份的库名,如果自建的库有的也叫infor开头或者perfor的可能会被过滤掉,按照个人情况调整。

每天的备份样式如下:

[root@web03 ~]# cd /data/backup/db/
[root@web03 db]# ll
总用量
drwxr-xr-x root root 7月 : --
[root@web03 db]# cd --/
[root@web03 --]# ll
总用量
-rw-r--r-- root root 7月 : abcdocker-backup--
-rw-r--r-- root root 7月 : cnsyk-backup---
-rw-r--r-- root root 7月 : mysql-backup---
-rw-r--r-- root root 7月 : oldboy-backup---
-rw-r--r-- root root 7月 : syk_utf8-backup--
-rw-r--r-- root root 7月 : test-backup---

logger解释

logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
日志的级别
日志的级别分为七级,从紧急程度由高到底:
emerg 系统已经不可用,级别为紧急
alert 警报,需要立即处理和解决
crit 既将发生,得需要预防。事件就要发生
warnig 警告
err 错误信息,普通的错误信息
notice 提醒信息,很重要的信息
info 通知信息,属于一般信息
debug 这是调试类信息

上边的脚本备份完毕后  就可以在   看到每个数据库备份的信息  logger的作用

[root@web03 ~]# tail -f /var/log/messages
Jul :: web03 rpc.statd[]: Version 1.2. starting
Jul :: web03 sm-notify[]: Version 1.2. starting
Jul :: web03 root: abcdocker has been backup successful - --
Jul :: web03 root: cnsyk has been backup successful - --
Jul :: web03 root: abcdocker has been backup successful - --
Jul :: web03 root: cnsyk has been backup successful - --
Jul :: web03 root: mysql has been backup successful - --
Jul :: web03 root: oldboy has been backup successful - --
Jul :: web03 root: syk_utf8 has been backup successful - --
Jul :: web03 root: test has been backup successful - --

生成场景需求:

每天凌晨1点把 A服务器上/data/backup/db/下的数据备份文件放到 B服务器里的/data/backup/db_192.168.1.11/目录下 
不是累加 是增量更新 (--delete)
 
A服务器:
数据源服务器:
yum install rsync
 
打开防火墙 关闭seLinux:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
 
B服务器:ssh-keygen
把公钥文件里的id_rsa.pub内容复制到 A服务器里的authorized_keys 
文件中准备脚本文件  :
#!/bin/bash
usr/bin/rsync -avz --delete -e "ssh -p 4396" root@192.168.1.11:/data/backup/db /data/backup/db_192.168.1./
logger "Successful backup file transfer - $DATE"

mysql数据库使用脚本实现分库备份过程的更多相关文章

  1. mysql数据库备份脚本

    mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...

  2. Windows下MySQL数据库备份脚本(一)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  3. Windows下MySQL数据库备份脚本(二)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  4. Ubuntu Server下MySql数据库备份脚本代码

    明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...

  5. mysql数据库备份脚本一例

    例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/l ...

  6. MySQL 数据库备份脚本

    MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER=& ...

  7. MYSQL数据库数据拆分之分库分表总结

    数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 数据存储演进思路二:单库多表 随着用户数量的 ...

  8. <转>MYSQL数据库数据拆分之分库分表总结

    数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 数据存储演进思路二:单库多表 随着用户数量的 ...

  9. MYSQL数据库数据拆分之分库分表总结 (转)

      数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 数据存储演进思路二:单库多表 随着用户数 ...

随机推荐

  1. 禁止进入activity自动弹出键盘

    禁止进入activity自动弹出键盘 在Manifest.xml中设定activity的属性 android:windowSoftInputMode="stateHidden|stateUn ...

  2. Flash的不同位宽与CPU地址线的接线问题?

    一般Flash都有8.16.32等这些不同的位宽,当然说白了就是Flash的数据线位数. 在Flash与CPU的地址线的连接问题时:不同位宽的有不同的连接方法: 一般是:位宽为8时CPU的ADDR0与 ...

  3. 重拾C语言基础知识

    从实习到工作两年多的时间了,虽然感觉学到了很多知识,但是事实上却将立足之本的基础知识给忘了个精光.也许跟自己没有出去找工作有关,没有好好的将C语言的基础牢牢掌握. 从现在开始吧!好好的重温基础,做一名 ...

  4. (4)-optXXX方法的使用

    在JSONObject获取value有多种方法,如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用optXXX方 ...

  5. [leetcode] 10. Symmetric Tree

    这次我觉得我的智商太低,想了很久才写出来.题目是让求镜像二叉树判断,题目如下: Given a binary tree, check whether it is a mirror of itself ...

  6. 使用Docker部署ASP.NET Core应用程序实践

    前言 最近把很火的Docker给看了,于是就磨拳擦掌要去实践一下.于是就拿之前一个aps.net core的项目(已被停止)去练手.该项目之前在ubuntu14.04上确保可以正常运行,所以docke ...

  7. Java和.net对比分析

    .Net和Java是国内市场占有率最高的两门技术,对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问“学.Net还是学Java”,社区中也每天都有“. ...

  8. 查看JVM

    通过jconsole.exe来查看,jconsole.exe所在目录为/%JAVA_HOME%/bin/jconsole.exe   需要配置: -Dcom.sun.management.jmxrem ...

  9. (zxing.net)一维码UPC A的简介、实现与解码

    一.简介 UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条  码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. U ...

  10. Sql里时间加减

    简单的时间加减 DATEADD(dd,-30, GETDATE())) 使用DateADD方法: 参数1:间隔,表示要添加的时间间隔,一天还是一月还是一年 参数2:要加或减的个数,加一年或加一月 参数 ...