MySQL数据库分库备份

数据库密码保存在/etc/my.cnf文件中,所以在执行与mysql相关的命令不需要输入密码

分库备份思路:

mysqldump db1 >db1.sql.gz

mysqldump db2 >db2.sql.gz

拿到库名

mysql -e 'show databases' |sed '1d' |grep -v "_schema"

1.注释版

#!/bin/bash

# author: xiongminghao

# mail: jasonminghao@163.com

# describe:Mysql database backup

# 定义变量

IP=$(ifconfig eth1 |awk 'NR==2{print $2}')

Path=/backup/database # 备份目录路径

Time=$(date +%F)

Ba_Path=$Path/$Time

Ba_Logs=/var/log/db_database_$Time # 定义一个存放日志的文件

Md5_Path=$Path/$Time/md5 # 定义一个存放md5校验的目录

# 创建两个目录以当天时间为命名

[ ! -d $Ba_Path ] && mkdir $Ba_Path

[ ! -d $Md5_Path ] && mkdir $Md5_Path

# 循环获取数据库名进行备份和生成MD5校验文件

for dbname in `mysql -e 'show databases' |sed '1d' |grep -v "_schema"`

do

# 判断是否有数据库已经备份了,如果备份了则continue 调出当次循环,否则进行备份

if [ ! -f $Ba_Path/${dbname}.sql.gz ];then

# 备份参数

# -B 增加use[name]语句, -R 备份存储过程和函数数据

# --master=data2 记录备份时刻的binlog位置点,2表示将其位置点注释

# --single-ransaction 对innodb引擎进行热备(对数据进行快照)

# gzip 对备份的数据进行gzip压缩

mysqldump -B -R --master-data=2 --single-transaction |gzip >$Ba_Path/${dbname}.sql.gz

RETVAL=$?

# 通过返回值判断备份是否执行成功,把执行的成功与否纪录到日志中

[ $? -eq 0 ] && echo "${dbname} successful" >>$Ba_Logs || echo "${dbname} failed" >>$Ba_Logs

# 对数据库的数据完整性做MD5校验

md5sum $Ba_Path/${dbname}.sql.gz >$Md5_Path/${dbname}_md5.log

else

# 如果备份已存在则跳出当次循环,进行下次循环

continue

fi

done

# 将备份日志结果邮件方式发送给管理员

mail -s "$HOSTNAME $IP" jasonminghao@163.com < $Ba_Logs

2.非注释版

#!/bin/bash

IP=$(ifconfig eth1 |awk 'NR==2{print $2}')

Path=/backup/database

Time=$(date +%F)

Ba_Path=$Path/$Time

Ba_Logs=/var/log/db_database_$Time

Md5_Path=$Path/$Time/md5

[ ! -d $Ba_Path ] && mkdir $Ba_Path

[ ! -d $Md5_Path ] && mkdir $Md5_Path

for dbname in `mysql -e 'show databases' |sed '1d' |grep -v "_schema"`

do

if [ ! -f $Ba_Path/${dbname}.sql.gz ];then

mysqldump -B -R --master-data=2 --single-transaction |gzip >$Ba_Path/${dbname}.sql.gz

RETVAL=$?

[ $? -eq 0 ] && echo "${dbname} successful" >>$Ba_Logs || echo "${dbname} failed" >>$Ba_Logs

md5sum $Ba_Path/${dbname}.sql.gz >$Md5_Path/${dbname}_md5.log

else

continue

fi

done

mail -s "$HOSTNAME $IP" jasonminghao@163.com < $Ba_Logs

MySQL数据库分库分表备份

数据库密码保存在/etc/my.cnf文件中,所以在执行与mysql相关的命令不需要输入密码

分库分表备份思路:

#库名db1,两张表

mysqldump db1 table01 >db1_table01.sql.gz

mysqldump db1 table02 >db1_table01.sql.gz

#库名db2,两张表

