Mysql備份I
I備份在什么時候會被需要
硬件故障 機器無法啟動 機器突然消失了怎么辦 業務出現異常 一定要先select 在操作 類似drop或delete的操作 攻擊 程序bug 業務特殊需求 重要數據多處多次多版本備份 至少有2份遠程備份文件2處本地備份
II哪些東西需要備份
My.cnf innodb大小寫不一樣起不來 和數據放到一起備份(機器突然消失了怎么辦) Cron 也要備份 數據庫中的數據 Logfiles and position 配置文件 my.cnf和cron 要經常驗證備份的有效性
III什么時候開始備份
負載小的時候 業務少的時候
IV備份數據放到哪里
優先考慮本地 數據大的時候怎么備份 專用存儲 IPSAN NAS 大容量PCServer 分布式文件系統HDFS 磁帶或光盤等其他介質
V怎樣備份
V.I備份策略的確定
1數據恢復或還原的速度 2數據丟失的允許程度 3數據的大小與成本的平衡 制定備份計劃 備份周期 備份容量 恢復速度評估 對于小型等級業務量的系統來說,直接每天全量備份,定期刪除就可以了50G< >50G 主從 對于中等級別業務量的系統來說,備份策略可以這么定:第一次全量備份,每天一次增量備份,每周再做一次全量備份,如此一直重復。而對于重要的且繁忙的系統來說,則可能需要每天一次全量備份,每小時一次增量備份,甚至更頻繁。為了不影響線上業務,實現在線備份,并且能增量備份,最好的辦法就是采用主從復制機制(replication),在 slave 機器上做備份 出現操作系統崩潰或電源故障時,InnoDB自己可以完成所有數據恢復工作。應遵從下面的指導: · 一定用--log-bin或甚至--log-bin=log_name選項運行MySQL服務器,其中日志文件名位于某個安全媒介上,不同于數據目錄所在驅動器。如果你有這樣的安全媒介,最好進行硬盤負載均衡(這樣能夠提高性能)。 · 定期進行完全備份,使用mysqldump命令進行在線非塊備份。 · 用FLUSH LOGS或mysqladmin flush-logs清空日志進行定期增量備份。
V.II備份方式的選擇
熱備 不停業務的備份 Xtrabackup 雙機熱備份 雙機熱備份通過日志文件來傳輸入服務器上數據的變化。主服務器進程在數據被更新時觸發。并將相應的日志文件發送到從服務器。從服務器進程接收到主服務器發送的日志文件,做出相應的更改操作 主服務器的配置 編輯my.cnf文件,定義到mysqld,加入內容 Server-id=1 Log-bin=c:/log-bin.log Binlog-do-db=dbname 創建dbname數據庫 進入mysql操作,為從服務器授權訪問數據庫的用戶名和密碼 grant replication slave on *.* to ‘root’@從服務器IP identified by ‘密碼’ 重啟MySQL服務器,使更改生效 重新進入到MySQL的命令,執行命令檢測配置是否生效: Show master status\G 從服務器的配置 在從服務器中創建與主服務器中相同的數據庫 找到從服務器中的my.cnf文件,定位到[mysqld],加入以下內容: Server-id=2 Master-host=主服務器IP Master-port=3306(主服務器端口號) Master-user=root(主服務器用戶名) Master-password=密碼(主服務器密碼) Master-connect-retry=60(等待嘗試重新連接的秒數) 重新啟動MySQL服務器,使配置生效 進入到從服務器MySQL操作,執行啟動進程 Slave start 冷備 停掉業務或DB進行備份 停止的庫上做tar,copy,rsync等備份
V.III備份方式
V.III.I邏輯備份 logical backup 導出為.sql文件的備份
MySQLdump MySQLdumper
V.III.II物理備份 physical backup對文件進行備份
備份binlog, 基于slave的xtrabackup,tar,copy,mylvmbackup,Rsync
V.III.III本地備份 local backup
優先考慮本地 遠程備份網絡和恢復速度會有影響
V.III.IV遠程備份 remote backup
V.III.V全量備份 full backup
不依賴文件的存盤屬性來確定備份哪些文件。 任何現有的標記都被清除,每個文件都被標記為已備份,清除存盤屬性 備份速度慢,恢復時間長,使用空間大
V.III.VI增量備份 incremental backup
做完全量備份之后,開始做的binlog備份 備份上一次的完全備份后發生變化的所有文件 備份速度快,恢復時間長,使用空間小 如果要還原一個備份檔案,必須把所有增量備份的磁盤都找一遍,直到找到為止,要復原整個檔案系統,那就得先復原最近一次的完整備份,然后復原一個又一個的增量備份。
V.III.VII差異備份(differential backup)
是復制上次全備份以來所有變更數據的一種備份 恢復速度快,恢復需要的備份檔少 一個檔案只要自上次完整備份后,曾被更新過,那么接下來每次做差異備份時,這個檔案都會被備份直到下一次完整備份為止。 差異備份過程中,只備份有標記的那些選中的文件和文件夾 不將文件標記為已經備份備份后不標記為已備份文件,換言之,不清除存盤屬性 這表示差異備份中的檔案,都是自上次完全備份之后,曾被改變的檔案。如果要復原整個系統,只要先復原完全備份,再復原最后一次的差異備份即可。 號 mysqladmin flush-logs 1.運行mysql的時候加上 --log-update=/tmp/mysql.update.log 2.給差分文件創建編號 mysqladmin flush-logs 3.恢復按編號從小到大的順序 mysql -D mydatabase < /tmp/mysql.update.log.001
原創文章,作者:雙慶 李,如若轉載,請注明出處:http://www.www58058.com/18002