溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

菜鳥學Linux 第078篇筆記 mysql 備份mysqldump

發布時間:2020-07-30 11:15:04 來源:網絡 閱讀:334 作者:Winthcloud 欄目:數據庫

菜鳥學Linux 第078篇筆記 mysql 備份mysqldump




內容總覽

備份類型、備份類型詳解

備份工具

mysqldump實現備份還原






MySQL的備份和還原

備份:副本


RAID1,RAID10 保證硬件損壞而不會影響業務中止



備份類型

熱備份、溫備份、冷備份

熱備份:讀、寫不受影響

溫備份:僅可執行讀操作

冷備份:離線備份 讀、寫操作均中止


物理備份、邏輯備份

物理備份:直接復制數據文件

邏輯備份:將數據導出至文本文件中


完全備份、增量備份和差異備份

完全備份:備份全部數據

增量備份:僅備份上次完全備份或增量備份以后變化的數據

差異備份:僅備份上次完全備份以來變化的數據


增量和差異區別:增量是每次備份是比較與前一次的區別并進行備份

差異是與第一次完全備份作比較,并將有差異的備份

(差異相對浪費硬盤空間一些,易于管理)


備份可自由根據需求來組合

在線物理完全備份

在線邏輯增量備份...





熱備份(技術復雜度最高)

MyISAM lvm 熱備   溫備

InnoDB 支持熱備 xtrabackup, mysqldump

冷備 mysql --> 從



物理備份 速度快,移植性不是特別好

邏輯備份 速度慢,會丟失浮點數精度,

方便使用文本處理工具直接對其處理,可移植能力強




備份策略: 完全+增量;完全+差異

數據變量的頻度,和變化量

可以忍受的還原時長



備份的東東

數據、配置文件、二進制日志、事務日志


還原 測試,預演,多人分工,還原緊急處理方案



MySQL備份工具:

mysqldump  邏輯備份工具 冷備 MyISAM(溫) InnoDB(熱)

mysqlhostcopy  物理備份工具 溫備份


文件系統工具

cp 冷備

lv 邏輯卷的快照功能,幾乎熱備

mysql> FLUSH TABLES;

mysql> LOCK TABLES;


創建快照:釋放鎖,而后復制數據即可

InnoDB:


第三組工具:

ibbackup (InnoDB) 商業工具

xtrabackup 開源工具





mysqldump 邏輯備份

mysqldump (完全備份) + 二進制日志

完全+增量


mysqldump DB_NAME [tb1] [tb2] 


--master-data={0|1|2}

0 不記錄二進制日志文件及其事件位置

1 以CHANGE MASTER TO方式記錄位置,可用于恢復后直接啟動從服務器

2 以CHANGE MASTER TO的方式記錄位置,但默認被注釋


--lock-all-tables  鎖定所有表


--flush-logs  執行日志flush


如果指定庫中的表類型均為InnoDB,可使用--single-transaction啟動熱備

(不要和--lock-all-tables一起使用)


--events

--routines

--triggers


備份多個庫

--all-databases  備份所有庫

--databases DB_NAME1,DB_NAME2 備份指定庫

(使用此種備份,恢復時則不需要自己手動新建數據庫名)




實驗備份和還原


備份策略: 每周完全+每日增量

完全備份:mysqldump

增量備份:備份二進制日志文件(flush logs)



1.備份數據庫

完全備份(備份文件要放在其它硬盤這里做測試所以只是放在其它目錄里了)

# mysqldump -uroot -p --master-data=2 --flush-logs --all-databases \

--lock-all-tables > /root/all-dbs.sql 

(此為一行命令)

mysql> PURGE BINARY LOGS TO 'mysql-bin.000007'; (不建議刪除,只是為了做測試)

可以備份后再刪除掉


做增量備份(第二天)

mysql> FLUSH LOGS;

將滾動后的日志備份(直接復制即可) 前邊的目錄是二進制日志所放目錄

cp /mydata/data/mysql-bin.000007 /root/binary-`date +%Y-%m-%d`.sql

mysqlbinlog /mydata/data/mysql-bin.000007 > /root/monday-incremental.sql

(推薦此上條備份二進制日志文件)


第三天做增量和此一樣   模擬此天不小心把數據庫給刪除了

(但是造成不要把二進制日志刪除了哈,,這要沒了就掛了)

先將二進制文件復制出來

cp /mydata/data/mysql-bin.000008 > /root/mysql-bin.000008.sql

# rm -rf /mydata/data/* (模擬數據庫損壞)




還原數據庫

由于我模擬的太暴力直接把庫文件也給刪除了所以需要重新初始化數據庫

# killall mysqld

初始化數據庫

# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data


還原完全備份

# mysql -uroot -p < /root/all-dbs.sql


導入增量備份

# mysql -uroot -p < /root/monday-incremental.sql (使用的是mysqlbinlog)


最后一步把最后一次的二進制日志導入到數據庫

# mysqlbinlog mysql-bin.000008.sql | mysql -uroot -p

(到此步便為即時點還原)


mysqldump雖然可以實現備份還原,但是會丟失精度,只適合小型的數據庫



最后作業 

腳本完成完全備份

腳本完成增量備份

并添加至任務計劃讓其自動執行備份

(目前個人未做出來)










向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女