我使用Yii框架和MySQL编写了一个Web应用程序。
现在,老板希望“将所有更改存储在数据库中”,以便能够在有人破坏当前版本数据中的一些重要信息时恢复较旧的数据。
在数据库中存储所有更改的内容是模糊的。我不确定我们到底应该做什么。
如何满足这个模糊的老板的要求?
我们能用MySQL日志做到这一点吗?使用MySQL日志做这件事有什么好处和坏处?我们真的需要一个程序员(我)来从MySQL日志中恢复一些(可能不是全部)数据吗?可以使MySQL (部分)数据恢复变得简单吗?
或者,我是否应该努力手动(而不是使用MySQL日志)在特定的MySQL表中存储所有旧数据?
发布于 2013-07-24 00:51:37
我猜您所描述的是一个审计跟踪,它可以方便地返回并查看历史记录,但至于恢复,则需要手动操作。
看看创建审计跟踪的技术。
发布于 2013-07-24 01:32:45
您可能想尝试使用诸如eactsasversioned之类的searching the extensions library来归档对记录所做的编辑。我不确定它是否保存删除的记录,但它似乎接近你想要的。
发布于 2013-07-24 02:20:27
如果您正在寻找可以轻松恢复的内容,则可能需要定期运行备份脚本。我在cron中使用bash脚本(如下所示)每小时备份一次我担心的数据库。我的数据库相当小,所以这只需要几秒钟,如果你是超级偏执狂,可以增加到每15分钟运行一次。
#!/bin/bash
dbName1="li_appointments"
dbName2="lidb_users"
dbName3="orangehrm_li"
fileName1=$dbName1"_`date +%Y.%m.%d-%H:%M:%S`.sql"
fileName2=$dbName2"_`date +%Y.%m.%d-%H:%M:%S`.sql"
fileName3=$dbName3"_`date +%Y.%m.%d-%H:%M:%S`.sql"
backupDir="/home/backups/mysql"
mysqldump -u backup_user --password='********************************' $dbName1 > $backupDir/$fileName1
mysqldump -u backup_user --password='********************************' $dbName2 > $backupDir/$fileName2
mysqldump -u backup_user --password='********************************' $dbName3 > $backupDir/$fileName3
bzip2 $backupDir/$fileName1
bzip2 $backupDir/$fileName2
bzip2 $backupDir/$fileName3
gpg -c --passphrase '********************************' $backupDir/$fileName1".bz2"
gpg -c --passphrase '********************************' $backupDir/$fileName2".bz2"
gpg -c --passphrase '********************************' $backupDir/$fileName3".bz2"
rm $backupDir/*.bz2
echo "Backups completed on `date +%D`" >> $backupDir/backuplog.loghttps://stackoverflow.com/questions/17816221
复制相似问题