MySQL binlog日期解析

wolfreturn發表於2016-01-12
由於業務環境中MySQL 二進位制日誌複製是基於行的,昨天開發跑過來讓查詢有沒有人對庫進行過插入操作
用mysqlbinlog 工具查詢出來的日誌全是base-64編碼的資訊。
這是因為從MySQL 5.1開始,binlog支援row-based的格式,預設情況下只能看到一些經過base-64編碼的資訊

點選(此處)摺疊或開啟

  1. #151224 23:29:48 server id 1 end_log_pos 13376153 CRC32 0x974f9a2e Query thread_id=164727 exec_time=0 error_code=0
  2. SET TIMESTAMP=1450970988/*!*/;
  3. BEGIN
  4. /*!*/;
  5. # at 13376153
  6. #151224 23:29:48 server id 1 end_log_pos 13376236 CRC32 0x08e3e7fe Table_map: `guoqing`.`test` mapped to number 255
  7. # at 13376236
  8. #151224 23:29:48 server id 1 end_log_pos 13376532 CRC32 0xbb7ed638 Update_rows: table id 255 flags: STMT_END_F

  9. BINLOG '
  10. bA98VhMBAAAAUwAAAOwazAAAAP8AAAAAAAEAB25pcnZhbmEACHRlcm1pbmFsAAwIDw8PDwgREREQ
  11. Dw8RwADAAP0C/QIAAAABAJYAlgDcD/7n4wg=
  12. bA98Vh8BAAAAKAEAABQczAAAAP8AAAAAAAEAAgAM/////wDw5RUAAAAAAAAkRDVFRUJCNDYtRDI5
  13. RC00QTVCLTk5QUYtMkEzRTIwRjE0RkU2IDAxMjlhYWUzYzJkYzQyYTBiODlmMTVjMDk2NmY0Mzdl
  14. BwBDQVNISUVSAgBCWOSwAQAAAAAAVnwPKVZv1ydWfA8oAAANQ29mZmVlLzIuMC4xIADw5RUAAAAA
  15. AAAkRDVFRUJCNDYtRDI5RC00QTVCLTk5QUYtMkEzRTIwRjE0RkU2IDAxMjlhYWUzYzJkYzQyYTBi
  16. ODlmMTVjMDk2NmY0MzdlBwBDQVNISUVSAgBCWOSwAQAAAAAAVnwPbVZv1ydWfA9sAAANQ29mZmVl
  17. LzIuMC4xIDjWfrs=
  18. '/*!*/;
  19. # at 13376532
  20. #151224 23:29:48 server id 1 end_log_pos 13376563 CRC32 0xa58e318d Xid = 486691
  21. COMMIT/*!*/;
  22. # at 13376563
  23. #151224 23:30:00 server id 1 end_log_pos 13376647 CRC32 0xd718f5ce Query thread_id=123940 exec_time=0 error_code=0


這 裡只能看到`guoqing`.`test`表做了改動,但具體改了什麼,就不知道了,那麼怎樣才能看到到底改了什麼呢?
從MySQL 5.1.28開始,mysqlbinlog多了個引數--verbose(或-v),將改動生成帶註釋的語句
如果使用兩次這個引數(如-v -v),會生成欄位的型別、長度、是否為null等屬性資訊。如下:
引數:0112inin0000 -v -v

