MariaDB知識點總結02--日誌+備份

一.日誌html

1.查詢日誌mysql

記錄每一條sql語句,建議不開啓,由於若是訪問量較大,會佔用至關大的資源,影響性能;
vim /etc/my.cnf.d/server.cnf 
general_log = ON| OFF#查詢日誌開關
general_log_file localhost.log #查詢日誌的文件名字/var/lib/mysql)
log_output TABLE | FILE | NONE #查詢日誌的存儲形式

2.慢查詢日誌(重要sql

執行時長超出指定時間的查詢操做(測試命令:select sleep(4);)
slow_query_log = OFF|ON  #開啓慢查詢日誌
slow_query_log_file = LOCALHOST-SLOW.log #慢查詢日誌的文件路徑
long_query_time  #慢查詢時長;默認是10s
log_slow_rate_limit#若是要記錄的慢查詢日誌很是多的話,會按照速率來記錄,默認1秒記錄一個 log_slow_verbosity
=full | query_plan #記錄的詳細級別

3.錯誤日誌數據庫

mysqld啓動和關閉過程當中輸出的事件信息
mysqld運行中產生的錯誤信息
event scheduler 運行一個event時產生的日誌信息
在主從複製架構中的從服務器上啓動從服務器線程時產生的信息
    
log_error = /var/log/mysql_error.log#指定錯誤日誌的輸出位置
log_warnings 爲0, 表示不記錄告警信息。
log_warnings 爲1, 表示告警信息寫入錯誤日誌。
log_warnings 大於1, 表示各種告警信息,例若有關網絡故障的信息和從新鏈接信息寫入錯誤日誌。(默認爲2)

4.二進制日誌(很是重要vim

針對時間點還原起着相當重要的做用
查看二進制日誌:
        SHOW {BINARY | MASTER} LOGS
        SHOW BINLOG EVENTS [IN 'log_name']
        show master status;
記錄致使數據改變或者可能致使數據改變的SQL語句
        log_bin = OFF | ON
        log_bin_basename = /var/lib/mysql/mysql-bin
    
    binlog_format=STATEMENT|ROW|MIXED:二進制記錄格式
        STATEMENT:基於「語句」記錄
        ROW:基於「行」記錄
        MIXED:讓系統自行斷定該基於哪一種方式進行
    sql_log_bin=1|0:是否啓用二進制日誌
    log_bin_index=PATH:二進制日誌索引位置
    sync_binlog=1|0:設定是否啓動二進制日誌同步功能
    max_binlog_size=SIZE:單個二進制文件最大致積,默認爲1G
    expire_logs_days=0#超過多少天就清除二進制日誌,默認爲0,表明不啓用此功能
二進制日誌滾動:
    1.flush logs;
    2.文件超出指定大小
    3.service mariadb restart
二進制日誌文件的構成:
    日誌文件:mysql-bin.xxxxx,二進制格式
    索引文件:mysql-bin.index,索引文件
    
二進制日誌格式:
    #190613 14:17:32 server id 1  end_log_pos 666 CRC32 0xeb1cde6b  Query   thread_id=9     exec_time=
     0       error_code=0
     use `testdb`/*!*/;
     事件發生的日期和時間:190613 14:17:32
     事件發生的服務器標識:server id 1
     事件的結束位置:end_log_pos 666
     事件的類型:Query
     事件發生時所在服務器執行此事件的線程ID:thread_id=9
     語句的時間戳與將其寫入二進制文件中的時間差:exec_time=0
     錯誤代碼:error_code=0
     事件內容:

5.中繼日誌服務器

複製架構中,備服務器用於保存主服務器的二進制日誌中讀取到的事件網絡

6.事務日誌(重要架構

innodb_buffer_pool_size                    通常設置成爲物理內存的3/4,或者4/5
innodb_log_files_in_group = 2              事務日誌文件的個數,默認爲2個事務日誌文件
innodb_log_file_size = 50331648(48m)      事務日誌文件的單個大小48m
innodb_log_group_home_dir = ./             事務日誌文件的所在路徑,默認就在mariadb的數據目錄/var/lib/mysql
事務型存儲引擎自行管理和使用(Innodb,myisam引擎是不支持事務,外鍵,行級鎖)
redo log : 重作日誌
undo log :撤銷日誌

二.備份和恢復app

1.爲何要備份?socket

(1).災難恢復:硬件故障,軟件故障,天然災害,黑客攻擊,誤操做
(2).測試
(3).注意的要點:
備份須要多少時間;   能容忍最多丟失多少數據;
恢復數據須要在多場時間內完成;   須要恢復哪些數據
①作還原測試,用於測試備份的可用性
②還原演練

2.備份類型

(1).徹底備份,部分備份

徹底備份:整個數據集
部分備份:只備份數據子集

(2).增量備份、差別備份

增量備份:僅備份最近一次徹底備份或增量備份(若是有增量備份)以來變化的數據
差別備份:僅備份最近一次徹底備份以來變化的數據;

(3).熱備、溫備、冷備

熱備:讀寫操做都可執行
溫備:讀操做能夠、寫不行
冷備:讀寫操做均不能執行

MyISAM:溫備,不能熱備;
Innodb:熱備

(4).物理備份、邏輯備份

物理備份:直接複製數據文件進行備份,與存儲引擎無關
邏輯備份:從數據庫中「導出」數據庫另存而進行備份

3.備份什麼?

數據
二進制日誌,innodb的事務日誌
代碼(存儲過程,存儲函數,觸發器,時間調度器)
服務器的配置文件

4.設計備份方案

數據集:徹底+增量
備份手段:物理,邏輯
對於備份較大的數據建議物理備份,對於較小的數據建議用邏輯備份;

5.備份工具的選擇

(1).mysqldump+複製binlog
mysqldump:徹底備份
複製binlog中指定時間範圍內的event:增量備份
(2).lvm2快照+複製binlog:
lvm2快照:適用cp或者tar等作物理備份:徹底備份
複製binlog中指定時間範圍內的event:增量備份
(3).xtrabackup|mariabackup:
由Percona提供的支持對InnoDB作熱備(物理備份)工具
徹底備份,增量工具

三.備份工具操做

1.基於二進制文件的恢復(邏輯備份

(1).基於位置恢復

mysqlbinlog /var/lib/mysql/mysqlbin.000001 --start-postion=1011 --stop-postion=1093 | mysql -uroot -proot

(2).基於時間點恢復

mysqlbinlog --start-datetime="2019-06-08 22:55:13" --stop-datetime="2019-06-08 22:55:13" binlog.0000011 > bin.sql

source bin.sql

2. mysqldump備份工具(邏輯備份

備份testdb數據庫(-l表明備份單個數據庫時鎖定該庫的全部表;-x當對全部數據庫備份時鎖定全部數據庫的全部表)
         mysqldump -uroot -proot -l --databases testdb > testdb.sql
#備份全部數據庫
         mysqldump -uroot -proot --all-databases > all_databases.sql
#備份testdb數據庫下的students表
         mysqldump -uroot -proot testdb students > students.sql
還原數據(sql命令行下)
         source testdb.sql

3.備份工具mariabackup(物理備份

(1).簡介
Mariabackup是MariaDB提供的一個開源工具,用於對InnoDB,Aria和MyISAM表進行物理在線備份。這個工具是基於Percona的XtraBackup(版本2.3.8)的解決方案。
這裏有一點須要注意,在MariaDB10.3.x及以上的版本用Percona XtraBackup工具會有問題。緣由多是MariaDB10.3以上版本的redo日誌格式和以前不一樣了。

Percona的官方文檔:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

Mariabackup的官方文檔:https://mariadb.com/kb/en/library/mariabackup-overview/
安裝方法
yum install MariaDB-backup

(2)全備+恢復

1.全量備份
  mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
2.準備全備數據
  mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root
3.還原數據(請確保數據目錄下是空的)
  mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root
4.修改屬組和屬主 chown -R mysql.mysql /var/lib/mysql

(3).全備+增量+恢復(若是要保證數據儘可能100%,再加上二進制文件的備份)

1.全量備份                    
mariabackup
--backup --target-dir=/root/fullbackup --user=root --password=root 2.增量備份 mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup/ --user=root --password=root 3.準備全備數據 mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root 4.增量和全備數據合併 mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only 5.恢復數據(請確保數據目錄下是空的) mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root 6.修改屬組和屬主 chown -R mysql.mysql /var/lib/mysql

4.基於lvm2的備份

(1)請求鎖定全部表
   flush tables with read lock;
(2)記錄二進制日誌文件及事件位置或時間點
   flush logs;
   mysql -uroot -proot -e 'show  master status;' > /path/to/somefile
(3)建立快照
   lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME
(4)釋放鎖
   unlock tables;
 (5)掛在快照卷,執行數據備份
 (6)備份完成後,刪除快照卷
 (7)指定好策略,經過原卷備份二進制日誌
 (8)還原的時候確保屬組和屬主是mysql:mysql
    若是是yum安裝默認數據目錄在/var/lib/mysql,若是須要更改
       [mysqld]
        datadir=/mysql_data/
        pid_file=/mysql_data/localhost.pid
        socket=/mysql_data/mysql.sock
        wsrep_data_home_dir=/mysql_data/
        log-bin=mysql-bin
       [client]
        socket=/mysql_data/mysql.sock  
相關文章
相關標籤/搜索