注意,這里的資料庫復制不是復制主從資料庫。而是類似于sqlite或access復制檔案那樣的快速復制。
比如,access有一個資料庫db1,對應的資料庫檔案是db1.mdb,要復制這個資料庫,直接復制檔案即可。sqlite也差不多。他們的資料庫檔案都包含了元資料。
但mysql的資料庫并非一庫一檔案,即使可以做到一庫一目錄,但元資料也不在里面。
記得曾經有一次,在網上看到一篇文章,其中提到快速復制mysql資料庫,大意是這個意思:
create database db2 from db1;
這條sql陳述句是舉例,實際不是這樣的,我忘了那條陳述句。
但現在我再找的時候,找不到了。我在mysql網站查檔案,關于建庫的sql,也沒找到這種說法。那是怎么回事。有誰知道,有啥辦法快速復制資料庫呢?
uj5u.com熱心網友回復:
查到一篇文章,是用mysqldump通過管道復制,希望有sql陳述句的復制方法http://blog.csdn.net/whatlookingfor/article/details/51942566
為了方便快速復制一個資料庫,可以用以下命令
將db1資料庫的資料以及表結構復制到newdb資料庫
創建新的資料庫
#mysql -u root -p123456
mysql>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)這樣的快速方法。
uj5u.com熱心網友回復:
上面說的辦法,要有命令列權限使用mysqldump,這個在云資料庫上不行。因此,目前只能笨辦法,
先建庫,再建立每個表 create table like,再insert from
這樣速度慢
但這可以通過sql操作,不需要特別權限(當然要建庫權限)
有沒有更快更好辦法
uj5u.com熱心網友回復:
如果你不在意思資料的一致性,可以直接復制檔案的uj5u.com熱心網友回復:
create table xx as select * from xxx 會快一些uj5u.com熱心網友回復:
直接復制DATDIR下所有檔案轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/109443.html
標籤:MySQL
上一篇:MySQL亂碼問題