mysqldump db2 table01 >db2_table01.sql.gz

mysqldump db2 table02 >db2_table02.sql.gz

拿到表名列表

mysql -e "show tables from db1;" |sed 1d

1.注释版

#!/bin/bash

# author: xiongminghao

# mail: jasonminghao@163.com

# describe:Mysql database table backup

# 定义变量

IP=$(ifconfig eth1 |awk 'NR==2{print $2}')

Path=/backup/table # 备份目录

Time=$(date +%F)

Ba_Path=$Path/$Time

Ba_Logs=/var/log/db_table_$Time # 定义一个存放日志的文件

Md5_Path=$Path/$Time/md5 # 定义一个存放md5校验的目录

# 创建两个目录以当天时间为命名

[ ! -d $Ba_Path ] && mkdir $Ba_Path

[ ! -d $Md5_Path ] && mkdir $Md5_Path

# 循环获取数据库名

for dbname in `mysql -e 'show databases' |sed '1d' |grep -v "_schema"`

do

# 循环获取到数据库名后再次循环获取到该库名下的表,进行备份和MD5校验

for tablename in `mysql -e "show tables from $dbname" |sed '1d'`

do

# 判断是否有表已经备份了,如果备份了则continue 调出当次循环,否则进行备份

if [ ! -f $Ba_Path/${dbname}_${tablename}.sql.gz ];then

mysqldump -R --master-data=2 --single-transaction ${dbname} ${tablename} |gzip >$Ba_Path/${dbname}_${tablename}.sql.gz

RETVAL=$?

# 通过返回值判断备份是否执行成功,把执行的成功与否纪录到日志中

[ $? -eq 0 ] && echo "${dbname}_${tablename} successful" >>$Ba_Logs || echo "${dbname}_${tablename} failed" >>$Ba_Logs

# 对表的数据完整性做MD5校验

md5sum $Ba_Path/${dbname}_${tablename}.sql.gz >$Md5_Path/${dbname}_${tablename}_md5.log

else

continue

fi

done

done

# 将备份日志结果邮件方式发送给管理员

mail -s "$HOSTNAME $IP" jasonminghao@163.com < $Ba_Logs

2.非注释版

IP=$(ifconfig eth1 |awk 'NR==2{print $2}')

Time=$(date +%F)

Ba_Path=$Path/$Time

[ ! -d $Ba_Path ] && mkdir $Ba_Path

[ ! -d $Md5_Path ] && mkdir $Md5_Path

for dbname in `mysql -e 'show databases' |sed '1d' |grep -v "_schema"`

do

for tablename in `mysql -e "show tables from $dbname" |sed '1d'`

do

if [ ! -f $Ba_Path/${dbname}_${tablename}.sql.gz ];then

mysqldump -R --master-data=2 --single-transaction ${dbname} ${tablename} |gzip >$Ba_Path/${dbname}_${tablename}.sql.gz

RETVAL=$?

[ $? -eq 0 ] && echo "${dbname}_${tablename} successful" >>$Ba_Logs || echo "${dbname}_${tablename} failed" >>$Ba_Logs

md5sum $Ba_Path/${dbname}_${tablename}.sql.gz >$Md5_Path/${dbname}_${tablename}_md5.log

else

continue

fi

done

done

mail -s "$HOSTNAME $IP" jasonminghao@163.com < $Ba_Logs

