在我开始讨论之前,我想确保我的思路正确。
我正在处理的工作要求在PHP中创建的日历软件安装在两台服务器上,并使用单个mySQL数据库获取信息。我在服务器A上启动并运行了很好的软件,但我无法在服务器B上获取连接到数据库的代码(关于不同密码加密技术的错误),我无法克服。
现在我假设我使用CRON备份数据库并在服务器A上保存.sql文件,我应该能够使用CRON脚本将该备份导入服务器B上的mySQL。
0,30 * * * * mysqldump -uUSERNAME -pPASSWORD database > database_backup.sql
和
0,35 * * * * mysql -h DB_HOST -u DB_USER -p'DB_PASSWORD' DB_NAME < /url/of/file/database_backup.sql
这是否接近正确,还是应该回到远程数据库连接?
答案 0 :(得分:2)
您是否意识到cron只是一个调度程序,只是执行您告诉它的任何程序?除此之外,cron还有 NO 智慧。如果您想使用远程文件,则需要您来获取该文件。这不是,从来没有,也永远不会是,cron的工作。
您必须至少具有以下内容:
* * * * (wget http://example.com/file.sql > file.sql && mysql < file.sql)
但是,不管怎么说,你不应该将这样的“复杂”命令嵌入到crontab中。你应该把完整的逻辑放到shell脚本中,然后让cron调用那个脚本:
* * * * /path/to/script/get_sql_file_and_load_into_mysql