使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)

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

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

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

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

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

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

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

分库备份:

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

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第1张图片

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

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

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第2张图片

3、编写备份脚本:

[[email protected] scripts]# vim mysqldb.sh

#!/bin/sh

# ******************************************************

# Author : a?锦衣卫

# Last modified: 2019-05-18 13:25

# Email : [email protected]

# 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

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第3张图片

执行脚本:

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第4张图片

ok,分库备份success!

6cc9d90628d5bf837cdbd5af1a2abf35.gif

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

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

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第5张图片

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

[[email protected] scripts]# vim mysqldb1.sh

#!/bin/sh

# ******************************************************

# Author : a?锦衣卫

# Last modified: 2019-05-18 13:25

# Email : [email protected]

# 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

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第6张图片

执行脚本:

使用脚本对mysql分表_实现对MySQL数据库进行分库/分表备份(shell脚本)_第7张图片

ok,分库分表备份success!

6cc9d90628d5bf837cdbd5af1a2abf35.gif

原文:https://www.cnblogs.com/su-root/p/10885854.html

你可能感兴趣的:(使用脚本对mysql分表)