实现对MySQL数据库进行分库/分表备份(shell脚本)
工作中,往往数据库备份是件非常重要的事情,毕竟数据就是金钱,就是生命!废话不多,下面介绍一下:如何实现对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脚本)的更多相关文章
- MyCat:对MySQL数据库进行分库分表
本篇前提: mycat配置正确,且能正常启动. 1.schema.xml <table>标签: dataNode -- 分片节点指定(取值:dataNode中的name属性值) rule ...
- shell脚本,对MySQL数据库进行分库加分表备份
[root@localhost wyb]# cat table_backup.sh #!/bin/bash flag= user=root pass=test mysql -u$user -p&quo ...
- 分享一个MySQL分库分表备份脚本(原)
分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上 ...
- mysql数据库为什么要分表和分区?
一般下载的源码都带了MySQL数据库的,做个真正意义上的网站没数据库肯定不行. 数据库主要存放用户信息(注册用户名密码,分组,等级等),配置信息(管理权限配置,模板配置等),内容链接(html ,图片 ...
- Mysql中的分库分表
mysql中的分库分表分库:减少并发问题分表:降低了分布式事务分表 1.垂直分表 把其中的不常用的基础信息提取出来,放到一个表中通过id进行关联.降低表的大小来控制性能,但是这种方式没有解决高数据量带 ...
- Mycat安装并实现mysql读写分离,分库分表
Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...
- Docker安装Mycat并实现mysql读写分离,分库分表
Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...
- MySQL分库分表备份脚本
MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...
- MySQL纯透明的分库分表技术还没有
MySQL纯透明的分库分表技术还没有 种树人./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033 ...
随机推荐
- lnmp 多版本php 同时运行
首先需要装好两个版本以上的PHP(例如:php5.6和php7两个版本).这里假设你已安装完成. .配置并启动php默认版本: (设置 nginx 的 vhost 域名配置文件监听端口就好) ).打开 ...
- 【Leetcode_easy】1047. Remove All Adjacent Duplicates In String
problem 1047. Remove All Adjacent Duplicates In String 参考 1. Leetcode_easy_1047. Remove All Adjacent ...
- 【嵌入式硬件Esp32】ESP32使用visual studio cod界面
如何下载安装IDE Visual Studio Code大家可以在微软的官网上根据自身的开发平台下载,至于安装方法就是无脑式地按Next就好了,下载地址如下所示: Visual Studio Cod ...
- 【Axure8】利用中继器(Repeater)实现表格数据的增删改
利用Repeater实现对Table数据的增删改操作. 先拖入必需的控件:rectangle.text field.droplist.button.table.repeater.具体信息如图. 为方便 ...
- 【转帖】为什么redis 是单线程的?
为什么redis 是单线程的? https://cloud.tencent.com/developer/article/1120615 云服务器企业新用户优先购,享双11同等价格 立即抢购 以前一直有 ...
- Windows 下配置 ApacheBench (AB) 压力测试
下载 http://httpd.apache.org/download.cgi 我用的是ApacheHaus. 安装服务 1. 打开apache目录下的 conf/httpd.conf,搜索并修改 L ...
- Linux基础-13-源码安装软件包
1.准备 安装必要软件 yum install gcc-* glibc-* -y yum groupinstall '开发工具' -y 2.解包 tar xvf 包名 3.运行configure脚本, ...
- python学习-58 configparse模块
configparse模块 1.生成文件 import configparser # 配置解析模块 config = configparser.ConfigParser() # config = { ...
- Python re模块学习
这是re模块与正则的结合 re模块提供的函数 1.match 尝试在字符串的开头应用该模式,返回匹配对象,如果没有找到匹配,则为None. import re str1 = "Why ar ...
- 虚拟机VMware中安装Ubuntu18.04
准备工作 Ubuntu 获取地址: 官网 清华镜像站 VMware 获取地址链接 安装过程 Vmware的安装过程此处不在赘述,不清楚如何安装的请自行百度,参见VMware14安装教程 然后就是Vmw ...