注意,这里的数据库复制不是复制主从数据库。而是类似于sqlite或access复制文件那样的快速复制。
比如,access有一个数据库db1,对应的数据库文件是db1.mdb,要复制这个数据库,直接复制文件即可。sqlite也差不多。他们的数据库文件都包含了元数据。
但mysql的数据库并非一库一文件,即使可以做到一库一目录,但元数据也不在里面。记得曾经有一次,在网上看到一篇文章,其中提到快速复制mysql数据库,大意是这个意思:
create database db2 from db1;
这条sql语句是举例,实际不是这样的,我忘了那条语句。
但现在我再找的时候,找不到了。我在mysql网站查文档,关于建库的sql,也没找到这种说法。那是怎么回事。有谁知道,有啥办法快速复制数据库呢?

解决方案 »

  1.   

    查到一篇文章,是用mysqldump通过管道复制,希望有sql语句的复制方法http://blog.csdn.net/whatlookingfor/article/details/51942566为了方便快速复制一个数据库,可以用以下命令 
    将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)这样的快速方法。
      

  2.   

    上面说的办法,要有命令行权限使用mysqldump,这个在云数据库上不行。
    因此,目前只能笨办法,
    先建库,再建立每个表 create table like,再insert from
    这样速度慢
    但这可以通过sql操作,不需要特别权限(当然要建库权限)
    有没有更快更好办法
      

  3.   

    create table xx as select * from xxx 会快一些
      

  4.   

    直接复制DATDIR下所有文件