mysqldump複数db


背景


マシンがダウンフレームし、ソースdbを新しいマシンに移行する必要があります.db_xxには固定接頭辞があり、番号セグメントごとに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"