首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制包含MySQL中数据的数据库

问复制包含MySQL中数据的数据库
EN

Stack Overflow用户
提问于 2011-06-05 13:00:52
回答 6查看 26.1K关注 0票数 9

我在服务器上的数据库中保存了一组基本数据。当用户注册我的服务时,我希望能够将此数据库复制到已创建的另一个数据库。有没有一种简单有效的方法来使用PHP / MySQL来做到这一点呢?纯MySQL会更好。

我考虑过遍历基础数据库中的所有表,但我不知道如何创建包含新数据库列的表。

运行PHP5.1和MySQL 5。

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-05 13:14:49

这里有一篇文章,介绍了备份和恢复数据库的十种方法。每种方法都使用不同的方法,大多数方法可能适用于您的情况,但也有一些方法适用:

http://www.noupe.com/how-tos/10-ways-to-automatically-manually-backup-mysql-database.html

第六讲创建一个转储文件,然后再恢复它。您可以使用它将数据转储出去,然后将其恢复到新数据库中。

这里的另一个选择是制作数据库的物理副本。如果您将数据库存储在不同的位置,这可能是一个选择。它不会这么简单,但它应该工作得很好。

最后,您可以从PHP运行一个脚本,该脚本将为您执行MySql转储命令。这将允许您复制整个数据库并将其设置在新的位置,因此您甚至不需要有一个数据库来完成此操作:

MySQL to MySQL clone with PHP

票数 9
EN

Stack Overflow用户

发布于 2012-10-31 00:50:05

如果您拥有使用make "exec“系统调用的权限,则可以执行以下操作

代码语言:javascript
复制
exec("mysql -u".$DB_USER." --password='".$DB_PASS."' -e 'DROP DATABASE IF EXISTS `".$NEW_DB."`; CREATE DATABASE `".$NEW_DB."`;'");
exec("mysqldump -u".$DB_USER." -p'".$DB_PASS."' ".$EXISTING_DB." | mysql -u ".$DB_USER." --password='".$DB_PASS."' ".$NEW_DB);

这将删除$NEW_DB (如果存在)并重新创建它,然后将$EXISTING_DB中的所有表和数据转储到$NEW_DB中

免责声明:在命令行中传递mysql密码通常不是一个好主意。我不确定,但我猜这可能是某个拥有root访问权限的人看到的,他有能力查看所有进程和启动它们的命令行选项。

此外,对于如何在新数据库中创建一个列与另一个表匹配的表的其他问题,您可以使用以下SQL

代码语言:javascript
复制
CREATE TABLE new_database.new_table LIKE old_database.old_table
票数 6
EN

Stack Overflow用户

发布于 2011-06-05 13:24:44

我不认为为每个注册复制一个数据库是一个好办法。您应该让每个签名用户共享基础数据库,并根据需要查询所需的数据,而不是进行如此多的重复。

如果您知道基本数据库的模式,我就不明白为什么在创建相应的表时会有问题。

你的客户越多,你就越应该考虑分享而不是复制。尽管数据库是为事务设计的,但你应该尽可能避免不必要的写操作,因为这会占用太多的时间和资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6241102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档