注意,这里的数据库复制不是复制主从数据库。而是类似于sqlite或access复制文件那样的快速复制。
比如,access有一个数据库db1,对应的数据库文件是db1.mdb,要复制这个数据库,直接复制文件即可。sqlite也差不多。他们的数据库文件都包含了元数据。
但mysql的数据库并非一库一文件,即使可以做到一库一目录,但元数据也不在里面。记得曾经有一次,在网上看到一篇文章,其中提到快速复制mysql数据库,大意是这个意思:
create database db2 from db1;
这条sql语句是举例,实际不是这样的,我忘了那条语句。
但现在我再找的时候,找不到了。我在mysql网站查文档,关于建库的sql,也没找到这种说法。那是怎么回事。有谁知道,有啥办法快速复制数据库呢?
比如,access有一个数据库db1,对应的数据库文件是db1.mdb,要复制这个数据库,直接复制文件即可。sqlite也差不多。他们的数据库文件都包含了元数据。
但mysql的数据库并非一库一文件,即使可以做到一库一目录,但元数据也不在里面。记得曾经有一次,在网上看到一篇文章,其中提到快速复制mysql数据库,大意是这个意思:
create database db2 from db1;
这条sql语句是举例,实际不是这样的,我忘了那条语句。
但现在我再找的时候,找不到了。我在mysql网站查文档,关于建库的sql,也没找到这种说法。那是怎么回事。有谁知道,有啥办法快速复制数据库呢?
解决方案 »
- 数据库设计思路!!!
- 优化sql语句问题 求指教
- PostgreSQL及EnterpriseDB发起人Bruce Momjian中国技术交流会
- 连接同网络内其它机器上的My SQL失败 如何找寻解决办法?
- mysql fetch row 为什么会取到空值。
- linux as4 +php5.2.0+mysql5.0.27 phpinfo未显示mysql信息
- MySql数据同步备份的问题
- mysql数据库的访问量
- 版本问题(弱智问题)
- mysql执行错误use mysql update user Set user='ok',password=password('ok') where user='root'
- mysql的varchar类型怎么转换为bigint
- 新人求教,请大神帮忙看下MYSQL的sql语句问题,谢谢
将db1数据库的数据以及表结构复制到newdb数据库创建新的数据库#mysql -u root -p123456mysql>CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
1
2
3
复制数据库,使用mysqldump及mysql的命令组合,一次性完成复制#mysqldump db1 -u root -p123456 --add-drop-table | mysql newdb -u root -p123456
1
注意-p123456参数的写法:-p后面直接跟密码,中间没有空格)以上是在同一台MySQL服务器上复制数据库的方法。如果要复制到远程另一台MySQL服务器上,可以使用mysql的“ -h 主机名/ip”参数。前提是mysql允许远程连接,且远程复制的传输效率和时间可以接受。不在同一个mysql服务器上#mysqldump db1 -uroot -p123456 --add-drop-table | mysql -h 192.168.1.22 newdb -u root -p123456
至于快速复制表的方法,也在这贴一下连接
http://blog.csdn.net/btbdylq/article/details/6827981但这些方法,相当于都是导入导出,就没有mysql内部复制文件(类似于sqlite或access)这样的快速方法。
因此,目前只能笨办法,
先建库,再建立每个表 create table like,再insert from
这样速度慢
但这可以通过sql操作,不需要特别权限(当然要建库权限)
有没有更快更好办法