Hippies

標題: 如何遷移MySQL的Database到另一台Server [打印本頁]

作者: kevinhu    時間: 2016-4-8 10:02
標題: 如何遷移MySQL的Database到另一台Server
一般最常用的操作方式是使用mysqldump的指令,將database中的資料匯出到備份檔中,然後在將備份檔案搬移到另一台伺服器上,再進行匯入的處理
將db-name的資料匯出到 db-name.out
$ mysqldump -u user -p db-name > db-name.out
使用sftp/ssh將備份檔db-name.out複製到遠端remote.box.com主機上的/backup目錄下
$ scp db-name.out user@remote.box.com:/backup
然後再到遠端的主機上將備份檔匯入database中
$ mysql -u user -p db-name < db-name.out
or
$ mysql -u user -p 'password' db-name < db-name.out

你也可以用一條指令把上面三個命令一次完成
如果你是在內網或有使用VPN(虛擬網路)的環境下可以這麼做
$ mysqldump db-name | mysql -h remote.box.com db-name
如果不是的話你還是可以經由ssh這麼做
$ mysqldump db-name | ssh user@remote.box.com mysql db-name
或是
$ mysqldump -u username -p'password' db-name | ssh user@remote.box.com mysql -u username -p'password db-name

另外你還可以在這過程中把db-name做變更的
$ mysqldump db-name foo | ssh user@remote.box.com mysql bar
或是
$ mysqldump -u user -p'password' db-name foo | ssh user@remote.box.com mysql -u user -p'password' db-name bar

以上的db-name僅是代表database名,使用時請視自己伺服器上的確實名稱來操作。


作者: kevinhu    時間: 2016-4-8 11:33
如果要搬移MySQL的Database位置的處理方式,則要先確認MySQL的Database檔案位置,進行搬移和重新指向的處理
首先要停止服務
$sudo /etc/init.d/mysql stop
or
$sudo service mysql stop
透過/etc/mysql/my.cnf MySQL的設定檔確認Database的檔案位置,預設的應該在/var/lib/mysql目錄下
使用cp指令進行複製搬移,這裡要提醒一下的是,如果要整個目錄移動的話最好是用mv指令,如果複製的話才用cp指令而且要注意加 -R -p 參數,以避免遺漏掉目錄下的子目錄或隱藏檔
$sudo cp -R -p /var/lib/mysql /newpath
變更/etc/mysql/my.cnf MySQL的設定檔,將原來的datadir指向新的位置
[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/
最後再重新啟動MySQL
$sudo /etc/init.d/mysql start
or
$sudo service mysql start





歡迎光臨 Hippies (http://bbs.hippies.tw/) Powered by Discuz! X3.2