使用Shell实现mysql分库备份

大家好,今天给大家带来的是一个分库备份脚本

 

下面是准备好的4个数据库 aa bb cc dd

执行效果如下

恢复一下看看

shell脚本如下:

#!/bin/bash
myuser=root
mypasswd=123456
mycmd="mysqldump -u$myuser -p$mypasswd"
for dname in `mysql -uroot -p123456 -e "show databases;"| sed 1d | egrep -v "schema|test|mysql"`
do
$mycmd --databases $dname >/opt/${dname}_`date +%F`.sql
done

解析如下:

#!/bin/bash
myuser=root  #定义数据库用户
mypasswd=123456  #定义数据库密码
mycmd="mysqldump -u$myuser -p$mypasswd"  #备份数据库的命令,这里调用了上面的用户密码。

#然后使用正则取出每个数据库的名字然后使用for循环分别备份,不知道怎么取的可以继续往下看
for dname in `mysql -uroot -p123456 -e "show databases;"| sed 1d | egrep -v "schema|test|mysql"` 

do
$mycmd --databases $dname >/opt/${dname}_`date +%F`.sql
#这里调用上面取出的数据库名字和备份命令,备份到指定位置并以时间命名
done

这个脚本的重点是在于取数据库的名字

`mysql -uroot -p123456 -e "show databases;"| sed 1d | egrep -v "schema|test|mysql"`

`mysql -uroot -p123456 -e "show databases;" 可以直接在终端查看数据库

加管道符 sed 1d 可以删除第一行,效果如下

 

|egrep -v "schema|mysql|test"

再加管道符使用egrep过滤并取反排除不需要备份的数据库

注:egrep是扩展grep可以同时过滤多个 -v是取反

 

取出数据库名字然后就可以用for循环来备份数据库了,希望对你有所帮助,拜拜。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值