我打算在一段时间内备份mySQL数据库。例如:只备份一月到六月的数据。
有可能这样做吗?我想这样做的原因是我不想备份太旧的数据库。如果可能的话,请给我一些建议如何做到这一点。谢谢。
我假设您要根据日期备份表 ROWS,而不是表本身。
例如,如果您的表有一个date
or列,那么您可以使用查询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
然后编辑 crobjobcrontab -e
并添加类似以下行的内容:
* * * * * /usr/local/bin/php /home/moein/projects/WebService/index.php
#this cronjob executed every min.
您可以event
在mysql中使用其他方式来获取备份。但是您的mysql版本应该> 5.1.8
在mysql 开发页面上有更好的描述。