iT邦幫忙

2021 iThome 鐵人賽

DAY 6
1
Software Development

MYSQL-相關實務操作學習紀錄系列 第 6

Day.6 留個紀錄好辦事 - Mysql Log (日誌紀錄)-下

  • 分享至 

  • xImage
  •  

上一篇介紹的日誌紀錄主要用來找錯誤與優化改善問題方面,而今天的日誌內容會跟MYSQL數據恢復&同步機制有關。

1.二進制日誌- binlog

  • 相關配置: my.cnf設定檔(/etc/mysql/my.cnf)
[mysqld]

#服務ID,啟用二進制日誌必須指定 (*** 沒指定會無法啟動服務!)
server-id = 1

#binlog(ON)&設定檔名以mysql-bin開頭
log-bin = mysql-bin
#binlog的格式(模式:row/statement/mixed)
binlog-format = row
#保留x天binlog (default:0,表示不自動刪除)
expire_logs_days = 1
#寫緩衝x次,刷一次磁碟(0:預設系統每隔一段時間重整快取資料到磁碟,1:每次事務提交就會寫入磁碟,N:每N個事務提交...)
sync-binlog = 1
#檔案大小達到設定值後會以指定名稱&自增數新建切換紀錄檔EX: mysql-bin.00000x
#max_binlog_size = 1G
  • 由於二進制檔用一般 vim/cat 的方式開起來會像亂碼無法檢視內容,所以要使用mysqlbinlog 開啟。
 #看詳細參數使用
 root@mysql-master:/mnt/mysql_data/mysql# mysqlbinlog
 #檢視mysql-bin.000001檔案內容
 root@mysql-master:/mnt/mysql_data/mysql# mysqlbinlog -v mysql-bin.000001 
 
 #正式環境上由於資料是一直寫入的狀態binlog量很多直接打開會有畫面跑不完的狀況... 所以通常會加入指定時間去開啟或過濾binlog內容!!
 EX:  mysqlbinlog -v --database="user" --start-datetime="2020-08-10 07:10:00" --stop-datetime="2020-08-10 07:30:00"  mysql-bin.000003
  • 內容: 以事件的形式紀錄(DDL和DML)語句有修改到資料庫內容or結構的二進制檔紀錄檔。(所以像SELECT只是單純查詢沒做到異動就不會紀錄到!!

    • DML (Data Manipulation Language):
      操作表資料內容。 語法: INSERT / UPDATE / DELETE
    • DDL (Data Definition Language):
      定義資料庫相關物件,像建立更改(table,index,procedure...)。語法: CREATE / ALTER / DROP

    開啟binlog後,可以看到MYSQL目錄下多了2個檔案分別為:

    1. mysql-bin.000001 : 記錄DDL和DML語句內容。

      • 紀錄模式 EX:在資料表member中一次插入多筆資料 (看圖比較就會了解差異!!)

        • statement - 只會記錄修改的SQL語句,不會記錄每一行的變化。
          https://ithelp.ithome.com.tw/upload/images/20210804/20130880jry4oZ0WLq.png

        • row - 紀錄每一句SQL具體被修改的詳細資訊。
          https://ithelp.ithome.com.tw/upload/images/20210804/20130880vztiHTDjoQ.png

        • mixed -綜合以上2種,根據執行的sql語句,選擇合適的日誌格式紀錄。
          << 普通的SQL使用statement模式儲存,遇到會影響資料準確性的操作(ex.復雜語句or函數操作)則使用row模式儲存 >>

    2. mysql-bin.index : 記錄所有binlog檔案清單。

  • 主要用途:

    1.資料恢復:當資料庫資料發生變更錯誤狀況時,通過binlog日誌紀錄將數據還原到某個狀態。

    << 必備機制~ 平時固定備份資料庫數據的重要性 >>/images/emoticon/emoticon34.gif

    2.主從複製:當有資料更新後,主寫庫(Master)透過binlog記錄傳遞給從庫(Slave)進行更新,達到主從(Master-Slave)資料庫資料的同步一致。


了解binlog的用途該如何使用,下一篇帶大家實作使用 binlog & 恢復流程 /images/emoticon/emoticon41.gif


上一篇
Day.5 留個紀錄好辦事 - Mysql Log (日誌紀錄)-上
下一篇
Day.7 保有日常備份重要性 - binlog 解析 &備份資料 (mysqldump / binlog)
系列文
MYSQL-相關實務操作學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言