mysqldump 多 个 db

背景

机器下架,需要将源db迁移到新机器上, db_xx 有固定前缀,按照号段号段分100个库, 需要将该100个

现在需要向办法将这 100个 db 迁移到 新机器上。

由于之前使用过mysqldump 备份过数据库,这里也想使用 mysqldump方法.

1.mysqldump 备份 简介

mysqldump 备份少数数据库:
mysqldump -uusername -ppassword  -hxxxxx --databases db1 db2 > db1db2.sql

mysqldump 备份少量数据库时,可以通过--databases 将要备份的db 列出来, 进行备份,但 如果使用这种方法,将会使 --databases 后的 列表很长, 而且 很容易漏写( 除非你用脚本罗列 拼接)

2.source 恢复简介

mysqldump出的数据,可以通过  source命令来恢复,使用方法:
mysql> source db1db2.sql;
该方法要求进入mysql , 当然还有其他方法。

3.思考使用脚本批量备份

要想使用脚本,需要解决下面的问题:
1.需要备份的db名字列表
2.能在shell管理台执行备份操作

3.1 获取db列表

show databases like ‘db%’ 来获取 需要备份 的 db列表,并导出到文件:
mysql -hxxx -uxxx -pxxx -e "show databases like 'db%'"  > db.txt

3.2 shell侧执行备份

mysql -hxxx -uxxx -pxxx -e 
-e 参数能够在shell命令行 执行 一些 mysql语句,而不用进入mysql 客户端.

4. 脚本备份

该脚本备份方法是,对每个db, mysqldump 后, 立即 导入到 目的db
import sys 
import commands
with open('db.txt', 'r') as f:

    for line in f.readlines():
        line = line.strip()
        if(line == ""):
            continue;

        print "dump: %s ..." % line

        cmd = 'mysqldump -hxxxx -uxxxx -pxxx -B ' + line + ' > ' + line + '.sql'
        (status, result) = commands.getstatusoutput(cmd)

        print "dump: %s ... return %d:%s" % (line,status,result)
        if status != 0:
            print "dump: %s ... error " % line
            exit(-1)

        sourc_cmd = "mysql -hdstip -udstuser -pdstcode -e 'source " + line + ".sql'"
        (status, result) = commands.getstatusoutput(sourc_cmd)

        print "source: %s, return %d:%s" % (sourc_cmd, status, result)
        if status != 0:
            print "source: %s ... error " % line
            exit(-1)

print "end"

猜你喜欢

转载自blog.51cto.com/searchcoding/2134574
DB