mysql数据库实现分库备份

不用进数据库也可以查看数据库中的库

mysql -uroot -p'password' -e 'show databases;'   要用到-e参数

再看一个加入sed之后的命令,上面的命令过滤出来的时候表格,那么我不想要表格,我要去掉的话就要用sed命令:

mysql -uroot -p123456 -e 'show databases;'|sed 1d    #这样就能直接拿到里面所有的库了,d参数是删除行的意思

mysql备份的语句:

mysqldump -uroot -p123456 -B test > test.sql  这里参数-B是指会在备份数据中增加建库的语句,备份数据使用-B参数,后面可以直接接多个库名

来看一下批量备份:mysqlbak.sh这个脚本

#!/bin/bash
#先拿到所有的库
database=`mysql -uroot -p123456 -e "show databases;"|sed 1d` #这里是反引号
echo $database
for data in $database
do
mysqldump -uroot -p123456 -B $data > /data/shell/mysqlbak/${data}`date +%Y%m%d`.sql    #date后面必须要有空格
done

当执行的时候,会出现这个错误

这个意思是这个库没有权限备份,因为这个库是系统自带的库,不允许备份,其实这个时候已经成功了,来我们看一下:

那么怎么处理这种错误呢,其实很简单,不要这个库就可以了:

database=`mysql -uroot -p123456 -e "show databases;"|sed 1,2d` #这里是反引号  这里sed 1,2d表示不用第一行和第二行

接下来我们就需要完善一下这个脚本了:

其实就是把变量参数化了就行

https://blog.csdn.net/linuxlsq/article/details/52606299  这个是参考的博客

 

posted @ 2018-05-28 10:49  老僧观天下  阅读(216)  评论(0编辑  收藏  举报