什麼要用生產環境這個名詞呢,這樣更能引發咱們重視,不是簡單隨便的拿上你知道的 命令就幹活了。它有其特殊的環境,不是平時學習實驗那樣的只是爲了達到咱們的目的。在企業中運行Mysql是一個徹底生產環境,咱們必需要考慮不少相關因 素。最典型的特色,既然是生產環境,那麼就絕對不容許你去宕機,僅僅爲了你的備份活動嗎(想都不要想啦)。你要清楚備份只是爲了保障咱們的系統更加安全的 運行,減小災難帶來的損失,相對而言只是一個小角色,設想若是服務器壓根就沒有發生問題的可能,那麼備份也就沒有存在的必要了,正由於有意外,以後咱們才 會採起相應的措施。html
MySQL的備份主要分爲邏輯備份和物理備份。在備份之初咱們須要考慮哪些因素呢?
·首先肯定當前MySQL處在哪一種表類型下工做,它們支持事務處理仍是非事務的,由於咱們須要根據不一樣的特色作一些設置。
·其次要選擇備份形式是全備份仍是增量備份,各有其優缺點。
·爲了確保恢復的完整性咱們開啓binary log功能,同時binlog給咱們恢復也帶來了很大的靈活性,能夠基於時間點或是位置進行恢復。考慮到數據庫性能能夠將binlog文件保存到其餘安全的硬盤中。
·正如最初所提到的,備份操做是和應用服務同時運行,這樣就十分消耗系統資源,致使數據庫服務性能降低,這就要求咱們選擇一個合適的時間在應用負擔很小的時候,再來進行備份操做。
·最後要提的就是,備份完不是就沒事兒了,怎麼就知道備份是否可用的,因此以後的恢復測試徹底有必要。mysql
下面就來具體實踐一下。
一、邏輯備份和恢復
MySQL的邏輯備份就是將數據庫的結構連同數據用一個文本文件備份出來,咱們能夠對這個文件進行查看和編輯。邏輯備份對於全部的存儲引擎都是適用的,而 後面提到的物理備份則會根據不一樣數據庫的特色採起不一樣的備份方法。MySQL邏輯備份的主要工具就是你們熟悉的MySQL自帶的mysqladmin這個 工具。
#mysqldump -u root -p -all-database > all.sql 備份全部數據庫
#mysqldump -u root -p mysqlsytems > mysqlsystems.sql 備份指定數據庫
#mysqldump -u root -p mysqlsystems wp discuz > wp_discuz.sql 備份指定數據庫中的若干表
TIPs: MyISAM中爲了保持數據一致性須要在備份以前對進行備份的數據庫加讀鎖操做flush table with read lock;InnoDB則能夠在mysqladmin命令中加入–single-transaction選項,能夠生成一個快照以保證數據備份期間的一致 性。
以上介紹的是都是全備份,咱們都知道全備份是必要的,在應用之初咱們能夠採用全備份的方式,但隨着應用數據的增長,這種備份方式的效率就會變得很低,每次 會花掉大量的時間和系統資源。咱們有必要在全備份的同時結合增量備份。增量備份是經過備份binary log來實現的。當咱們開啓MySQL的二進制日誌功能以後,對數據庫進行的DML(select除外)、DDL操做都會紀錄到其中,MySQL Replication就是經過bin-log實現的。每當MySQL重啓,數據庫都會從新生成一個bin-log文件。好比5月9日凌晨2點開始備份, 同時咱們也將bin-log進行更新從新生成一個,那麼備份完成以後,咱們對數據庫進行的操做就會被重新紀錄到生成的這個新的二進制文件中,增量備份就是 要咱們保存從5月9日開始,到你進行下一次備份,這期間的操做都在這個bin-log文件裏面,咱們只需將它備份起來就能夠了。
恢復比較簡單。
#mysql -u root -p mysqlsystems < mysqlsystem.sql —恢復全備份的信息
#mysqlbinlog binlog-file | mysql -u root -p —恢復增量備份的部sql
二、物理備份和恢復
物理備份分爲冷備份和熱備份。物理備份其實就是物理文件的複製,從一個存放位置拷貝到另外一個位置。
冷備份通常不多使用,這個咱們都知道緣由,應用是堅定不容許停機的,即使時間很短,何況備份的時間和文件大小是成正比的,只會愈來愈多,不會減小的。
這裏主要介紹熱備份,根據存儲引擎不一樣將採用不一樣的備份工具。
·MyISAM
Option A : # mysqlhotcopy mysqlsystems /backup/db_mysqlsystems
Option B : 在SQL命令行下執行flush tables for read,將數據庫中全部表加讀鎖,以便保證數據的一致性;而後自經過cp命令將數據文件備份到指定目錄下;MyISAM是Mysql的缺省表類型。它基於IASM代碼,但有許多有用的擴展。
·InnoDB
對於InnoDB可使用percona公司的xtrabackup,或是Innobase本身的ibbackup (收費的)數據庫
※值得注意的是:
1、肯定要備份的表的存儲引擎是事務型仍是非事務性,兩種不一樣的存儲引擎備份方式在處理數據一致性方面是不太同樣的。
2、肯定使用全備份仍是增量備份。全備份的優勢是備份保持最新備份,恢復的時候能夠花費更少的時間;缺點是若是數據量大,將會花費不少的時間,並對系統造 成較長時間的壓力。增量備份則偏偏相反,只須要備份天天的增量日誌,備份時間少,對負載壓力也小;缺點就是恢復的時候須要全備份加上次備份到故障前的全部 日誌,恢復時間會長些。
3、能夠考慮採起復制的方法來作異地備份,可是記住,複製不能代替備份,它對數據庫的誤操做也無能爲力。
4、要按期作備份,備份的週期要充分考慮系統能夠承受的恢復時間。備份要在系統負載較小的時候進行。
5、確保MySQL打開log-bin選項,有了BINLOG,MySQL才能夠在必要的時候作完整恢復,或基於時間點的恢復,或基於位置的恢復。
6、要常常作備份恢復測試,確保備份是有效的,而且是能夠恢復的
7、這裏提一下Mysql服務器硬件方面的選擇,物理磁盤我推薦RAID0+1(磁盤性能是制約Mysql性能的最大因素之一),內存最好在4G以上;同時,Mysql服務器不要在運行其它服務,CPU我推薦使用S.M.P架構的多路對稱CPU。
安全
本文轉自:http://hi.baidu.com/yuhongchun027/blog/item/8b5fc2a8617516bbcb130c91.html服務器