我正在制作一个备份脚本,该脚本应该抓取系统上属于用户X的所有记录,以便我们稍后在需要时进行恢复。为此我使用mysqldump实用程序和" - 其中"。想法是允许用户在需要时备份和恢复数据。
我有很多数据透视表,我必须使用类似下面的代码进行备份:
# get list of projects id's
$projectsArr = $user->projects()->get()->lists('id')->toArray();
$whereClause = '--where="project_id IN (' . implode(",", $projectsArr) . ')"';
$table_name = 'project_task';
$this->createTableBackup($projectsArr, $table_name, $whereClause);
当ID列表大约为500时,上面的代码工作正常,在我的情况下可能不是这样......
目前我能看到的唯一解决方案是将user_id添加到每个数据透视表:
$whereClause = '--where="user_id = ' . $user->id . '"';
$table_name = 'project_task';
$this->createTableBackup($projectsArr, $table_name, $whereClause);
除了上面的内容之外,我的问题是否有更好的解决方案?
以下是我用于备份的代码片段:
public function dump($destinationFile, $table_name, $whereClause, $options) {
$command = sprintf('mysqldump %s --user=%s --password=%s --host=%s --port=%s %s %s %s > %s', $options, escapeshellarg($this->user), escapeshellarg($this->password), escapeshellarg($this->host), escapeshellarg($this->port), escapeshellarg($this->database), escapeshellarg($table_name), escapeshellarg($whereClause), escapeshellarg($destinationFile)
);
return $this->run($command);
}