數據庫優化與備份詳解

數據庫優化

查詢日誌:
  general_log = ON| OFF#查詢日誌開關
  general_log_file localhost.log #查詢日誌的文件名字
  log_output TABLE | FILE | NONE #查詢日誌的存儲形式
慢查詢日誌
  執行時長超出指定時間的查詢操做

  slow_query_log = OFF|ON #開啓慢查詢日誌
  slow_query_log_file = LOCALHOST-SLOW.log #慢查詢日誌的文件路徑
  long_query_time #慢查詢時長
  log_slow_rate_limit#若是要記錄的慢查詢日誌很是多的話,會按照速率來記錄,默認1秒記錄一個
  log_slow_verbosity=full | query_plan #記錄的詳細級別
錯誤日誌
  mysqld啓動和關閉過程當中輸出的事件信息
  mysqld運行中產生的錯誤信息
  event scheduler 運行一個event時產生的日誌信息
  在主從複製架構中的從服務器上啓動從服務器線程時產生的信息


  log_error = /var/log/mysql_error.log#指定錯誤日誌的輸出位置
  log_warnings 爲0, 表示不記錄告警信息。
  log_warnings 爲1, 表示告警信息寫入錯誤日誌。
  log_warnings 大於1, 表示各種告警信息,例若有關網絡故障的信息和從新鏈接信息寫入錯誤日誌。
二進制日誌

  查看二進制日誌:
    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,表明不啓用此功能
  二進制日誌手動滾動:
    flush logs;
  二進制日誌文件的構成:
    兩類文件:
      日誌文件: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
    事件內容:

    GTID:Global Transaction ID;
      專屬屬性:GTID
  mysqlbinlog:客戶端命令工具
    mysqlbinlog [options] log_file ...
    --start-datetime=
    --stop-datetime=


    --start-position=
    --stop-position=
mysql

中繼日誌:
  複製架構中,從服務器用於保存主服務器的二進制日誌中讀取到的事件sql

事務日誌:transaction log(ib_logfile0,ib_logfile1)
  innodb_log_files_in_group = 2 事務日誌文件的個數,默認爲2個事務日誌文件
  innodb_log_file_size = 50331648(48m)事務日誌文件的單個大小48m
  innodb_log_group_home_dir = ./ 事務日誌文件的所在路徑,默認就在mariadb的數據目錄/var/lib/mysql
  事務型存儲引擎自行管理和使用
    redo log : 重作日誌
    undo log :撤銷日誌





備份和恢復:
  爲何要備份?
    災難恢復:硬件故障,軟件故障,天然災害,黑客攻擊,誤操做
    測試
    要注意的要點:
      能容忍最多丟失多少數據
      恢復數據須要在多場時間內完成
      須要恢復哪些數據

      (1)作還原測試,用於測試備份的可用性
      (2)還原演練

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

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


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

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

  物理備份、邏輯備份
    物理備份:直接複製數據文件進行備份,與存儲引擎無關
    邏輯備份:從數據庫中「導出」數據庫另存而進行備份
  備份時須要考慮的因素:
    持續多久
    備份過程的時長
    備份負載
    恢復過程的時長
  備份什麼?
    數據
    二進制日誌,innodb的事務日誌
    代碼(存儲過程,存儲函數,觸發器,時間調度器)
    服務器的配置文件
  設計備份方案:
    數據集:徹底+增量
    備份手段:物理,邏輯


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

相關文章
相關標籤/搜索