目錄:為什麼需要備份
mysqldump備份資料庫
mysqldump關鍵引數
備份分類
各種恢復備份的處理情況
需要公升級資料庫或者是需要增加乙個從庫的時候
主庫或者從庫宕機,需要資料的備份
人為的ddl或者是dml的語句,導致主從庫的資料消失
跨機房的災備,需要備份資料到遠端程式
一般使用的是mysqldump來進行備份,每次dump的資料是1000條,並且在這個過程中會進行鎖表(這種方式是邏輯備份,即直接將資料庫中的資料導成sql語句進行備份的過程)
使用方法:
不帶引數的進行備份
備份test資料庫中的所有表資料和表結構, test為指定資料庫
mysqldump -uroot -ppassword test >/tmp/test.sql
備份test資料庫中的某個表資料和表結構
mysqldump -uroot -ppassword test student >/tmp/test_student.sql
使用-b引數進行備份:(在sql檔案中自動建立原有的資料庫名和連線資料庫)
備份test資料庫中的所有表資料和表結構
使用-b會自動的建立資料庫並且使用資料庫
mysqldump -uroot -ppassword -b test >/tmp/test.sql
使用-b引數進行多個資料庫的備份
mysqldump --user root --password=myrootpassword -b db_test db_second db_third > db_test.sql
使用gzip進行壓縮資料檔案進行備份:(使用管道符將資料傳給gzip然後進行壓縮資料成gz的包)
mysqldump --user root --password=myrootpassword -b db_test db_second db_third |gzip > db_test.sql.gz
使用shell進行分庫備份
mysql -uroot -ppasswd -e "show databases;" |grep -eiv "database|information|performance"|sed -r 's#^([a-za-z_0-9]*$)#mysql -uroot -ppasswd --events -b \1 |gzip> /opt/\1.sql.gz#g'|bash
為什麼要進行分庫
有時乙個企業的資料庫中會有多個庫,例如(bbs,www,blog),但是出問題的時候很可能往往是乙個庫,那如果我們將所有庫的資料儲存到乙個檔案中去,那麼將來恢復資料的時候,可能會帶來很大的麻煩,所以我們一般將庫進行分庫備份備份mysql資料庫的表結構(不包含資料)
引數 -d 的作用就是備份資料庫的表結構
mysqldump -uroot -ppassword -d test
備份mysql的資料庫中的資料(不包含表結構)
引數 -t 的作用就是備份資料庫的表資料(不包含表結構)
mysqldump -uroot -ppassword -t test
備份的時候切割binlog日誌:(進行增量備份的時候可以用到)
引數 -f 的作用就是備份資料庫的時候,將binlog日誌進行重新重新整理。
mysqldump -uroot -ppassword -t -b -f test
回到目錄
關鍵引數總結:
-b:表示的是指定多個庫,增加了建庫語句和use資料庫的語句。
–compact:去掉注釋,適合除錯輸出,不適合在生產環境使用。
-a: 表示的是本分所有的庫。
-f:重新整理binlog日誌,方便進行增量的恢復。
–master-data:增加binlog日誌檔名及其對應的位置點。
-x,–lock-all-tables :在備份的時候進行鎖表,保持資料的一致性。
-d:只備份表的結構。
–single-transaction 適合innodb資料庫的備份。
全量備份
備份全部選中的資料夾,並不依賴檔案的存檔屬性來確定備份那些檔案。(在備份過程中,任何現有的標記都被清除,每個檔案都被標記為已備份,換言之,清除存檔屬性)。
全量備份就是指對某乙個時間點上的所有資料或應用進行的乙個完全拷貝。實際應用中就是用一盤磁帶對整個系統進行全量備份,包括其中的系統和所有資料。這種備份方式最大的好處就是只要用一盤磁帶,就可以恢復丟失的資料。因此大大加快了系統或資料的恢復時間。然而它的不足之處在於,各個全備份磁帶中的備份資料存在大量的重複資訊;另外,由於每次需要備份的資料量相當大,因此備份所需時間較長。
增量備份
增量備份是針對於上一次備份(無論是哪種備份):備份上一次備份後(包含全量備份、差異備份、增量備份),所有發生變化的檔案。(增量備份過程中,只備份有標記的選中的檔案和資料夾,它清除標記,既:備份後標記檔案,換言之,清除存檔屬性)。
增量備份是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加和者被修改的檔案。這就意味著,第一次增量備份的物件是進行全備後所產生的增加和修改的檔案;第二次增量備份的物件是進行第一次增量備份後所產生的增加和修改的檔案,如此類推。這種備份方式最顯著的優點就是:沒有重複的備份資料,因此備份的資料量不大,備份所需的時間很短。但增量備份的資料恢復是比較麻煩的。您必須具有上一次全備份和所有增量備份磁帶(一旦丟失或損壞其中的一盤磁帶,就會造成恢復的失敗),並且它們必須沿著從全備份到依次增量備份的時間順序逐個反推恢復,因此這就極大地延長了恢復時間。
舉例來說:
如果系統在星期四的早晨發生故障,丟失大批資料,那麼現在就需要將系統恢復到星期三晚上的狀態。這時管理員需要首先找出星期一的那盤完全備份磁帶進行系統恢復,然後再找出星期二的磁帶來恢復星期二的資料,然後在找出星期三的磁帶來恢復星期三的資料。很明顯這比第一種策略要麻煩得多。另外這種備份可靠性也差。在這種備份下,各磁帶間的關係就象鍊子一樣,一環套一環,其中任何一盤磁帶出了問題都會導致整條鍊子脫節。
這種備份方式最顯著的優點就是:沒有重複的備份資料,因此備份的資料量不大,備份所需的時間很短。但增量備份的資料恢復是比較麻煩的。您必須具有上一次全備份和所有增量備份磁帶(一旦丟失或損壞其中的一盤磁帶,就會造成恢復的失敗),並且它們必須沿著從全量備份到依次增量備份的時間順序逐個反推恢復,因此這就極大地延長了恢復時間。
回到目錄
主或者從庫宕機(硬體損壞)是否需要增量恢復?
答:不需要增量恢復,主庫宕機,只需要把其中的乙個同步最快的從庫提公升為主庫即可。
主庫宕機,只要選擇更新最快的從庫,提公升為主庫即可
從庫宕機,直接不用就好了(一般都會陪lvs負載均衡),或者就正常修復即可
人為運算元據庫sql語句破壞主庫是否需要增量恢復?
答:在資料庫主庫內部命令列進行誤操作,會導致所有的資料庫(包括主從庫)的資料丟失,
例如:在主庫執行了drop database test這樣的刪除語句,這時候所有的從庫也會執行這個drop語句,
從而導致所有的資料庫上的資料庫的資料丟失,這樣的場景下面需要進行增量恢復的。
只有乙個主庫是否需要增量恢復呢?
答: 如果公司只有乙個主庫的情況下,首先應該做定時的全量備份(每天一次)以及增量備份
(每隔1-10分鐘對binlog日誌做切割然後被分到其他的伺服器上,或者本地其他硬碟中)或者寫到網路檔案系統中。
使用binlog進行增量備份
/data1/mysql/bin/mysqlbinlog -uroot -psina.com mysql-bin.000068 > bin.sql
我們也可以同時進行拆庫的分析,使用-d引數即可指定資料庫進行拆分
/data1/mysql/bin/mysqlbinlog -uroot -psina.com -d test mysql-bin.000068 > bin.sql
資料庫備份
匯出方案 匯出自己的方案exp scott tiger oracle owner scott file d scott.dmp 成功匯入方案 imp userid retest retest oracle file e rem.dmp full y 匯出表 兩百萬資料 exp userid scot...
資料庫備份
備份 使用 isql usa p ssybase 命令連線至資料庫,依次備份早教系統edu cfg和edu stat兩個使用者資料庫。前提條件是backup server服務要啟動 dump database edu cfg to home sybase edu cfg jiangsu 201405...
資料庫備份
sqlserver 作業 新建作業 1.常規中,填寫名字及說明 2.步驟中新建步驟,填寫步驟名稱,選擇型別 transact sql指令碼 t sql 填寫命令,內容如下 declare name varchar 250 set name d bakdb 備份檔案名稱 convert varchar...