工作中,往往数据库备份是件非常重要的事情,毕竟数据就是金钱,就是生命!废话不多,下面介绍一下:如何实现对MySQL数据库进行分库备份(shell脚本)

Mysq数据库dump备份/还原语法:

mysqldump -u 用户名 –p 数据库名 > 导出的文件名;

mysqldump -u 用户名 –p 数据库名 < 导入的文件名;

首先,我们需要知道是备份全库还是部分库;

其次,我们需要获取到需要备份的库名列表;

最后,编写脚本实现数据备份。

分库备份:

1、查看当前环境是否启动了MySQL服务,如果没启动,便启动该服务:

2、获取分库备份的库名列表:

登录MySQL数据库两种方式:sock方式和tcp/ip方式,详情https://my.oschina.net/zjllovecode/blog/1617755

我们以sock方式登录MySQL获取库名列表:

3、编写备份脚本:

[root@bqh-118 scripts]# vim mysqldb.sh
#!/bin/sh
# ******************************************************
# Author : a?锦衣卫
# Last modified: 2019-05-18 13:25
# Email : 1147076062@qq.com
# blog : https://www.cnblogs.com/su-root
# Filename : mysqldb.sh
# Description : mysql_dmup
# ******************************************************
user=root #用户名
pass=123456 #密码
socket=/tmp/mysql.sock #登录方式
backfile=/server/backup #备份路径
[ ! -d $backfile ] && mkdir -p $backfile #判断是否有备份路径
cmd="mysql -u$user -p$pass -S $socket" #登录数据库
dump="mysqldump -u$user -p$pass -S $socket -B -X -F -R" #mysqldump备份参数
dblist=`$cmd -e "show databases;"|sed 1d|egrep -v "_schema|mysql"` #获取库名列表
for db_name in $dblist #for循环备份库列表
do
$dump $db_name|gzip >/server/backup/${db_name}_$(date +%F).sql.gz #库名+时间备份打包至指定路径下
done

执行脚本:

ok,分库备份success!

下面我们介绍一下分库分表备份:

首先,我们需要获取到需要备份的库名列表及表名列表;然后,编写脚本实现数据备份。

ok,库名及表面获取了,接下来我们在已有的脚本基础上稍作修改(加个表名循环即可)

[root@bqh-118 scripts]# vim mysqldb1.sh
#!/bin/sh
# ******************************************************
# Author : a?锦衣卫
# Last modified: 2019-05-18 13:25
# Email : 1147076062@qq.com
# blog : https://www.cnblogs.com/su-root
# Filename : mysqldb.sh
# Description : mysql_dmup_fk
# ******************************************************
user=root #用户名
pass=123456 #密码
socket=/tmp/mysql.sock #登录方式
backfile=/server/backup #备份路径
[ ! -d $backfile ] && mkdir -p $backfile #判断是否有备份路径
cmd="mysql -u$user -p$pass -S $socket" #登录数据库
dump="mysqldump -u$user -p$pass -S $socket -X -F -R" #mysqldump备份参数
dblist=`$cmd -e "show databases;"|sed 1d|egrep 'bqh|jyw'` #获取库名列表
for db_name in $dblist #for循环备份库列表
do
tablest=`$cmd -e "show tables from $db_name;"|sed 1d` #获取库中表名
for tname in $tablest #for循环备份库中表名列表
do
mkdir -p $backfile/$db_name #创建库文件
$dump $db_name $tname|gzip >$backfile/$db_name/${tname}_$(date +%F).sql.gz
#库名+表名+时间备份打包至指定路径下
done
done

执行脚本:

ok,分库分表备份success!

实现对MySQL数据库进行分库/分表备份(shell脚本)的更多相关文章

  1. MyCat:对MySQL数据库进行分库分表

    本篇前提: mycat配置正确,且能正常启动. 1.schema.xml <table>标签: dataNode -- 分片节点指定(取值:dataNode中的name属性值) rule ...

  2. shell脚本,对MySQL数据库进行分库加分表备份

    [root@localhost wyb]# cat table_backup.sh #!/bin/bash flag= user=root pass=test mysql -u$user -p&quo ...

  3. 分享一个MySQL分库分表备份脚本(原)

    分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上 ...

  4. mysql数据库为什么要分表和分区?

    一般下载的源码都带了MySQL数据库的,做个真正意义上的网站没数据库肯定不行. 数据库主要存放用户信息(注册用户名密码,分组,等级等),配置信息(管理权限配置,模板配置等),内容链接(html ,图片 ...

  5. Mysql中的分库分表

    mysql中的分库分表分库:减少并发问题分表:降低了分布式事务分表 1.垂直分表 把其中的不常用的基础信息提取出来,放到一个表中通过id进行关联.降低表的大小来控制性能,但是这种方式没有解决高数据量带 ...

  6. Mycat安装并实现mysql读写分离,分库分表

    Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...

  7. Docker安装Mycat并实现mysql读写分离,分库分表

    Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...

  8. MySQL分库分表备份脚本

    MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...

  9. MySQL纯透明的分库分表技术还没有

    MySQL纯透明的分库分表技术还没有  种树人./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033 ...

随机推荐

  1. Linux系统调优——网络(四)

    (1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...

  2. 报错:(未解决)NoReplicaOnlineException: No replica in ISR for partition __consumer_offsets-8 is alive. Live brokers are: [Set(50, 51, 52)], ISR brokers are: [68]

    报错背景: CDH集成kafka插件之后,启动kafka时就报出此错误. 报错现象: -- ::, ERROR state.change.logger: [Controller epoch=] Ini ...

  3. spring @Transactional的自调用失效问题与事务的典型错误用法剖析

    @Transactional的自调用失效问题 有时候配置了注解@Transactional,但是它会失效,这里要注意一些细节问题,以避免落入陷阱. 注解@Transaction的底层实现是Spring ...

  4. LeetCode_257. Binary Tree Paths

    257. Binary Tree Paths Easy Given a binary tree, return all root-to-leaf paths. Note: A leaf is a no ...

  5. Newtonsoft.Json 方法使用()

    JSON.NET1.3.0,旧版本的json.net,使用Newtonsoft.Json.JavaScriptConvert.DeserializeObject类进行转换 如果是新版本的json.ne ...

  6. logstash kafka output 日志处理

    今天在用logstash解析日志并传送给kafka的时候,发现kafka能收到数据但数据内容已经丢失,具体如下: 在logstash output中增加输出样式之后,问题解决kafka再次接受到的内容 ...

  7. 【计算机视觉】基于Shading Model(对光照变化一定不变性)的运动目标检测算法

    光照模型(Shading Model)在很多论文中得到了广泛的应用,如robust and illumination invariant change detection based on linea ...

  8. ubuntu 安装 svn

    sudo apt-get install subversion

  9. TCP/UDP网络编程调试助手下载

    下载地址:可能需要谷歌:软件干净,挺好用的,如果有更好的,欢迎留言! https://www.waveshare.com/wiki/File:TCP-UDP-Debug.7z

  10. .net字符串内存的分配

    几次面试中遇到都有类似的问题,就是 string str = "aa" + "bb" + "ccc";进行了几次内存分配? 1 class ...