mysql创建备份表脚本_MySQL 备份脚本(单库/分库分表)相关推荐

  1. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  2. 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表

    文章目录 服务降级与服务熔断概述 服务降级举例 服务熔断 VS 服务降级 服务降级要考虑的问题 Hystrix 数据库切库分库分表 高可用的一些手段 服务降级与服务熔断概述 服务熔断: 一般是指软件系 ...

  3. mysql多字段分库分表基因码_mysql数据库优化方案之分库分表,轻松解决亿级数据问题...

    今天介绍下sharding-sphere,主要介绍他的特性,分库分表的技术的详解. (一)下载源码官网地址获取源码https://shardingsphere.apache.org/index_zh. ...

  4. MySQL数据库知识学习(五)读写分离与分库分表策略

    通过数据库锁及存储引擎的学习,我们知道数据库在数据操作过程中为了保证数据的一致性是会给表或行加锁的,在网站发展的初期,由于没有太多访问量,一般来讲只需要一台服务器就够了,这的操作也不会有什么问题.但随 ...

  5. mysql 分库分表中间件 mycat_阿里开源的分布式分库分表中间件之MyCat从入门到放弃...

    原标题:阿里开源的分布式分库分表中间件之MyCat从入门到放弃 1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的.例如下图中的一个Mycat分库方案: 根据 tt_waybi ...

  6. oracle分库分表原理_题库分库分表架构方案

    方案 项目背景 在现在题库架构下,针对新购买的1300W多道数据进行整合,不影响现有功能.由于数据量偏多,需要进行数据的切分 目标场景 兼容旧的功能 对1300多W数据进行分库分表 需要对旧的数据进行 ...

  7. Sharding-Sphere,Sharding-JDBC_分库分表介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记002

    这个分库分表的介绍以前就已经,说过了,很简单这里再提一下. . 如果电商网站数据激增. 可以把单张表分开放,这样提高数据容纳能力,但是 这个并不是大数据的层面,还是从关系型数据库的层面来尽可能的解决问 ...

  8. Sharding-Proxy安装_以及_sharding-proxy自动分表配置_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记019

    上一节我们说了,sharding-proxy的安装,现在我们继续来说,我们安装以后,并且把sharding-proxy配置好,实现分表操作,首先我们看一下他的配置文件. 我们打开这个server.ya ...

  9. mysql为什么要分库_mysql为什么要分库分表?

    1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表? 单表操作数据量有最优值 ...

最新文章

  1. less加管道tail_linux中cat、more、less、tail、head命令的区别
  2. 解决ARC下performselector-may-cause-a-leak-because-its-selector-is-unknown 警告
  3. 【知识星球】网络结构1000变上线,下半年更新500+网络模型解读
  4. 行业研究报告基本分析思路updated with 5c model
  5. 微软启用全新域名邮箱平台 Outlook.com
  6. BZOJ1050 [HAOI2006]旅行
  7. 魅族16s最新渲染图曝光:后置双摄无刘海 或4月底发布
  8. Windows update一直停留在正在检查更新,为什么
  9. 教你用Axure绘制三级菜单
  10. hget和get redis_Redis Hash 的 HSET、HGET、HMSET、HMGET 性能测试
  11. R语言中,如何设置当前工作文件路径?
  12. iOS 安装包瘦身(下篇)
  13. 人工智能研究中心快递柜——代码分析九
  14. mysql时间戳转换大日期 2038 以上 2099
  15. Linux 奔腾4,我如何在Pentium 4计算机上安装Ubuntu 64位?
  16. 9个精品AI开源免费实战项目助你掌握AI工程师基本技能
  17. 关于Hanoi塔的实现
  18. java实现地图导航功能吗_Java web实现百度地图导航
  19. 中关村软件园附近美食一览
  20. es java 增删改查_【java作业】如何用序列化的方法写增删改查

热门文章

  1. vue项目原理分析-1:组件间传值
  2. 室内温湿度监测系统解决方案
  3. 为基于spring-boot的应用添加根据运行时操作系统环境来提示用户选择active profile的功能...
  4. 安全编码最佳实践:PHP及编程语言安全
  5. HiveServer2中使用jdbc客户端用户运行mapreduce
  6. mysql 基础操作一
  7. 学习Linux的途径。
  8. android标题白色_Android设置布局背景为白色的三种方法
  9. RocketMQ的一些基本概念和RocketMQ特性的讲解
  10. Python机器学习:KNN算法08更多思考