點選(此處)摺疊或開啟

  1. BINLOG '
  2. bA98VhMBAAAAUwAAAOwazAAAAP8AAAAAAAEAB25pcnZhbmEACHRlcm1pbmFsAAwIDw8PDwgREREQ
  3. Dw8RwADAAP0C/QIAAAABAJYAlgDcD/7n4wg=
  4. bA98Vh8BAAAAKAEAABQczAAAAP8AAAAAAAEAAgAM/////wDw5RUAAAAAAAAkRDVFRUJCNDYtRDI5
  5. RC00QTVCLTk5QUYtMkEzRTIwRjE0RkU2IDAxMjlhYWUzYzJkYzQyYTBiODlmMTVjMDk2NmY0Mzdl
  6. BwBDQVNISUVSAgBCWOSwAQAAAAAAVnwPKVZv1ydWfA8oAAANQ29mZmVlLzIuMC4xIADw5RUAAAAA
  7. AAAkRDVFRUJCNDYtRDI5RC00QTVCLTk5QUYtMkEzRTIwRjE0RkU2IDAxMjlhYWUzYzJkYzQyYTBi
  8. ODlmMTVjMDk2NmY0MzdlBwBDQVNISUVSAgBCWOSwAQAAAAAAVnwPbVZv1ydWfA9sAAANQ29mZmVl
  9. LzIuMC4xIDjWfrs=
  10. '/*!*/;
  11. ### UPDATE `guoqing`.`test`
  12. ### WHERE
  13. ### @1=537 /* LONGINT meta=0 nullable=0 is_null=0 */
  14. ### @2=10.00 /* DECIMAL(10,2) meta=2562 nullable=1 is_null=0 */
  15. ### @3=1000 /* LONGINT meta=0 nullable=1 is_null=0 */
  16. ### @4=0 /* LONGINT meta=0 nullable=1 is_null=0 */
  17. ### @5=1000609 /* LONGINT meta=0 nullable=1 is_null=0 */
  18. ### @6='SHOP' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  19. ### @7=1450950696 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
  20. ### SET
  21. ### @1=537 /* LONGINT meta=0 nullable=0 is_null=0 */
  22. ### @2=10.00 /* DECIMAL(10,2) meta=2562 nullable=1 is_null=0 */
  23. ### @3=999 /* LONGINT meta=0 nullable=1 is_null=0 */
  24. ### @4=0 /* LONGINT meta=0 nullable=1 is_null=0 */
  25. ### @5=1000609 /* LONGINT meta=0 nullable=1 is_null=0 */
  26. ### @6='SHOP' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  27. ### @7=1450950696 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */


想去掉base64編碼,需加引數
--base64-output=DECODE-ROWS

點選(此處)摺疊或開啟

  1. mysqlbinlog -v -v --base64-output=DECODE-ROWS mysql-bin.000002 |grep -B 70 -A 70 'guoqing' > /home/dba/guoqing.log
  2.  ### UPDATE `guoqing`.`test`
  3. ### WHERE
  4. ### @1=537 /* LONGINT meta=0 nullable=0 is_null=0 */
  5. ### @2=10.00 /* DECIMAL(10,2) meta=2562 nullable=1 is_null=0 */
  6. ### @3=1000 /* LONGINT meta=0 nullable=1 is_null=0 */
  7. ### @4=0 /* LONGINT meta=0 nullable=1 is_null=0 */
  8. ### @5=1000609 /* LONGINT meta=0 nullable=1 is_null=0 */
  9. ### @6='SHOP' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  10. ### @7=1450950696 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
  11. ### SET
  12. ### @1=537 /* LONGINT meta=0 nullable=0 is_null=0 */
  13. ### @2=10.00 /* DECIMAL(10,2) meta=2562 nullable=1 is_null=0 */
  14. ### @3=999 /* LONGINT meta=0 nullable=1 is_null=0 */
  15. ### @4=0 /* LONGINT meta=0 nullable=1 is_null=0 */
  16. ### @5=1000609 /* LONGINT meta=0 nullable=1 is_null=0 */
  17. ### @6='SHOP' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  18. ### @7=1450950696 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
一般不需要加兩個-v,可讀性不強

點選(此處)摺疊或開啟

  1. mysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000002 |grep -B 70 -A 70 'guoqing' > /home/dba/guoqing.log
  2. #151224 17:51:43 server id 1 end_log_pos 12053052 CRC32 0x2d03726a     Update_rows: table id 296 flags: STMT_END_F
  3. ### UPDATE `guoqing`.`test`
  4. ### WHERE
  5. ### @1=537
  6. ### @2=10.00
  7. ### @3=1000
  8. ### @4=0
  9. ### @5=1000609
  10. ### @6='SHOP'
  11. ### @7=1450950696
  12. ### SET
  13. ### @1=537
  14. ### @2=10.00
  15. ### @3=999
  16. ### @4=0
  17. ### @5=1000609
  18. ### @6='SHOP'
  19. ### @7=1450950696



   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24742969/viewspace-1975161/,如需轉載,請註明出處,否則將追究法律責任。

相關文章