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

  1. [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)显示要备份的数据库

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

3)循环db,dump

实现脚本如下:

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

脚本注意点:

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

每天的备份样式如下:

  1. [root@web03 ~]# cd /data/backup/db/
  2. [root@web03 db]# ll
  3. 总用量
  4. drwxr-xr-x root root 7 : --
  5. [root@web03 db]# cd --/
  6. [root@web03 --]# ll
  7. 总用量
  8. -rw-r--r-- root root 7 : abcdocker-backup--
  9. -rw-r--r-- root root 7 : cnsyk-backup---
  10. -rw-r--r-- root root 7 : mysql-backup---
  11. -rw-r--r-- root root 7 : oldboy-backup---
  12. -rw-r--r-- root root 7 : syk_utf8-backup--
  13. -rw-r--r-- root root 7 : test-backup---

logger解释

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

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

  1. [root@web03 ~]# tail -f /var/log/messages
  2. Jul :: web03 rpc.statd[]: Version 1.2. starting
  3. Jul :: web03 sm-notify[]: Version 1.2. starting
  4. Jul :: web03 root: abcdocker has been backup successful - --
  5. Jul :: web03 root: cnsyk has been backup successful - --
  6. Jul :: web03 root: abcdocker has been backup successful - --
  7. Jul :: web03 root: cnsyk has been backup successful - --
  8. Jul :: web03 root: mysql has been backup successful - --
  9. Jul :: web03 root: oldboy has been backup successful - --
  10. Jul :: web03 root: syk_utf8 has been backup successful - --
  11. 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
  1. 把公钥文件里的id_rsa.pub内容复制到 A服务器里的authorized_keys 
    文件中准备脚本文件  :
  1. #!/bin/bash
  2. usr/bin/rsync -avz --delete -e "ssh -p 4396" root@192.168.1.11:/data/backup/db /data/backup/db_192.168.1./
  3. logger "Successful backup file transfer - $DATE"
  1.  

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. Linux下的用户权限

    用户权限: drwxr-xr-x root root - : boot #权限位 硬连接数 所属用户 所属组 大小 最后修改时间 文件/目录# r w x 4 2 1 用户权限位分为3段,分别对应US ...

  2. js 根本没有“JSON对象”这回事! JSON对象——转

    前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢. ...

  3. ASP.NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)

    Office Online Server是微软开发的一套基于Office实现在线文档预览编辑的技术框架(支持当前主流的浏览器,且浏览器上无需安装任何插件,支持word.excel.ppt.pdf等文档 ...

  4. test4 结对项目

    [必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. 结对对 ...

  5. 采购文件中 RFI、RFQ、RFP、IFB的区别

    [PMBOK的描述] 采购文件用于征求潜在卖方的建议书.如果主要依据价格来选择卖方(如购买商业或标准产品时),通常就使用标书.投标或报价等术语.如果主要依据其他考虑(如技术能力或技术方法)来选择卖方, ...

  6. 在定制工作项时,把“团队项目”作为变量获取生成版本信息

    有用户最近提出这个需求: 通过工作项定制,新增一个字段用以保存项目Bug的"影响版本"信息,但是需要从当前团队项目的服务器生成纪录中获取版本的选项,类似默认模板中的"发现 ...

  7. TSQL--关联更新和删除

    --=================================================== --测试CODE USE tempdb; GO DROP TABLE TB1 GO DROP ...

  8. Python2.4+ 与 Python3.0+ 主要变化与新增内容

    Python2                          Python3print是内置命令                 print变为函数print >> f,x,y     ...

  9. VUE 学习笔记 四 计算属性和监听器

    1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ...

  10. maven多模块启动required a bean of type com.xxx.xxx.service that could not be found.

    Description: Field testService in com.xxx.xxx.api.controller.TestController required a bean of type ...