如何用python实现多台mysqlserver的远程备份

Python017

如何用python实现多台mysqlserver的远程备份,第1张

我把多台mysqlserver按照 ip:usrname:pass:port:hostname 的格式写到host.list文件中。

用bash shell写了一个脚本,可以实现在linux服务器来备份远程mysqlserver。但是由于mysqlserver数量多,库大,导致备份时间特别长。所以问一下用python能不能呢个高效的实现这个需求。我的脚本如下:

#!/bin/bashmysqldump=`which mysqldump`for i in `cat host.list`doip=$(echo "$i"|cut -f1 -d":")

uname=$(echo "$i"|cut -f2 -d":")

passwd=$(echo "$i"|cut -f3 -d":")

port=$(echo "$i"|cut -f4 -d":")

server=$(echo "$i"|cut -f5 -d":")$mysqldump -h$ip -u$uname -p$passwd -P$port DBname | /bin/gzip >"$server-DBname-`date +%F\-%T`.sql.gz"done

MySQL的优点:

1. 它使用的核心线程是完全多线程,支持多处理器。

2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。

3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。

4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。

5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。

7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。

(2) MySQL的缺点:

1、 MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。

2、 MySQL的另一个主要的缺陷之一是缺乏标准的RI(Referential Integrity-RI)机制;Rl限制的缺乏(在给定字段域上的一种固定的范围限制)可以通过大量的数据类型来补偿。

3、 MySQL没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制。

4、 MySQL不支持热备份。

5、 MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或Linux 自行安装 免费 、Unix或Linux 第三方安装 200美元,