mysqldump 多 個 db
阿新 • • 發佈:2018-06-30
with 方法 操作 strip err import 進行 urn hds 背景
機器下架,需要將源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"
mysqldump 多 個 db