我查看了有关此的 Wordpress 论坛,但没有找到任何内容,所以我想我可以在这里试试。
如果您有用于测试新插件等的暂存/开发 Wordpress 设置,您如何将暂存数据库中的数据迁移回生产数据库?是否有“Wordpress 最佳实践”方法来执行此操作,或者我是否仅限于必须手动将表从一个数据库迁移到另一个数据库?
最佳答案
我有一个脚本,mysqldumps 我的生产 Wordpress 数据库的副本,通过我的测试 Wordpress 安装恢复它,然后更正测试数据库中的所有“生产”设置和 url。
我的生产和测试数据库都位于同一台服务器上,但您可以更改 mysqldump 设置以从远程 mysql 服务器转储并轻松恢复到本地服务器。
这是我的脚本:
overwrite_test.coach_db_with_coache_db.sh
#!/bin/bash
dbUser="co*******"
dbPassword="*****"
dbSource="coach_production"
dbDest="coach_test"
tmpDumpFile="/tmp/$dbSource.sql"
mysqldump --add-drop-table --extended-insert --user=$dbUser --password=$dbPassword --routines --result-file=$tmpDumpFile $dbSource
mysql --user=$dbUser --password=$dbPassword $dbDest < $tmpDumpFile
mysql --user=$dbUser --password=$dbPassword $dbDest < /AdminScripts/change_coach_to_test.coach.sql
change_coach_to_test.coach.sql
-- Change all db references from @oldDomain to @newDomain
SET @oldDomain = 'coach.co.za';
SET @newDomain = 'test.coach.co.za';
SET @testUsersPassword = 'password';
UPDATE `wp_1_options` SET `option_value` = REPLACE(`option_value`,@oldDomain,@newDomain) WHERE `option_name` IN ('siteurl','home','fileupload_url');
UPDATE `wp_1_posts` SET `post_content` = REPLACE(`post_content`,@oldDomain,@newDomain);
UPDATE `wp_1_posts` SET `guid` = REPLACE(`guid`,@oldDomain,@newDomain);
UPDATE `wp_blogs` SET `domain` = @newDomain WHERE `domain` = @oldDomain;
UPDATE `wp_users` SET `user_pass` = MD5( @testUsersPassword );
-- Only valid for main wpmu site
UPDATE `wp_site` SET `domain` = @newDomain WHERE `domain` = @oldDomain;
关于database - Wordpress 数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1447148/