標籤:linux 資料庫 完全備份和二進位備份
mysql是一個關係型資料庫管理系統,由瑞典Mysql AB公司開發,目前屬於Oracle旗下的產品。Mysql是最流行的關係型資料庫之一,在web應用方面,Mysql是最好的RDBMS(Relational Database Management System,關係型資料庫管理系統)
應用軟體。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
由於其社區版的效能卓越,搭配PHP和Apache可組成良好的開發環境。
自我感覺資料庫的存亡代表了一個公司的命脈,資料庫GG(game over)了哪一個公司估計也差不多了。所以資料的備份才尤其的重要。目前資料庫的備份有三種;熱備,冷備,溫備。
按照方式劃分的三種備份方式:
1.熱備:在資料庫可讀可寫的情況下進行備份,沒有影響
2.冷備:在資料庫停止的情況下進行備份
3.溫備:在資料庫不可寫的情況下備份 #需要一個全域讀鎖來保持資料的一致性 。
備份形式又分為兩種:物理備份和邏輯備份。
物理備份:直接複製資料檔案
優點:無需額外的工具,直接拷貝恢複直接複製檔案即可
缺點:與儲存引擎有關,跨平台能力較弱
邏輯備份:從資料庫中匯出資料另存而進行的備份
優點:能使用編輯器處理,恢複簡單,能基於網路恢複,有助於避免資料損毀
缺點:備份檔案較大,備份較慢,無法保證浮點數的精度,使用邏輯備份資料回複後,還需要手動重建索引,十分消耗cpu資源。
資料的備份類型大致三種:1.完全備份#把整個資料庫都備份一份 2.增量備份#只備份增加的某些資料 3.差異備份
經常用的備份方式有三種:一般是由某兩種類型結合而成的。
1.mysqldump+binlog #完全備份加上增量備份
2.xtrabackup
3.lvm快照+增量備份
現在實現一個企業經常用備份方式,mysqldump+binlog!
實現這個備份需要吧二進位日誌功能開啟,在/etc/my.cnf檔案內配置。
指定檔案名稱(.log 尾碼會省略 在/var/lib/mysql/下有個bin.000001)
mysqldump是mariadb內建的命令binlog是二進位備份方式,這可形成一個完整的備份。究竟怎麼做呢,我們一起來看看
1.首先建立一個專門放記錄備份的目錄:#我會建立庫表代表資料!
2.進行完全備份:#相關mysqldump命令可以mysqldump --help來查看
#mysqldump --all-database所有的庫 --locak-all-tables鎖表(防止寫)
3.現在往資料庫中插入資料,表示增量!show master status;查看Position值(此值也可以用作主從複製)
插入資料後的數值
4.指定開啟二進位日誌時指定的檔案(每flush logs一次二進位日誌重重新記錄一個新的檔案)所以現在是bin.000010這個檔案,show master status;也會顯示當前所使用的檔案名稱。
#這時候差不多就完成了 !!!但是!!!一般情況,資料庫是在使用中突然中斷或服務關閉,當時你是不可能做備份的,所以上一次做備份的時間到資料庫掛掉的時間內這段資料是沒有備份的!現在插入資料在把資料庫刪掉,類比情況。
因為資料庫的內容都是在mysql/下以檔案或目錄形式存在的,直接把shuju這個資料庫刪掉,則shuju這個資料庫也不存在了。
5.這個時候最重要的是保護沒有備份的最後那些資料。(也就是上次增量備份完後來加的資料,二進位記錄檔還是存在的)
首先show master status;#查看這時候的position值,之後執行mysqlbinlog命令從上次的436到這次查看的值備份。查看值的我就不了。
6.這時候在找一台沒有資料的機器恢複所有的資料,也就完成了恢複資料。
沒恢複資料之前
第一次插入的資料,第二次增量的資料和第三次增量的資料都恢複了。
二進位日誌尤為重要,所以資料保護要看中二進位日誌。
MYSQL的mysqldump+binlog備份