天天看點

mysql筆記之備份恢複

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 https://www.percona.com/downloads/XtraBackup/Percona-    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​: 删資料:

rm -rf /application/mysql/data/*      

​step3​: 準備備份(使用redo前滾,使用undo復原,保證資料的一緻性)

[root@db01 full]# innobackupex --apply-log /backup/full/
     181122 12:33:50 completed OK!      

​step4​: 恢複資料

cd /backup/full
   cp -a * /application/mysql/data/
 或者:
 innobackupex --copy-back /backup/full/      
chown -R mysql. /application/mysql/data/*
    /etc/init.d/mysqld start      
增量備份實作
增量備份介紹:
基于上一次備份的增量備份,優點是節約磁盤空間和時間
局限性:依賴于全備和上一次備份
備份政策:每周日全備,周一到周六是增量