2012-05-29 52 views
0

我需要做的,就是让某些表数据的SQL备份文件(“生成INSERT语句”)。我想每月都这样做。备份mysql数据表 - 选择性

样品select语句:

SELECT * FROM table WHERE date >= "01-01-2012" AND date < "01-02-2012" 

的情况是,我需要从远程SQL Server备份。看来,我不能使用mysqldump然后(?)

因此,应我只是写一个PHP脚本来生成这些语句? 这似乎有点野蛮的解决方案;)

对不起,这件事似乎很基本,但我已经很困惑。

BTW。表是部分InnoDB和MyISAM的部分

+0

仅仅因为服务器是远程的,本身并不排除使用'mysqldump'的 - 这取决于服务器是否允许从主机传入连接。 – eggyal

+0

感谢您的快速响应。 是的,我可以从我的主机连接,如果这就是你的意思。对不起,但我不知道如何实际使用mysqldump远程,在本地机器上保存备份文件。 – hellward

+0

您可以使用'mysqldump -h hostname ....'进行远程连接,您可以使用主机名或IP – Nico

回答

0

你问了一系列的问题...

如果远程机器是UNIX,写一个小bash脚本是这样的:

#!/bin/bash 

/usr/bin/mysqldump -h db_server -u user_name -ppassword --WHERE 'date >= "01-01-2012" AND date < "01-02-2012"' database_name table_name | gzip > output.sql.gz 

需要注意的事项:

  1. 密码在脚本中硬编码。使用权限较低的用户帐户。
  2. 你的日期范围也是硬编码的,但这很容易使通用。
  3. '-p'和密码之间没有空格。

对于InnoDB,使用--single事务。对于myisam,我想你会坚持使用--lock-tables。

然后在cron作业中运行此脚本。

如果连接有问题,请检查您的防火墙和mysql用户权限。

而我的$ 0.02 ...编写运行shell命令PHP脚本是真懒。为这些编写shell脚本。你会睡得更好。

祝你好运。