回答
通常你運行的mysqldump創建一個數據庫複製和備份如下:使用SFTP/SSH遠程MySQL服務器
$ mysqldump -u user -p db-name > db-name.out
複製DB-name.out文件:
$ scp db-name.out [email protected]:/backup
還原數據庫在遠程服務器(通過ssh登錄):
$ mysql -u user -p db-name < db-name.out
OR
$ mysql -u user -p 'password' db-name < db-name.out
如何將MySQL數據庫從一臺計算機/服務器複製到另一臺計算機/服務器?
簡而言之,您可以使用ssh或mysql客戶端將數據庫從一臺計算機/服務器複製到另一臺計算機/服務器。
您可以運行在一個通用mysqldump和mysql命令所有上述3個命令(不安全的方法,只使用,如果您使用VPN或信任網絡):
$ mysqldump db-name | mysql -h remote.box.com db-name
使用SSH,如果你不」噸有遠程MySQL服務器(安全法)直接訪問:
$ mysqldump db-name | ssh [email protected] mysql db-name
OR
$ mysqldump -u username -p'password' db-name | ssh [email protected] mysql -u username -p'password db-name
你ç一個只是複製稱爲酒吧使用相同的語法表名爲foo到遠程數據庫(和遠程MySQL服務器remote.box.com):
$ mysqldump db-name foo | ssh [email protected] mysql bar
OR
$ mysqldump -u user -p'password' db-name foo | ssh [email protected] mysql -u user -p'password' db-name foo
幾乎所有的命令都可以通過下水管運行UNIX/Linux oses。
更多來自Reference
問候,
請確保您在轉儲中使用擴展插入選項(我認爲它可能默認啓用,但不是肯定的),否則恢復速度將顯着下降。 – 2012-02-28 21:20:50
*從這裏取:http://www.cyberciti.biz/tips/howto-copy-mysql-database-remote-server。html – 2013-09-16 22:08:30
如果你有根,你可能會發現它更快避免mysqldump
。您可以在目標服務器上創建數據庫,並直接複製數據庫文件。假設user
訪問目標服務器的mysql目錄:
[[email protected]]# /etc/init.d/mysqld stop
[[email protected]]# cd /var/lib/mysql/[databasename]
[[email protected]]# scp * [email protected]:/var/lib/mysql/[databasename]
[[email protected]]# /etc/init.d/mysqld start
重要的事情是:複製DB文件之前停止這兩個服務器上的mysqld,確保文件的所有權和權限在目標正確的啓動mysqld前目標服務器。
[[email protected]]# chown mysql:mysql /var/lib/mysql/[databasename]/*
[[email protected]]# chmod 660 /var/lib/mysql/[databasename]/*
[[email protected]]# /etc/init.d/mysqld start
隨着時間的推移在這兒你的優先級,壓縮的使用將取決於時間是否失去了等待的壓縮/解壓縮(喜歡的東西gzip
)會比浪費傳輸未壓縮數據的時間更大;也就是連接的速度。
這是迄今爲止最簡單的方法。不知道爲什麼這不是更高。然後,MySQL服務器就是原件的複印件。我在5分鐘內將整個網絡服務器克隆到了一臺獨特的服務器上。 – David 2013-09-27 15:12:13
我做了上述步驟,但我得到「錯誤1146(42S02):表'sample.user'不存在」,當我嘗試打印用戶表。任何想法 ?? – Bathakarai 2013-11-06 08:39:08
想法:錯誤路徑下用戶表的文件,錯誤的文件權限或配置不同的服務器。 – Umbrella 2013-11-08 15:48:18
對於一個自動化的方式來備份你的MySQL數據庫:
的先決條件做任何形式的備份是找到一天的理想的時間來完成任務,而不妨礙運行系統的性能或用戶造成干擾。在這個筆記中,必須考慮數據庫的大小以及驅動器的I/O速度 - 隨着數據庫的增長,數據庫的規模變得越來越重要(想到的另一個因素是驅動器的數量,因爲有一個由於磁頭不執行讀寫操作,數據庫不存儲的備用驅動器會提高速度。)爲了保持這種可讀性,我假設數據庫具有可管理的大小(100MB),並且工作環境是上午9點至下午5點的工作,沒有真正的壓力或其他非工作時間系統。
第一步是使用root權限登錄到本地計算機。一旦在根shell中,MySQL用戶將需要創建具有隻讀權限。要做到這一點,使用以下命令輸入MySQL的外殼:
mysql -uroot -ppassword
接下來,用戶需要具有隻讀的權限需要進行備份的數據庫中創建。在這種情況下,如果稍後使用腳本或進程,則不需要將特定數據庫分配給用戶。要在MySQL外殼創建擁有完全的讀取權限的用戶,輸入以下命令:
grant SELECT on *.* TO [email protected] IDENTIFIED BY ' backuppassword';
FLUSH PRIVILEGES;
隨着創建的MySQL用戶,就可以安全退出MySQL的外殼,並使用出口回落到root的shell。從這裏開始,我們需要創建我們想要運行備份命令的腳本,這很容易使用BASH完成。該腳本可以在任何地方進行存儲,因爲我們將使用一個cron作業每晚運行腳本,這個例子的目的,我們將放置腳本在新目錄中,我們創建了一個名爲「backupscripts。」要創建該目錄,在root shell中使用這個命令:
mkdir /backupscripts
我們還需要創建一個目錄來存放我們的本地備份。我們將這個目錄命名爲「backuplogs」。在root shell中發出以下命令來創建目錄:
mkdir /backuplogs
下一個步驟將是登錄到遠程機器的根證書,並創建一個「備份用戶」使用以下命令:
useradd -c "backup user" -p backuppassword backupuser
爲備份創建一個目錄:
mkdir /backuplogs/
您註銷之前,使用命令抓取遠程主機的IP地址,以供將來參考:
ifconfig -a
eth0是有線網絡連接的標準接口。注意這個IP_ADDR。
最後,註銷遠程服務器,並返回到原來的主機。
下一步,我們將創建一個是我們的主機本地機器,而不是在遙控器上我們的腳本文件。我們將使用VIM(如果你是一個納米或Emacs風扇不記仇我 - 但我不會列出如何使用VIM編輯在這裏一個文件,)首先創建文件,並使用mysqldump ,備份你的數據庫。我們也將使用scp來創建數據庫後,壓縮文件以進行存儲。將文件讀取到STDOUT以滿足說明。最後,檢查7天以前的文件。刪除它們。要做到這一點,你的腳本將是這樣的:
vim /backupscripts/mysqldbbackup.sh
#!/bin/sh
# create a temporary file for the schema to be stored
BACKUPDIR = /backuplogs/
TMPFILE = tmpout.sql
CURRTIME = $(date +%Y%m%d).tgz
#backup your database
mysqldump -ubackupdbuser -pbackuppassword databasename > $BACKUPDIR$TMPFILE
#compress this file and store it locally with the current date
tar -zvcf /backuplogs/backupdb-$CURRTIME $BACKUPDIR$TMPFILE
#per instructions - cat the contents of the SQL file to STDOUT
cat $BACKUPDIR$TMPFILE
#cleanup script
# remove files older than 7 days old
find $BACKUPDIR -atime +7 -name 'backup-db-*.tgz' -exec rm {} \;
#remove the old backupdirectory from the remote server
ssh [email protected] find /backuplogs/ -name 'backup-db-*.tgz' -exec rm {} \;
#copy the current backup directory to the remote server using scp
scp -r /backuplogs/ [email protected]:/backuplogs/
#################
# End script
#################
有了這個腳本的地方,我們需要安裝SSH密鑰,所以,我們不是提示我們每個腳本運行時輸入密碼。我們將使用SSH-keygen和命令執行此操作:
ssh-keygen -t rsa
在提示時輸入密碼 - 這會創建您的私鑰。不要分享這個。
你需要分享的是你的公鑰,它被存儲在文件current_home /的.ssh/id_rsa.pub文件。下一步是將此公鑰傳輸到遠程主機。要獲得密鑰,請使用以下命令:
cat current_home/.ssh/id_rsa.pub
複製文件中的字符串。接下來使用以下命令進入遠程服務器ssh:
ssh [email protected]
輸入您的密碼,然後編輯文件/.ssh/authorized_keys。將從id_rsa.pub文件中獲取的字符串粘貼到authorized_keys文件中。使用編輯器將更改寫入文件,然後退出編輯器。註銷遠程服務器並通過使用先前的ssh命令嘗試再次登錄到遠程服務器來測試RSA密鑰的工作情況。如果沒有要求密碼,它工作正常。再次註銷遠程服務器。
我們需要做的最後一件事是建立一個cron作業的用戶已註銷後,每天晚上運行此。使用crontab,我們將編輯當前用戶文件(root)以避免所有權限問題。 *注 - 這可能產生嚴重的影響,如果有在腳本中包括刪除數據,安全漏洞等錯誤 - 仔細檢查所有的工作,並確保你信任你自己的系統,如果這是不可能的,那麼備用的用戶和應該在當前服務器*上設置權限。要修改當前的crontab,我們將發出命令:
crontab -e
雖然在crontab編輯器(它會在您的默認文本編輯器打開),我們要設置我們的腳本在運行12每晚:30AM。輸入一個新行到編輯器:
30 0 * * *慶典/backupscripts/mysqldbbackup.sh
保存此文件並退出編輯器。爲了讓你的cronjob正常運行,我們需要重新啓動crond服務。要做到這一點,發出命令:
/etc/init.d/crond restart
- 1. 什麼是升級Magento數據庫的最快和最簡單的方法?
- 2. 最快的方式,以顯示MySQL數據庫記錄
- 3. MYSQL:最簡單的方式,以表2
- 4. 最簡單的方法來複制MySQL數據庫?
- 5. 在php中訂購mysql輸出的最簡單/最快的方式
- 6. 向移動設備傳遞數據的最輕/最快的方式是什麼?
- 7. 什麼是將表單數據寫入MYSQL數據庫的最快也是最安全的方式
- 8. 平均ARGB顏色整數的最快/最簡單的方法?
- 9. 將數據插入到MySQL/MariaDB中的最快和最簡單的方法是什麼?
- 10. 最簡單的方式來檢測移動設備
- 11. 用C++將數據插入mysql數據庫的最簡單方法是什麼?
- 12. 什麼是簡單合併文件的最快捷方式,什麼是分割數組的最快捷方式?
- 13. 快速讀取POST數據的最簡單方法
- 14. C#如何連接WPF和SQLITE數據庫最簡單的方法
- 15. 最簡單的方法來移動一個簽名的數字
- 16. Jquery移動存儲和檢索數據的最佳方式?
- 17. 最快方式
- 18. 最快方式
- 19. 最快的方式
- 20. 最快的方式
- 21. 最快的方式
- 22. 最快的方式
- 23. 最快的方式
- 24. 最快的方式
- 25. 最快的方式
- 26. 最快的方式
- 27. 最快的方式
- 28. 最快的方式
- 29. 最快的方式
- 30. 最快的方式
我想這樣的問題屬於上http://dba.stackexchange.com/我希望移居遷移,但我沒有代表:P或可能http://www.Superuser.com但我會懷疑前者,因爲它是數據庫特定的。 – Jordan 2012-02-28 21:17:33