2011-12-12 26 views
2

我剛剛創建了我的第一個PHP/MySQL站點,並且正在研究創建用於備份的數據庫鏡像。當然,這是一些黑客設法去窺探並破壞主數據庫的情況。有沒有這樣做的正確或錯誤的方式?鏡像PHP/MySQL設置的正確方法

編輯:是的,我已經在其他一些主機託管計劃,我想鏡子被放置在

+1

不要託管公司自動執行此操作嗎? –

回答

4

主要有兩種方式來備份你的MySQL數據庫:冷(靜態/脫機)備份&熱(動態/聯機)備份。

1使用crontab腳本每天/每週/每月等備份數據庫,我們稱之爲冷備份。該腳本可能是這樣的:

!#/bin/sh 
mysqldump -usample_name -S/tmp/sample.sock --databases db1 db2 > db_backup_time.sql 

你可以找到手冊的mysqldump here。實際上,整個chp.6正在談論數據庫備份和恢復。在此之後,您每天都會看到您的數據(例如上午6點)的鏡像。

2使用mysql replication solutions(主從結構)進行聯機備份。主站上的所有查詢導致數據修改也將在從站上執行。

比較 - :

基本上,冷備份更容易。但是當發生不好的事情時,第一種方法只能將數據恢復到傾銷鏡像的時間。藉助熱備份和mysqldump工具,您可以隨時恢復數據。

在我的經驗中,我們始終將這兩種方法一起組成:

  1. 寫每天早晨鏡,並
  2. 建立主DB的從另一臺物理機器上。

這將是安全的。

+0

解決方案2很有趣。我喜歡根據一天的時間有兩個不同的時間表。爲了澄清,#1是冷備份,#2是熱備份? – enchance

+0

@enchance是的。在錯誤地刪除整個表格或硬盤損壞的情況下,您可以使用#1的鏡像在當天早上恢復數據庫。然後使用binlog(在這種情況下,工具[mysqlbinlog](http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html)將會很有幫助。)恢復增量數據。 – tyger

0

至於在黑客的情況下備份數據庫,它似乎mysqldump是要走的路;你可以閱讀它here。然後,您可以將該mysql轉儲到另一臺服務器。就我個人而言,我有一個chron每天做這個備份,然後我將備份複製到另一臺帶有ftp同步的服務器上,但也有其他的自動化方法。如果你在一臺Linux服務器上,使用webmin可能會使這個過程變得更簡單,它有用於備份mysql數據庫的工具。希望這可以幫助。

0

如果您通過將數據庫鏡像到另一臺主機來備份數據庫,那麼每天說一次,如果它的數據損壞/丟失,並且在它鏡像之前沒有捕獲它,它仍然會丟失。正確的方法是定期保存轉儲。我每天都會對數據庫進行轉儲,每日備份4周,然後每週備份6個月。

如果您的數據庫和備份服務器彼此相鄰(網絡距離),這種方式效果最佳。但是,如果您的數據庫託管在其他地方並且不是太大,它應該仍然可以正常工作(許多主機會每天轉儲您的數據庫,但您可以自行取回數據庫)。

0

你可以設置一個MySQL主/從複製:

首先創建一個你要使用複製的數據庫用戶:replUser

在要進行以下設置主服務器:

[mysqld] 
log-bin=mysql-bin 
server-id=1 

在你的my.cnf你想以下設置從屬服務器

## Replication 
server-id      = 2 
relay-log-space-limit   = 16G 
expire-logs-days    = 7 
master-host = 10.10.10.10 
master-user = replUser 
master-password = yourpassword 
master-connect-retry=60 
replicate-do-db = database_name 

參考:http://dev.mysql.com/doc/refman/5.0/en/replication.html

1

mysqldump是一個方便的實用程序,可讓您將數據庫備份爲文本文件。

備份數據庫:

mysqldump -u username -p database_name > backup.sql 

我們從備份中恢復:

mysql -u username -p database_name < backup.sql 

這是最好創建一個腳本,這是否定期讓你總是有一個新鮮的恢復點。

您可以瞭解更多關於語法的mysqldump here