mysql 数据库dump ----python之mysqldump
来源:互联网 发布:java ee tag标签文件 编辑:程序博客网 时间:2024/05/18 01:09
利用mysqldump工具对mysql的innodb库进行备份或者在同步主备的时候先将主库已经有的数据同步到备库,保证主备库的一致性
需要额外安装的模块: sqlparse
#!/usr/bin/env python#-*- coding:utf-8 -*-import osfrom warnings import filterwarningsimport MySQLdbfilterwarnings('ignore', category=MySQLdb.Warning)import ConfigParserimport osimport sysreload(sys)sys.setdefaultencoding("utf8")import sqlparsedef dump_mysql(host, port, data_base): try: dump_dir = os.getcwd() + "/tmp.sql" print "dump指定host的数据库到本地" os.popen("mysqldump -h%s -u%s -p%s -P %d --default-character-set=utf8 --single-transaction %s > %s" % (host, "your user" , "your password", port, data_base, dump_dir)) #注意user必须是远程账户 print "开启本地3306端口数据库接收dump数据" os.popen("service mysqld start") conn = MySQLdb.connect(host="127.0.0.1", user="your user", passwd="your password", port=3306, charset="utf8") cur = conn.cursor() cur.execute("CREATE DATABASE if not exists %s" % data_base) conn.select_db("%s" % data_base) sql = open(dump_dir).read() sql_parts = sqlparse.split(sql) for sql_part in sql_parts: if sql_part.strip() == '': continue elif str(sql_part.strip()).count(";") > 1: for tmp in sql_part.strip().split(";"): if tmp.strip() == "": continue else: cur.execute(tmp.strip()) else: cur.execute(sql_part.strip()) conn.commit() cur.close() conn.close() print "done" print "dump的tmp.sql文件可在当前目录下找到" except Exception as ex: raise exif __name__ == "__main__": host = raw_input('input host: ') while True: if not host: print "please input correct host" host = raw_input('input host: ') else: break port = raw_input('input port: ') while True: if not port: print "please input correct port" port = raw_input('input port: ') else: try: int(port) break except: print "please input correct port" port = raw_input('input port: ') data_base = raw_input('input database: ') while True: if not data_base: print "please input correct database" data_base = raw_input('input database: ') else: break dump_mysql(host, int(port), data_base)最近发现了一种较为简单的方式,而且上述方式在遇到编码问题时很头疼!~~~
process = Popen('mysql %s -h192.168.xxx.xxx -uxxxx -pxxxx, -P %d --default-character-set=utf8' % (database, port), stdout=PIPE, stdin=PIPE, shell=True)process.communicate('source' + " " + dump_dir)#dump_dir为上面mysqldump到的xxx.sql
0 0
- mysql 数据库dump ----python之mysqldump
- mysql 数据库备份mysqldump
- mysql (mysqldump) 数据库迁移
- MySQL Study之--Mysql数据库备份工具(mysqldump)
- MySQL备份之mysqldump
- Mysql之Mysqldump
- MySql备份之mysqldump
- mysql备份之mysqldump
- mysql备份之 mysqldump
- MySQL备份之mysqldump
- mysqldump 远程备份mysql数据库
- mysqldump导入导出mysql数据库
- 使用mysqldump备份MySQL数据库
- mysql的mysqldump导出数据库
- MySQL 使用 MySQLDump 复制数据库
- mysqldump导入导出mysql数据库
- mysqldump导入导出mysql数据库
- mysqldump导入导出mysql数据库
- Windows 7\Windows 8\Windows 2008 配置DB2客户端 CCA3054N 问题解决办法
- git 服务器以及ssh密钥公钥
- Freemarker由浅入深01-环境搭建、测试
- cocoapod 使用
- JS取整
- mysql 数据库dump ----python之mysqldump
- java 1.5新特性
- Oracle导出 DMP 方法
- document节点对象的获取方式
- CART算法实现之可视化
- Souliss – 分布式家庭自动化和物联网
- Facebook 2013年的9个开源项目
- 表示 十六进制字符串 对 10取模的方法
- java 1.6新特性