mysql筆記之備份恢復

2021-09-01 12:38:32 字數 4791 閱讀 4860

1.設計備份策略

2.日常備份

3.恢復演練

4.故障恢復

5.遷移

備份型別

熱備:在資料庫正常業務時,備份資料,並且能夠一致性恢復

冷備:關閉資料庫業務,資料庫沒有任何變更的情況下,進行備份資料

溫備:鎖表備份,只能查詢不能修改

備份方式

邏輯備份:

mysqldump ,

mysqlbinlog

物理備份:

基於磁碟檔案備份:

cp xtrabackup

備份策略

全備: 全庫備份

增量: 備份變化的資料

邏輯備份=mysqldump+mysqlbinlog

物理備份=xtrabackup

備份週期 :根據資料量設計備份週期

備份工具使用

1.mysqldump(用於邏輯備份的客戶端工具)

通用引數: -u -p -s -h -p

備份專用引數:

-a全備引數

mysqldump -uroot -p -a >/backup/full.sql
-b db1 db2 db3 備份多個單庫

備份單個或多個表

mysqldump -uroot -p word city country >/backup/111.sql

ps:以上備份恢復時,必須庫實現存在,並且use才能source恢復

特殊引數使用

-r 備份儲存過程及函式

–triggers 備份觸發器

mysqldump -uroot -p -a -r --triggers >/backup/full.sql

-f 在備份開始的時候,重新整理乙個binlog日誌

適合多引擎混合(例如:myisam與innodb混合)的備份命令如下:

mysqldump -uroot -p -a -r --triggers --master-data=2 --single-transaction |gzip>/backup/all_$(date +%f-%t).sql.gz
mysqldump 備份策略
1.比較適合小於100g以下資料量

2.mysqldump原生態不支援增量

3.要實現增量可以配合binlog實現增量

4.如果對於大資料量的資料庫備份,可以從架構上拆分,分別備份

優點:
1.可讀性強

2.文字形式備份,壓縮比比較高

物理備份工具:
xbk(percona xtrabackup)

meb(mysql enterprise backup)

xbk 安裝
[root@db01 tools]# yum -y install perl perl-devel libaio libaio-devel perl-time-hires perl-dbd-mysql

[root@db01 tools]# wget xtrabackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

[root@db01 tools]# yum -y install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

備份實現原理
1.非innodb引擎:鎖定表,直接拷貝表的資料檔案

2.innodb引擎(過程):

在備份開始的時刻(10:00開始,備份結束10:02),立即觸發checkpoint動作,將記憶體資料頁刷寫到磁碟

拷貝此時所有的資料檔案(lsn=1000)及日誌檔案,在此過程中產生的日誌檔案(from_lsn=1000 redo last_lsn=1020和undo)也進行備份

資料頁+日誌

熱備:備份某時間點的資料,將備份過程中產生的變化也備份出來

備份命令簡單使用及備份內容介紹

[root@db01 tools]# innobackupex --user=root --password=123 /backup

[root@db01 2018-11-22_12-10-44]# ll /backup/2018-11-22_12-10-44/

總用量 77852

-rw-r-----. 1 root root 418 11月 22 12:10 backup-my.cnf

-rw-r-----. 1 root root 79691776 11月 22 12:10 ibdata1

drwxr-x—. 2 root root 4096 11月 22 12:10 mysql

drwxr-x—. 2 root root 48 11月 22 12:10 oldboy

drwxr-x—. 2 root root 4096 11月 22 12:10 performance_schema

drwxr-x—. 2 root root 20 11月 22 12:10 school

drwxr-x—. 2 root root 48 11月 22 12:10 taobao

drwxr-x—. 2 root root 50 11月 22 12:10 test

drwxr-x—. 2 root root 48 11月 22 12:10 testdb

drwxr-x—. 2 root root 172 11月 22 12:10 world

-rw-r-----. 1 root root 22 11月 22 12:10 xtrabackup_binlog_info

-rw-r-----. 1 root root 117 11月 22 12:10 xtrabackup_checkpoints

-rw-r-----. 1 root root 466 11月 22 12:10 xtrabackup_info

-rw-r-----. 1 root root 2560 11月 22 12:10 xtrabackup_logfile

xtrabackup_binlog_info

[root@db01 2018-11-22_12-10-44]# cat xtrabackup_binlog_info 

mysql-bin.000003 1319

xtrabackup_checkpoints
[root@db01 2018-11-22_12-10-44]# cat xtrabackup_checkpoints 

backup_type = full-backuped

from_lsn = 0

to_lsn = 139212885

last_lsn = 139212885

compact = 0

recover_binlog_info = 0

xtrabackup_info
[root@db01 2018-11-22_12-10-44]# cat xtrabackup_info 

uuid = 9abb463a-ee0c-11e8-81a8-000c297a9d3c

name =

tool_name = innobackupex

tool_command = --user=root --password=... /backup

tool_version = 2.4.4

ibbackup_version = 2.4.4

server_version = 5.6.38-log

start_time = 2018-11-22 12:10:45

end_time = 2018-11-22 12:10:53

lock_time = 0

binlog_pos = filename 'mysql-bin.000003', position '1319'

innodb_from_lsn = 0

innodb_to_lsn = 139212885

partial = n

incremental = n

format = file

compact = n

compressed = n

encrypted = n

xtrabackup_logfile(備份期間產生的)

全備實現:

[root@db01 full]# innobackupex --user=root --password=123 --no-timestamp /backup/full

--no-timestamp 不以時間戳生成備份目錄名,指定目錄full

恢復全備:

ps:恢復的路徑必須是空的,mysql不需要啟動

step1:

停止資料庫 pkill mysqld
step2: 刪資料:

step3: 準備備份(使用redo前滾,使用undo回滾,保證資料的一致性)

181122 12:33:50 completed ok!

step4: 恢復資料

cd /backup/full

或者:innobackupex --copy-back /backup/full/

step5: 起資料庫

/etc/init.d/mysqld start

增量備份實現

增量備份介紹:

基於上一次備份的增量備份,優點是節約磁碟空間和時間

備份策略:每週日全備,周一到週六是增量

mysql備份恢復 mysql之備份與恢復

工作中,我們經常會遇到資料庫的備份與恢復場景 目錄1 mysql的備份與恢復 2 mysql的匯入與匯出 1 mysql的備份與恢復 mysql的備份命令是mysqldump,mysql之備份 mysqldump u user h host port p db table.file u 後面接資料庫...

MySQL之備份恢復

語法mysqldump u使用者名稱 p密碼 h主機名 p埠 a 檔名.sql mysqldump的引數 u,user name 指定連線的使用者名稱 p,password name 指定使用者的密碼,這裡可以指定引數名,s,socket name 指定socket檔案連線 用於本地連線 h,hos...

Mysql 之 完全備份 增量備份 備份恢復

一 資料備份的重要性 在生產環境中,資料的安全性是至關重要的,任何資料的丟失都可能產生嚴重的後果造成資料丟失的原因 程式錯誤人為錯誤計算機失敗磁碟失敗災難 如火災 和偷竊 二 資料庫備份的分類 2.1 從物理與邏輯的角度 備份可分為 物理備份 對資料庫作業系統的物理檔案 如資料檔案 日誌檔案等 的備...