【发布时间】:2013-08-26 06:28:17
【问题描述】:
我打算在一段时间内备份mySQL数据库。 例如:只备份一月到六月的数据。
有可能做到吗?我想这样做的原因是我不想备份太旧的数据库。 如果可能的话,请给我一些建议如何做到这一点。 谢谢。
【问题讨论】:
-
把话题暂时搁置,真的吗?我认为 SQL 查询甚至命令行工具都适合这个网站。
我打算在一段时间内备份mySQL数据库。 例如:只备份一月到六月的数据。
有可能做到吗?我想这样做的原因是我不想备份太旧的数据库。 如果可能的话,请给我一些建议如何做到这一点。 谢谢。
【问题讨论】:
我假设您要根据日期备份表 ROWS,而不是表本身。
如果您的表有date 或timestamp 列,那么您可以使用INTO OUTFILE 查询基于日期备份某些行。
或者,您可以在命令行中使用带有--where 选项的mysqldump。
看到这个答案: MYSQL Dump only certain rows
【讨论】:
试试这个:
exec("mysqldump --opt -u$db_user -p$db_pass --no-create-info --where date >= '2013-08-01' my_database my_table > backup.sql");
【讨论】:
您有几种方法可以做到这一点,您可以使用 shell 脚本并将mysqldump 作为 cronjob 运行,您应该只编写类似以下脚本的内容,然后将其添加到您的 crobjob。
#!/bin/bash
mysqldump --add-drop-table -h <hostname> -u <username> --password=<password> --all-databases > backup.sql
filename="backup.sql."`eval date +%Y%m%d`".tgz"
tar -czf $filename backup.sql
rm backup.sql
然后通过crontab -e 编辑crobjob 并添加类似于以下行的内容:
* * * * * /usr/local/bin/php /home/moein/projects/WebService/index.php
#this cronjob executed every min.
你可以在mysql中使用event获取备份。但是你的mysql版本应该是> 5.1.8
mysql dev page 有更好的描述。
【讨论】: