#!/bin/bash
2
3 backup=/backup/db #存放数据库的位置
4 nodatabases='information_schema|mycat|performance_schema|sys|mysql' #要过滤的数据库
5
6 mysql -uroot -predhat -e "show databases" -N | egrep -v "${nodatabases}" > dbname #将数据库存放在临
时文件中
7
8 while read line
9 do
10 [ -d ${backup}/$line ] || mkdir -p ${backup}/$line #判断是否有这个目录,若没有则创建
11 mysqldump -uroot -predhat -B $line | gzip > ${backup}/${line}/${line}.sql.gz #备份数据库,并创建一
个以数据库为名字的目录
12 mysql -uroot -predhat -N -e "show tables from $line" > dbtable #将表存放在临时文件中
13 while read tb
14 do
15 mysqldump -uroot -predhat $line $tb | gzip > ${backup}/${line}/${line}_${tb}.sql.gz #备份表,与
自身的数据库在同一目录下
16 done < dbtable #阅读每一行的表
17
18 done < dbname #阅读每一行的数据库
19
20 rm -r dbname dbtable #删除临时文件
运行之后通过tree /backup/db去查看
分库分表就成功了