mysqldump 多 个 db

匿名 (未验证) 提交于 2019-12-02 22:06:11
背景

机器下架,需要将源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"

原文:http://blog.51cto.com/searchcoding/2134574

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!