MySQL/MariaDB数据库的各种日志管理

                          作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.事务日志 (transaction log)

1>.Innodb事务日志相关配置

  1. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE '%innodb_log%';
  2. +-------------------------------+------------+
  3. | Variable_name | Value |
  4. +-------------------------------+------------+
  5. | innodb_log_arch_dir | |
  6. | innodb_log_arch_expire_sec | 0 |
  7. | innodb_log_archive | OFF |
  8. | innodb_log_block_size | 0 |      #数据块大小
  9. | innodb_log_buffer_size | 16777216 |
  10. | innodb_log_checksum_algorithm | DEPRECATED |
  11. | innodb_log_checksums | ON |
  12. | innodb_log_compressed_pages | ON |
  13. | innodb_log_file_size | 50331648 |      #每个日志文件总大小,MariaDB 10.2.x默认50M,生产环境可以适当调大。
  14. | innodb_log_files_in_group | 2 |      #日志组成员个数
  15. | innodb_log_group_home_dir | ./ |      #事务文件路径,是数据目录的相对路径
  16. | innodb_log_optimize_ddl | ON |
  17. | innodb_log_write_ahead_size | 8192 |
  18. +-------------------------------+------------+
  19. 13 rows in set (0.00 sec)
  20.  
  21. MariaDB [yinzhengjie]>

2>.事务型存储引擎自行管理和使用(建议和数据文件分开存放)

  1. [root@node105.yinzhengjie.org.cn ~]# install -d /data/logs -o mysql -g mysql    #创建目录并指定属主和属组
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# ll /data/logs/ -d
  4. drwxr-xr-x mysql mysql Nov : /data/logs/
  5. [root@node105.yinzhengjie.org.cn ~]#
  6. [root@node105.yinzhengjie.org.cn ~]# ll /data/logs/ -a
  7. total
  8. drwxr-xr-x mysql mysql Nov : .
  9. drwxr-xr-x root root Nov : ..
  10. [root@node105.yinzhengjie.org.cn ~]#
  11. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# install -d /data/logs -o mysql -g mysql    #创建目录并指定属主和属组

  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql//etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]#
  4. [root@node105.yinzhengjie.org.cn ~]# cat /mysql//etc/my.cnf
  5. [mysqld]
  6. innodb_log_group_home_dir = /data/logs    #指定事物日志存放路径为"/data/logs"
  7. innodb_log_file_size = 10M   #指定每个日志文件大小为10M
  8. innodb_log_files_in_group =   #指定日志组成员个数为3个
  9. character-set-server = utf8mb4
  10. default_storage_engine = InnoDB
  11. autocommit     =
  12. skip_name_resolve   =
  13. userstat      = ON
  14. port      =
  15. datadir    = /mysql//data
  16. socket    = /mysql//socket/mysql.sock
  17.  
  18. [mysqld_safe]
  19. log-error = /mysql//log/mariadb.log
  20. pid-file = /mysql//pid/mariadb.pid
  21.  
  22. [root@node105.yinzhengjie.org.cn ~]#
  23. [root@node105.yinzhengjie.org.cn ~]# /mysql//mysqld restart
  24. Restarting MySQL...
  25. Stoping MySQL...
  26. Starting MySQL...
  27. [root@node105.yinzhengjie.org.cn ~]# ss -ntl
  28. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  29. LISTEN *: *:*
  30. LISTEN ::: :::*
  31. LISTEN ::: :::*
  32. [root@node105.yinzhengjie.org.cn ~]#
  33. [root@node105.yinzhengjie.org.cn ~]# mysql -uroot -pyinzhengjie -S /mysql//socket/mysql.sock
  34. Welcome to the MariaDB monitor. Commands end with ; or \g.
  35. Your MariaDB connection id is
  36. Server version: 10.2.-MariaDB MariaDB Server
  37.  
  38. Copyright (c) , , Oracle, MariaDB Corporation Ab and others.
  39.  
  40. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  41.  
  42. MariaDB [(none)]>
  43. MariaDB [(none)]> SHOW VARIABLES LIKE '%innodb_log%';
  44. +-------------------------------+------------+
  45. | Variable_name | Value |
  46. +-------------------------------+------------+
  47. | innodb_log_arch_dir | |
  48. | innodb_log_arch_expire_sec | |
  49. | innodb_log_archive | OFF |
  50. | innodb_log_block_size | |
  51. | innodb_log_buffer_size | |
  52. | innodb_log_checksum_algorithm | DEPRECATED |
  53. | innodb_log_checksums | ON |
  54. | innodb_log_compressed_pages | ON |
  55. | innodb_log_file_size | |
  56. | innodb_log_files_in_group | |
  57. | innodb_log_group_home_dir | /data/logs |
  58. | innodb_log_optimize_ddl | ON |
  59. | innodb_log_write_ahead_size | |
  60. +-------------------------------+------------+
  61. rows in set (0.00 sec)
  62.  
  63. MariaDB [(none)]>

[root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/etc/my.cnf      #修改默认事务日志相关参数

  1. [root@node105.yinzhengjie.org.cn ~]# ll /data/logs/        #重启MySQL实例后,事务日志被单独存放啦,很显然配置生效啦~
  2. total
  3. -rw-rw---- mysql mysql Nov : ib_logfile0
  4. -rw-rw---- mysql mysql Nov : ib_logfile1
  5. -rw-rw---- mysql mysql Nov : ib_logfile2
  6. [root@node105.yinzhengjie.org.cn ~]#

3>.刷新日志设置(innodb_flush_log_at_trx_commit)

  1. innodb_flush_log_at_trx_commit
  2.   说明:
  3.     设置为1,同时sync_binlog = 1表示最高级别的容错 innodb_use_global_flush_log_at_trx_commit的值确定是否可以使用SET语句重置此变量
  4.     设置为1默认情况下,日志缓冲区将写入日志文件,并在每次事务后执行刷新到磁盘。 这是完全遵守ACID特性
  5.     设置为0提交时没有任何操作; 而是每秒执行一次日志缓冲区写入和刷新。 这样可以提供更好的性能,但服务器崩溃可以清除最后一秒的事务
  6.     设置为2每次提交后都会写入日志缓冲区,但每秒都会进行一次刷新。 性能比0略好一些,但操作系统或停电可能导致最后一秒的交易丢失  
  7.     设置为3模拟MariaDB .5组提交(每组提交3个同步),此项MariaDB .0支持
  1. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE '%innodb_flush_log_at_trx_commit%';    #默认设置为1
  2. +--------------------------------+-------+
  3. | Variable_name | Value |
  4. +--------------------------------+-------+
  5. | innodb_flush_log_at_trx_commit | |
  6. +--------------------------------+-------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW VARIABLES LIKE '%innodb_flush_log_at_trx_commit%';    #默认设置为1

 

二.错误日志 (error log)

1>.错误日志记录内容

  1.   1.mysqld启动和关闭过程中输出的事件信息;
  2.   2.mysqld运行中产生的错误信息;
  3.   3.event scheduler运行一个event时产生的日志信息;
  4.   4.在主从复制架构中的从服务器上启动从服务器线程时产生的信息;

2>.错误日志相关配置

  1. 错误文件路径
  2.   log_error=/PATH/TO/LOG_ERROR_FILE
  3. 是否记录警告信息至错误日志文件
  4.   log_warnings 0 表示不记录告警信息。
  5.   log_warnings 1 表示告警信息写入错误日志。
  6.   log_warnings 大于1 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志(MariaDB 10.2.x版本默认为2)。
  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql//etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# cat /mysql//etc/my.cnf #指定错误日志存放路径,在启动MySQL实例后"log_error"的路径不可被修改,因为它是只读的。
  4. [mysqld]
  5. innodb_log_group_home_dir = /data/logs
  6. innodb_log_file_size = 10M
  7. innodb_log_files_in_group =
  8. log_warnings =
  9. character-set-server = utf8mb4
  10. default_storage_engine = InnoDB
  11. autocommit =
  12. skip_name_resolve =
  13. userstat = ON
  14. port =
  15. datadir = /mysql//data
  16. socket = /mysql//socket/mysql.sock
  17.  
  18. [mysqld_safe]
  19. log-error = /mysql//log/mariadb.log
  20. pid-file = /mysql//pid/mariadb.pid
  21. [root@node105.yinzhengjie.org.cn ~]#
  22. [root@node105.yinzhengjie.org.cn ~]# /mysql//mysqld restart
  23. Restarting MySQL...
  24. Stoping MySQL...
  25. Starting MySQL...
  26. [root@node105.yinzhengjie.org.cn ~]#
  27. [root@node105.yinzhengjie.org.cn ~]# mysql -uroot -pyinzhengjie -S /mysql//socket/mysql.sock
  28. Welcome to the MariaDB monitor. Commands end with ; or \g.
  29. Your MariaDB connection id is
  30. Server version: 10.2.-MariaDB MariaDB Server
  31.  
  32. Copyright (c) , , Oracle, MariaDB Corporation Ab and others.
  33.  
  34. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  35.  
  36. MariaDB [(none)]>
  37. MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'log_error';
  38. +---------------+-----------------------------+
  39. | Variable_name | Value |
  40. +---------------+-----------------------------+
  41. | log_error | /mysql//log/mariadb.log |
  42. +---------------+-----------------------------+
  43. row in set (0.00 sec)
  44.  
  45. MariaDB [(none)]>
  46. MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'log_warnings';
  47. +---------------+-------+
  48. | Variable_name | Value |
  49. +---------------+-------+
  50. | log_warnings | |
  51. +---------------+-------+
  52. row in set (0.00 sec)
  53.  
  54. MariaDB [(none)]>

[root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/etc/my.cnf         #指定错误日志存放路径,在启动MySQL实例后"log_error"的路径不可被修改,因为它是只读的。

三.通用日志(general log)

1>.通用日志记录内容

  1.   记录对数据库的通用操作,包括错误的SQL语句
  2.   存储类型支持三种,即FILE/TABLE/NONE  
        文件:file,默认值
        表:table
      用途:
        一般不建议开启,除非数据库需要优化,通过该日志分析数据库可能存在的问题,若数据库优化完毕依然建议关闭它,开启该功能存在IO操作,会影响服务器性能。

2>.通用日志相关设置

  1. general_log=ON|OFF
      指定通用日志是否开启。
  2. general_log_file=HOSTNAME.log
      指定通用日志存放文件格式的名称,默认文件名是:"主机名.log",存储在MySQL数据库同目录中。
  3. log_output=TABLE|FILE|NONE
      指定输出类型,默认为FILE,当然也可以指定为TABLE,表示将日志存放在mysql数据库的默认general_log表中。
  1. MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'general_log';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | general_log | OFF |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> SET GLOBAL general_log = ON;      #临时开启通用日志功能
  11. Query OK, 0 rows affected (0.00 sec)
  12.  
  13. MariaDB [yinzhengjie]>
  14. MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'general_log';
  15. +---------------+-------+
  16. | Variable_name | Value |
  17. +---------------+-------+
  18. | general_log | ON |
  19. +---------------+-------+
  20. 1 row in set (0.00 sec)
  21.  
  22. MariaDB [yinzhengjie]>
  23. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SET GLOBAL general_log = ON;      #临时开启通用日志功能

  1. MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'general_log_file';      #查看默认的通用日志名称
  2. +------------------+-------------+
  3. | Variable_name | Value |
  4. +------------------+-------------+
  5. | general_log_file | node105.log |
  6. +------------------+-------------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> QUIT
  11. Bye
  12. [root@node105.yinzhengjie.org.cn ~]#
  13. [root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/data/node105.log
  14. /usr/local/mysql/bin/mysqld, Version: 10.2.19-MariaDB (MariaDB Server). started with:
  15. Tcp port: 3306 Unix socket: /mysql/3306/socket/mysql.sock
  16. Time Id Command Argument
  17. 191104 16:40:38 9 Query SHOW GLOBAL VARIABLES LIKE 'general_log'
  18. 191104 16:40:46 10 Query SHOW TABLES
  19. 191104 16:41:39 9 Query SHOW GLOBAL VARIABLES LIKE 'general_log_file'
  20. 191104 16:49:52 9 Query SHOW GLOBAL VARIABLES LIKE 'log_output'
  21. 191104 16:49:55 9 Query SHOW GLOBAL VARIABLES LIKE 'log_output'
  22. 191104 16:50:11 9 Query SET GLOBAL log_output = table
  23. 191104 16:50:20 9 Query SHOW GLOBAL VARIABLES LIKE 'log_output'
  24. 191104 16:50:53 9 Query SET GLOBAL log_output = 'table'
  25. 191104 16:56:22 11 Quit
  26. 191104 16:56:59 10 Query SHOW VARIABLES LIKE '%innodb_log%'
  27. 191104 16:57:10 10 Query SHOW GLOBAL VARIABLES LIKE 'log_output'
  28. 191104 16:58:17 10 Query SHOW GLOBAL VARIABLES LIKE 'general_log_file'
  29. 191104 16:59:26 10 Quit
  30. [root@node105.yinzhengjie.org.cn ~]#
  31. [root@node105.yinzhengjie.org.cn ~]#

MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'general_log_file';      #查看默认的通用日志名称

  1. MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'log_output';    #查看默认的日志输出类型
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | log_output | FILE |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> SET GLOBAL log_output = 'table';
  11. Query OK, 0 rows affected (0.00 sec)
  12.  
  13. MariaDB [yinzhengjie]>
  14. MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'log_output';
  15. +---------------+-------+
  16. | Variable_name | Value |
  17. +---------------+-------+
  18. | log_output | TABLE |
  19. +---------------+-------+
  20. 1 row in set (0.00 sec)
  21.  
  22. MariaDB [yinzhengjie]>
  23. MariaDB [yinzhengjie]> SELECT * FROM mysql.general_log\G    #查看表中的通用日志记录信息
  24. *************************** 1. row ***************************
  25. event_time: 2019-11-04 16:50:55.178466
  26. user_host: root[root] @ localhost []
  27. thread_id: 9
  28. server_id: 1
  29. command_type: Query
  30. argument: SHOW GLOBAL VARIABLES LIKE 'log_output'
  31. *************************** 2. row ***************************
  32. event_time: 2019-11-04 16:51:24.556260
  33. user_host: root[root] @ localhost []
  34. thread_id: 9
  35. server_id: 1
  36. command_type: Query
  37. argument: SELECT * FROM mysql.general_log
  38. 2 rows in set (0.00 sec)
  39.  
  40. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW GLOBAL VARIABLES LIKE 'log_output';      #查看默认的日志输出类型

  1. MariaDB [yinzhengjie]> SELECT * FROM mysql.general_log;
  2. +----------------------------+---------------------------+-----------+-----------+--------------+-----------------------------------------+
  3. | event_time | user_host | thread_id | server_id | command_type | argument |
  4. +----------------------------+---------------------------+-----------+-----------+--------------+-----------------------------------------+
  5. | 2019-11-04 16:50:55.178466 | root[root] @ localhost [] | 9 | 1 | Query | SHOW GLOBAL VARIABLES LIKE 'log_output' |
  6. | 2019-11-04 16:51:24.556260 | root[root] @ localhost [] | 9 | 1 | Query | SELECT * FROM mysql.general_log |
  7. | 2019-11-04 16:54:30.403657 | root[root] @ localhost [] | 9 | 1 | Quit | |
  8. | 2019-11-04 16:55:56.817442 | [root] @ localhost [] | 11 | 1 | Connect | root@localhost as anonymous on |
  9. | 2019-11-04 16:55:56.820207 | root[root] @ localhost [] | 11 | 1 | Query | select @@version_comment limit 1 |
  10. | 2019-11-04 16:56:00.271469 | root[root] @ localhost [] | 11 | 1 | Query | SELECT DATABASE() |
  11. | 2019-11-04 16:56:00.271777 | root[root] @ localhost [] | 11 | 1 | Init DB | yinzhengjie |
  12. | 2019-11-04 16:56:18.084201 | root[root] @ localhost [] | 11 | 1 | Query | SET GLOBAL log_output = 'file' |
  13. +----------------------------+---------------------------+-----------+-----------+--------------+-----------------------------------------+
  14. 8 rows in set (0.00 sec)
  15.  
  16. MariaDB [yinzhengjie]>
  17. MariaDB [yinzhengjie]> SELECT argument,COUNT(*) FROM mysql.general_log GROUP BY argument;    #找出查询此处最多的语句可以来创建相关索引。
  18. +-----------------------------------------+----------+
  19. | argument | COUNT(*) |
  20. +-----------------------------------------+----------+
  21. | | 1 |
  22. | root@localhost as anonymous on | 1 |
  23. | SELECT * FROM mysql.general_log | 1 |
  24. | select @@version_comment limit 1 | 1 |
  25. | SELECT DATABASE() | 1 |
  26. | SET GLOBAL log_output = 'file' | 1 |
  27. | SHOW GLOBAL VARIABLES LIKE 'log_output' | 1 |
  28. | yinzhengjie | 1 |
  29. +-----------------------------------------+----------+
  30. 8 rows in set (0.00 sec)
  31.  
  32. MariaDB [yinzhengjie]>

一般不建议开启,除非数据库需要优化,通过该日志分析数据库可能存在的问题,若数据库优化完毕依然建议关闭它,会影响服务器性能。

四.慢查询日志 (slow query log)

1>.慢查询日志记录内容

  1.   记录执行查询时长超出指定时长的操作

2>.慢查询相关设置

  1. slow_query_log=ON|OFF
  2.   开启或关闭慢查询
  3.  
  4. long_query_time=N
  5.   慢查询的阀值,单位秒
  6.  
  7. slow_query_log_file=HOSTNAME-slow.log
  8.   慢查询日志文件
  9.  
  10. log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
  11.   上述查询类型且查询时长超过long_query_time,则记录日志
  12.  
  13. log_queries_not_using_indexes=ON
  14.   不使用索引或使用全索引扫描,不论是否达到慢查询阀值的语句是否记录日志,默认OFF,即不记录
  15.  
  16. log_slow_rate_limit = 1
  17.   多少次查询才记录,mariadb特有
  18.  
  19. log_slow_verbosity= Query_plan,explain
  20.   记录内容
  21.  
  22. log_slow_queries = OFF
  23.   slow_query_log 新版已废弃

3>.慢查询相关参数使用案例

  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql/3306/etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/etc/my.cnf
  4. [mysqld]
  5. innodb_log_group_home_dir = /data/logs
  6. innodb_log_file_size = 10M
  7. innodb_log_files_in_group = 3
  8. log_warnings = 10
  9. general_log = ON
  10. slow_query_log = ON      #开启慢查询日志
  11. long_query_time = 5      #指定慢查询超时时间为5秒就记录到文件
  12. character-set-server = utf8mb4
  13. default_storage_engine = InnoDB
  14. autocommit = 1
  15. skip_name_resolve = 1
  16. userstat = ON
  17. port = 3306
  18. datadir = /mysql/3306/data
  19. socket = /mysql/3306/socket/mysql.sock
  20.  
  21. [mysqld_safe]
  22. log-error = /mysql/3306/log/mariadb.log
  23. pid-file = /mysql/3306/pid/mariadb.pid
  24. [root@node105.yinzhengjie.org.cn ~]#
  25. [root@node105.yinzhengjie.org.cn ~]# /mysql/3306/mysqld restart
  26. Restarting MySQL...
  27. Stoping MySQL...
  28. Starting MySQL...
  29. [root@node105.yinzhengjie.org.cn ~]#
  30. [root@node105.yinzhengjie.org.cn ~]# mysql -uroot -pyinzhengjie -S /mysql/3306/socket/mysql.sock
  31. Welcome to the MariaDB monitor. Commands end with ; or \g.
  32. Your MariaDB connection id is 8
  33. Server version: 10.2.19-MariaDB-log MariaDB Server
  34.  
  35. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  36.  
  37. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  38.  
  39. MariaDB [(none)]>
  40. MariaDB [(none)]> SELECT SLEEP(1) FROM yinzhengjie.teachers;    #有多少条记录这里就会休眠几秒,这里4条记录仅休眠4秒,而我们定义的慢查询日志超时时间为5秒,因此该条记录不会被记录。
  41. +----------+
  42. | SLEEP(1) |
  43. +----------+
  44. | 0 |
  45. | 0 |
  46. | 0 |
  47. | 0 |
  48. +----------+
  49. 4 rows in set (4.01 sec)
  50.  
  51. MariaDB [(none)]>
  52. MariaDB [(none)]> SELECT SLEEP(1) FROM yinzhengjie.students;    #同理,在yinzhengjie.students表有25行记录,因此休眠5秒,符合我们定义慢日志查询超时时间为5秒,因此该条记录会被记录到慢查询日志中。
  53. +----------+
  54. | SLEEP(1) |
  55. +----------+
  56. | 0 |
  57. | 0 |
  58. | 0 |
  59. | 0 |
  60. | 0 |
  61. | 0 |
  62. | 0 |
  63. | 0 |
  64. | 0 |
  65. | 0 |
  66. | 0 |
  67. | 0 |
  68. | 0 |
  69. | 0 |
  70. | 0 |
  71. | 0 |
  72. | 0 |
  73. | 0 |
  74. | 0 |
  75. | 0 |
  76. | 0 |
  77. | 0 |
  78. | 0 |
  79. | 0 |
  80. | 0 |
  81. +----------+
  82. 25 rows in set (25.03 sec)
  83.  
  84. MariaDB [(none)]>
  85. MariaDB [(none)]> QUIT
  86. Bye
  87. [root@node105.yinzhengjie.org.cn ~]#
  88. [root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/data/node105-slow.log       #不难发现和我们上面分析的一样,只有一条慢查询日志,当然慢查询日志不仅仅包含SELECT语句哟,包括的是DML语句,存储引擎等的执行超过指定秒数也会被记录呢!
  89. /usr/local/mysql/bin/mysqld, Version: 10.2.19-MariaDB-log (MariaDB Server). started with:
  90. Tcp port: 3306 Unix socket: /mysql/3306/socket/mysql.sock
  91. Time Id Command Argument
  92. # Time: 191104 17:24:14
  93. # User@Host: root[root] @ localhost []
  94. # Thread_id: 8 Schema: QC_hit: No
  95. # Query_time: 25.025535 Lock_time: 0.000404 Rows_sent: 25 Rows_examined: 25
  96. # Rows_affected: 0
  97. SET timestamp=1572859454;
  98. SELECT SLEEP(1) FROM yinzhengjie.students;
  99. [root@node105.yinzhengjie.org.cn ~]#
  100. [root@node105.yinzhengjie.org.cn ~]#

详情请戳我

4>.通过profiling工具分析慢查询日志

  1. MariaDB [yinzhengjie]> SELECT @@profiling;
  2. +-------------+
  3. | @@profiling |
  4. +-------------+
  5. | 0 |
  6. +-------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> SET profiling = ON;      #开启profiling功能
  11. Query OK, 0 rows affected (0.00 sec)
  12.  
  13. MariaDB [yinzhengjie]>
  14. MariaDB [yinzhengjie]> SELECT @@profiling;
  15. +-------------+
  16. | @@profiling |
  17. +-------------+
  18. | 1 |
  19. +-------------+
  20. 1 row in set (0.00 sec)
  21.  
  22. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SET profiling = ON;      #开启profiling功能

  1. MariaDB [yinzhengjie]> SHOW profiles;          #需要开启profiling功能后,执行的SQL语句会被记录
  2. +----------+-------------+-------------------------------------------+
  3. | Query_ID | Duration | Query |
  4. +----------+-------------+-------------------------------------------+
  5. | 1 | 0.00013446 | SELECT @@profiling |
  6. | 2 | 4.00646956 | SELECT SLEEP(1) FROM yinzhengjie.teachers |
  7. | 3 | 25.02319266 | SELECT SLEEP(1) FROM yinzhengjie.students |
  8. +----------+-------------+-------------------------------------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. MariaDB [yinzhengjie]>
  12. MariaDB [yinzhengjie]> SHOW PROFILE FOR QUERY 2;    #我们查看上面第2条语句,对其分析查询慢日志的原因
  13. +----------------------+----------+
  14. | Status | Duration |
  15. +----------------------+----------+
  16. | starting | 0.000085 |
  17. | checking permissions | 0.000007 |
  18. | Opening tables | 0.000017 |
  19. | After opening tables | 0.000005 |
  20. | System lock | 0.000004 |
  21. | Table lock | 0.000006 |
  22. | init | 0.000011 |
  23. | optimizing | 0.000007 |
  24. | statistics | 0.000020 |
  25. | preparing | 0.000018 |
  26. | executing | 0.000004 |
  27. | Sending data | 0.000022 |
  28. | User sleep | 1.002767 |      #不难发现,耗时最长的应该就是在sleep过程啦!
  29. | User sleep | 1.001184 |
  30. | User sleep | 1.000412 |
  31. | User sleep | 1.001772 |
  32. | end | 0.000026 |
  33. | query end | 0.000022 |
  34. | closing tables | 0.000008 |
  35. | Unlocking tables | 0.000023 |
  36. | freeing items | 0.000011 |
  37. | updating status | 0.000031 |
  38. | cleaning up | 0.000008 |
  39. +----------------------+----------+
  40. 23 rows in set (0.00 sec)
  41.  
  42. MariaDB [yinzhengjie]>

五.二进制日志 (binary log,Oracle称为归档日志)

1>.二进制日志记录内容

  1.   记录内容:
        记录导致数据改变或潜在导致数据改变的SQL语句(即只记录增删改操作)
        记录已提交的日志
        不依赖于存储引擎类型
      功能:
        通过“重放”日志文件中的事件来生成数据副本
      温馨提示:
        建议生产环境中二进制日志和数据文件分开存放,当数据文件存放目录损坏,可通过二进制文件恢复。

2>.二进制日志记录格式

  1. 二进制日志记录三种格式:
  2.   基于“语句”记录:
        statement,只记录语句,默认模式。该模式存在弊端,比如执行"UPDATE students SET birth = now();"无法保存具体的时间戳,若按照该语句进行还原数据准确性肯定出现问题。
  3.   基于“行”记录:
        row,只记录数据,即直接将数据存储下来,但日志量较大。适合数据相对来说重要的场景。推荐使用这种模式,数据恢复时准确的最高,但带来的代价就是得牺牲更多的磁盘空间。建议健康磁盘剩余空间进行及时扩充。
  4.   混合模式:
        mixed,相对来说比较折中的方式,让系统自行判定该基于哪种方式进行。
  5.  
  6. 格式配置:
  7.   SHOW VARIABLES LIKE 'binlog_format';
  1. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'binlog_format';    `    #查看二进制默认的记录格式
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | binlog_format | MIXED |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'binlog_format';    `    #查看MariaDB10.2.x二进制默认的记录格式

3>.二进制日志文件的构成

  1. 日志文件:
  2.   mysql|mariadb-bin.文件名后缀,二进制格式,如: mariadb-bin.000001
  3.  
  4. 索引文件:
  5.   mysql|mariadb-bin.index,文本格式,记录在当前有效的二进制文件名称

4>.二进制日志相关的服务器变量

  1. sql_log_bin=ON|OFF
      是否记录二进制日志,默认ON,默认启用二进制文件功能,该变量是会话(session)级别无需重启服务就可生效,可很灵活的控制二进制日志的禁用和启用。
      在批量导入大量数据时,我们此时可用选择不记录二进制文件从而节省一定的磁盘空间使用,这个时候我们就可用将该值设置为OFF,可用临时禁用二进制日志功能。

  2. log_bin=/PATH/BIN_LOG_FILE
      指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项(sql_log_binlog_bin)都开启才可

  3. binlog_format=STATEMENT|ROW|MIXED
      二进制日志记录的格式,MariaDB 5.5.x默认STATEMENT,而MariaDB 10.2.x默认为MIXED

  4. max_binlog_size=1073741824
      单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G
  5.   说明:文件达到上限时的大小未必为指定的精确值

  6. sync_binlog=1|0
      设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘

  7. expire_logs_days=N
      二进制日志可以自动删除的天数。 默认为0,即不自动删除
  1. [root@node105.yinzhengjie.org.cn ~]# install -d /data/logbin -o mysql -g mysql    #创建二进制日志存放目录
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# ll -d /data/logbin/
  4. drwxr-xr-x mysql mysql Nov : /data/logbin/
  5. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# install -d /data/logbin -o mysql -g mysql    #创建二进制日志存放目录

  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql//etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# cat /mysql//etc/my.cnf    #配置二进制文件的默认存放路径
  4. [mysqld]
  5. log_bin    = /data/logbin/mysql-bin      #指定二进制日志存放路径及文件名称前缀
  6. character-set-server = utf8mb4
  7. default_storage_engine = InnoDB
  8. port      =
  9. datadir    = /mysql//data
  10. socket    = /mysql//socket/mysql.sock
  11.  
  12. [mysqld_safe]
  13. log-error = /mysql//log/mariadb.log
  14. pid-file = /mysql//pid/mariadb.pid
  15. [root@node105.yinzhengjie.org.cn ~]#
  16. [root@node105.yinzhengjie.org.cn ~]#
  17. [root@node105.yinzhengjie.org.cn ~]# ll /data/logbin/
  18. total
  19. [root@node105.yinzhengjie.org.cn ~]#
  20. [root@node105.yinzhengjie.org.cn ~]# /mysql//mysqld start
  21. Starting MySQL...
  22. [root@node105.yinzhengjie.org.cn ~]#
  23. [root@node105.yinzhengjie.org.cn ~]# ll /data/logbin/        #启动服务后二进制日志存放到指定路径中
  24. total
  25. -rw-rw---- mysql mysql Nov : mysql-bin.
  26. -rw-rw---- mysql mysql Nov : mysql-bin.index
  27. [root@node105.yinzhengjie.org.cn ~]#
  28. [root@node105.yinzhengjie.org.cn ~]# cat /data/logbin/mysql-bin.index   #查看现在所有可用的二进制文件名称
  29. /data/logbin/mysql-bin.
  30. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/etc/my.cnf    #配置二进制文件的默认存放路径

  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql//etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# cat /mysql//etc/my.cnf      #配置二进制文件的默认格式
  4. [mysqld]
  5. log_bin   = /data/logbin/mysql-bin
  6. binlog_format   = ROW      #修改二进制的格式为基于行的,这意味着需要更多的占用磁盘使用空间。
  7. character-set-server = utf8mb4
  8. default_storage_engine = InnoDB
  9. port      =
  10. datadir    = /mysql//data
  11. socket    = /mysql//socket/mysql.sock
  12.  
  13. [mysqld_safe]
  14. log-error = /mysql//log/mariadb.log
  15. pid-file = /mysql//pid/mariadb.pid
  16. [root@node105.yinzhengjie.org.cn ~]#
  17. [root@node105.yinzhengjie.org.cn ~]#
  18. [root@node105.yinzhengjie.org.cn ~]#
  19. [root@node105.yinzhengjie.org.cn ~]# /mysql//mysqld restart
  20. Restarting MySQL...
  21. Stoping MySQL...
  22. Starting MySQL...
  23. [root@node105.yinzhengjie.org.cn ~]#
  24. [root@node105.yinzhengjie.org.cn ~]# ll /data/logbin/              #每次重启MySQL实例都会滚动二进制日志文件
  25. total
  26. -rw-rw---- mysql mysql Nov : mysql-bin.
  27. -rw-rw---- mysql mysql Nov : mysql-bin.
  28. -rw-rw---- mysql mysql Nov : mysql-bin.index
  29. [root@node105.yinzhengjie.org.cn ~]#
  30. [root@node105.yinzhengjie.org.cn ~]# cat /data/logbin/mysql-bin.index     #查看所有可用的二进制文件
  31. /data/logbin/mysql-bin.
  32. /data/logbin/mysql-bin.
  33. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# cat /mysql/3306/etc/my.cnf      #配置二进制文件的默认格式

5>.二进制日志相关配置

  1. 查看mariadb自行管理使用中的二进制日志文件列表,及大小:
  2.   SHOW {BINARY | MASTER} LOGS
  3.  
  4. 查看使用中的二进制日志文件:
  5.   SHOW MASTER STATUS

  6. 切换日志文件:
  7.   FLUSH LOGS
  8.  
  9. 查看二进制文件中的指定内容:
  10.   SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
  11.     如:SHOW BINLOG EVENTS IN 'mysql-bin.000003' FROM 285 LIMIT 3,4
      以上命令查看的信息并不详细推荐使用mysqlbinlog工具进行查看。
  1. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. +------------------+-----------+
  8. rows in set (0.00 sec)
  9.  
  10. MariaDB [yinzhengjie]>
  11. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  12. +------------------+-----------+
  13. | Log_name | File_size |
  14. +------------------+-----------+
  15. | mysql-bin. | |
  16. | mysql-bin. | |
  17. +------------------+-----------+
  18. rows in set (0.00 sec)
  19.  
  20. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW BINARY LOGS;

  1. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  2. +------------------+----------+--------------+------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +------------------+----------+--------------+------------------+
  5. | mysql-bin. | | | |
  6. +------------------+----------+--------------+------------------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW MASTER STATUS;

  1. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. +------------------+-----------+
  8. rows in set (0.00 sec)
  9.  
  10. MariaDB [yinzhengjie]>
  11. MariaDB [yinzhengjie]> FLUSH LOGS;
  12. Query OK, rows affected (0.00 sec)
  13.  
  14. MariaDB [yinzhengjie]>
  15. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  16. +------------------+-----------+
  17. | Log_name | File_size |
  18. +------------------+-----------+
  19. | mysql-bin. | |
  20. | mysql-bin. | |
  21. | mysql-bin. | |
  22. +------------------+-----------+
  23. rows in set (0.00 sec)
  24.  
  25. MariaDB [yinzhengjie]>
  26. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/ #使用SYSTEM调用系统命令查看操作系统的确也有对应的文件生成啦。
  27. total
  28. -rw-rw---- mysql mysql Nov : mysql-bin.
  29. -rw-rw---- mysql mysql Nov : mysql-bin.
  30. -rw-rw---- mysql mysql Nov : mysql-bin.
  31. -rw-rw---- mysql mysql Nov : mysql-bin.index
  32. MariaDB [yinzhengjie]>
  33. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> FLUSH LOGS;

  1. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. | mysql-bin. | |
  8. +------------------+-----------+
  9. rows in set (0.00 sec)
  10.  
  11. MariaDB [yinzhengjie]>
  12. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  13. total
  14. -rw-rw---- mysql mysql Nov : mysql-bin.
  15. -rw-rw---- mysql mysql Nov : mysql-bin.
  16. -rw-rw---- mysql mysql Nov : mysql-bin.
  17. -rw-rw---- mysql mysql Nov : mysql-bin.index
  18. MariaDB [yinzhengjie]>
  19. MariaDB [yinzhengjie]> INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yinzhengjie',,'M');
  20. Query OK, rows affected (0.00 sec)
  21. Records: Duplicates: Warnings:
  22.  
  23. MariaDB [yinzhengjie]>
  24. MariaDB [yinzhengjie]> SELECT * FROM teachers;
  25. +-----+---------------+-----+--------+
  26. | TID | Name | Age | Gender |
  27. +-----+---------------+-----+--------+
  28. | | Song Jiang | | M |
  29. | | Zhang Sanfeng | | M |
  30. | | Miejue Shitai | | F |
  31. | | Lin Chaoying | | F |
  32. | | Jason Yin | | M |
  33. | | yinzhengjie | | M |
  34. +-----+---------------+-----+--------+
  35. rows in set (0.00 sec)
  36.  
  37. MariaDB [yinzhengjie]>
  38. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  39. +------------------+-----------+
  40. | Log_name | File_size |
  41. +------------------+-----------+
  42. | mysql-bin. | |
  43. | mysql-bin. | |
  44. | mysql-bin. | |
  45. +------------------+-----------+
  46. rows in set (0.00 sec)
  47.  
  48. MariaDB [yinzhengjie]>
  49. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  50. +------------------+----------+--------------+------------------+
  51. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  52. +------------------+----------+--------------+------------------+
  53. | mysql-bin. | | | |
  54. +------------------+----------+--------------+------------------+
  55. row in set (0.00 sec)
  56.  
  57. MariaDB [yinzhengjie]>
  58. MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003';    #查看二进制文件的内容
  59. +------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  60. ------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
  61. |+------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  62. ------------------+| mysql-bin. | | Format_desc | | | Server ver: 10.2.-MariaDB-log, Binlog ver:
  63. || mysql-bin. | | Gtid_list | | | []
  64. || mysql-bin. | | Binlog_checkpoint | | | mysql-bin.
  65. || mysql-bin. | | Binlog_checkpoint | | | mysql-bin.
  66. || mysql-bin. | | Gtid | | | BEGIN GTID --
  67. || mysql-bin. | | Annotate_rows | | | INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yin
  68. zhengjie',18,'M') |
  69.            | mysql-bin. | | Table_map | | | table_id: (yinzhengjie.teachers)
  70. || mysql-bin. | | Write_rows_v1 | | | table_id: flags: STMT_END_F
  71. || mysql-bin. | | Xid | | | COMMIT /* xid=16 */
  72. |+------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  73. ------------------+
  74.  
  75. rows in set (0.00 sec)
  76.  
  77. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003';    #查看二进制文件的内容,查看的内容不详细

  1. MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003';
  2. +------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  3. ------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
  4. |+------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  5. ------------------+| mysql-bin. | | Format_desc | | | Server ver: 10.2.-MariaDB-log, Binlog ver:
  6. || mysql-bin. | | Gtid_list | | | []
  7. || mysql-bin. | | Binlog_checkpoint | | | mysql-bin.
  8. || mysql-bin. | | Binlog_checkpoint | | | mysql-bin.
  9. || mysql-bin. | | Gtid | | | BEGIN GTID --
  10. || mysql-bin. | | Annotate_rows | | | INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yin
  11. zhengjie',18,'M') |
  12.            | mysql-bin. | | Table_map | | | table_id: (yinzhengjie.teachers)
  13. || mysql-bin. | | Write_rows_v1 | | | table_id: flags: STMT_END_F
  14. || mysql-bin. | | Xid | | | COMMIT /* xid=16 */
  15. |+------------------+-----+-------------------+-----------+-------------+-------------------------------------------------------------------------
  16. ------------------+
  17. rows in set (0.00 sec)
  18.  
  19. MariaDB [yinzhengjie]>
  20. MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003' FROM LIMIT ;
  21. +------------------+-----+-------------------+-----------+-------------+------------------+
  22. | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
  23. +------------------+-----+-------------------+-----------+-------------+------------------+
  24. | mysql-bin. | | Binlog_checkpoint | | | mysql-bin. |
  25. | mysql-bin. | | Binlog_checkpoint | | | mysql-bin. |
  26. +------------------+-----+-------------------+-----------+-------------+------------------+
  27. rows in set (0.00 sec)
  28.  
  29. MariaDB [yinzhengjie]>
  30. MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003' FROM LIMIT ,;    #从指定位置查看相应的信息
  31. +------------------+-----+---------------+-----------+-------------+-----------------------------------------------------------------------------
  32. --------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
  33. |+------------------+-----+---------------+-----------+-------------+-----------------------------------------------------------------------------
  34. --------------+| mysql-bin. | | Annotate_rows | | | INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yinzhen
  35. gjie',18,'M') |
  36.          | mysql-bin. | | Table_map | | | table_id: (yinzhengjie.teachers)
  37. || mysql-bin. | | Write_rows_v1 | | | table_id: flags: STMT_END_F
  38. || mysql-bin. | | Xid | | | COMMIT /* xid=16 */
  39. |+------------------+-----+---------------+-----------+-------------+-----------------------------------------------------------------------------
  40. --------------+
  41. rows in set (0.00 sec)
  42.  
  43. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> SHOW BINLOG EVENTS IN 'mysql-bin.000003' FROM 285 LIMIT 3,4;  #从指定位置查看相应的信息

6>.二进制日志的客户端命令工具(mysqlbinlog)

  1. 命令格式:
  2.   mysqlbinlog [OPTIONS] log_file
  3.   --start-position=# 指定开始位置
  4.   --stop-position=#
  5.   --start-datetime=
  6.   --stop-datetime=
  7.   时间格式:YYYY-MM-DD hh:mm:ss
  8.   --base64-output[=name]
  9.   -v -vvv
  1. [root@node105.yinzhengjie.org.cn ~]# ls -l /data/logbin/
  2. total
  3. -rw-rw---- mysql mysql Nov : mysql-bin.
  4. -rw-rw---- mysql mysql Nov : mysql-bin.
  5. -rw-rw---- mysql mysql Nov : mysql-bin.
  6. -rw-rw---- mysql mysql Nov : mysql-bin.index
  7. [root@node105.yinzhengjie.org.cn ~]#
  8. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin.   #可用查看二进制文件,但有基于Base64编码的加密信息。
  9. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  10. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  11. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  12. DELIMITER /*!*/;
  13. # at
  14. # :: server id end_log_pos CRC32 0x4e4a71e5 Start: binlog v , server v 10.2.-MariaDB-log created ::
  15. # Warning: this binlog is either in use or was not closed properly.
  16. BINLOG '
  17. ngjAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  18. AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  19. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  20. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  21. AAAAAAAAAAAEEwQADQgICAoKCgHlcUpO
  22. '/*!*/;
  23. # at
  24. # :: server id end_log_pos CRC32 0x11540620 Gtid list []
  25. # at
  26. # :: server id end_log_pos CRC32 0x3b612022 Binlog checkpoint mysql-bin.
  27. # at
  28. # :: server id end_log_pos CRC32 0xce9f3b39 Binlog checkpoint mysql-bin.
  29. # at
  30. # :: server id end_log_pos CRC32 0xbc3f3fe1 GTID -- trans
  31. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  32. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  33. /*!100001 SET @@session.server_id=1*//*!*/;
  34. /*!100001 SET @@session.gtid_seq_no=1*//*!*/;
  35. BEGIN
  36. /*!*/;
  37. # at
  38. # at
  39. # :: server id end_log_pos CRC32 0xe7b70b5b Annotate_rows:
  40. #Q> INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yinzhengjie',,'M')
  41. # :: server id end_log_pos CRC32 0xd48ca5db Table_map: `yinzhengjie`.`teachers` mapped to number
  42. # at
  43. # :: server id end_log_pos CRC32 0x1a95ea95 Write_rows: table id flags: STMT_END_F
  44.  
  45. BINLOG '
  46. uArAXRMBAAAAQQAAAE4CAAAAABYAAAAAAAEAC3lpbnpoZW5namllAAh0ZWFjaGVycwAEAg8B/gQs
  47. AfcBCNuljNQ=
  48. uArAXRcBAAAAQwAAAJECAAAAABYAAAAAAAEABP/wBQAJAEphc29uIFlpbhoC8AYACwB5aW56aGVu
  49. Z2ppZRICleqVGg==
  50. '/*!*/;
  51. # at
  52. # :: server id end_log_pos CRC32 0x6b6a92b0 Xid =
  53. COMMIT/*!*/;
  54. DELIMITER ;
  55. # End of log file
  56. ROLLBACK /* added by mysqlbinlog */;
  57. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  58. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  59. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin.000003   #可用查看二进制文件

  1. [root@node105.yinzhengjie.org.cn ~]# ls -l /data/logbin/
  2. total
  3. -rw-rw---- mysql mysql Nov : mysql-bin.
  4. -rw-rw---- mysql mysql Nov : mysql-bin.
  5. -rw-rw---- mysql mysql Nov : mysql-bin.
  6. -rw-rw---- mysql mysql Nov : mysql-bin.index
  7. [root@node105.yinzhengjie.org.cn ~]#
  8. [root@node105.yinzhengjie.org.cn ~]#
  9. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. --verbose  #查看详细信息
  10. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  11. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  12. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  13. DELIMITER /*!*/;
  14. # at
  15. # :: server id end_log_pos CRC32 0x4e4a71e5 Start: binlog v , server v 10.2.-MariaDB-log created ::
  16. # Warning: this binlog is either in use or was not closed properly.
  17. BINLOG '
  18. ngjAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  19. AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  20. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  21. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  22. AAAAAAAAAAAEEwQADQgICAoKCgHlcUpO
  23. '/*!*/;
  24. # at
  25. # :: server id end_log_pos CRC32 0x11540620 Gtid list []
  26. # at
  27. # :: server id end_log_pos CRC32 0x3b612022 Binlog checkpoint mysql-bin.
  28. # at
  29. # :: server id end_log_pos CRC32 0xce9f3b39 Binlog checkpoint mysql-bin.
  30. # at
  31. # :: server id end_log_pos CRC32 0xbc3f3fe1 GTID -- trans
  32. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  33. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  34. /*!100001 SET @@session.server_id=1*//*!*/;
  35. /*!100001 SET @@session.gtid_seq_no=1*//*!*/;
  36. BEGIN
  37. /*!*/;
  38. # at
  39. # at
  40. # :: server id end_log_pos CRC32 0xe7b70b5b Annotate_rows:
  41. #Q> INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yinzhengjie',,'M')
  42. # :: server id end_log_pos CRC32 0xd48ca5db Table_map: `yinzhengjie`.`teachers` mapped to number
  43. # at
  44. # :: server id end_log_pos CRC32 0x1a95ea95 Write_rows: table id flags: STMT_END_F
  45.  
  46. BINLOG '
  47. uArAXRMBAAAAQQAAAE4CAAAAABYAAAAAAAEAC3lpbnpoZW5namllAAh0ZWFjaGVycwAEAg8B/gQs
  48. AfcBCNuljNQ=
  49. uArAXRcBAAAAQwAAAJECAAAAABYAAAAAAAEABP/wBQAJAEphc29uIFlpbhoC8AYACwB5aW56aGVu
  50. Z2ppZRICleqVGg==
  51. '/*!*/;
  52. ### INSERT INTO `yinzhengjie`.`teachers`
  53. ### SET
  54. ### @=
  55. ### @='Jason Yin'
  56. ### @=
  57. ### @=
  58. ### INSERT INTO `yinzhengjie`.`teachers`
  59. ### SET
  60. ### @=
  61. ### @='yinzhengjie'
  62. ### @=
  63. ### @=
  64. # at
  65. # :: server id end_log_pos CRC32 0x6b6a92b0 Xid =
  66. COMMIT/*!*/;
  67. DELIMITER ;
  68. # End of log file
  69. ROLLBACK /* added by mysqlbinlog */;
  70. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  71. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  72. [root@node105.yinzhengjie.org.cn ~]#
  73. [root@node105.yinzhengjie.org.cn ~]#

[root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin.000003 --verbose  #查看详细信息

  1. MariaDB [yinzhengjie]> SELECT @@binlog_format;
  2. +-----------------+
  3. | @@binlog_format |
  4. +-----------------+
  5. | ROW |
  6. +-----------------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> select * from teachers;
  11. +-----+---------------+-----+--------+
  12. | TID | Name | Age | Gender |
  13. +-----+---------------+-----+--------+
  14. | | Song Jiang | | M |
  15. | | Zhang Sanfeng | | M |
  16. | | Miejue Shitai | | F |
  17. | | Lin Chaoying | | F |
  18. | | Jason Yin | | M |
  19. | | yinzhengjie | | M |
  20. +-----+---------------+-----+--------+
  21. rows in set (0.00 sec)
  22.  
  23. MariaDB [yinzhengjie]>
  24. MariaDB [yinzhengjie]> UPDATE teachers SET gender='M';
  25. Query OK, rows affected (0.00 sec)
  26. Rows matched: Changed: Warnings:
  27.  
  28. MariaDB [yinzhengjie]>
  29. MariaDB [yinzhengjie]> select * from teachers;
  30. +-----+---------------+-----+--------+
  31. | TID | Name | Age | Gender |
  32. +-----+---------------+-----+--------+
  33. | | Song Jiang | | M |
  34. | | Zhang Sanfeng | | M |
  35. | | Miejue Shitai | | M |
  36. | | Lin Chaoying | | M |
  37. | | Jason Yin | | M |
  38. | | yinzhengjie | | M |
  39. +-----+---------------+-----+--------+
  40. rows in set (0.00 sec)
  41.  
  42. MariaDB [yinzhengjie]>
  43. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  44. +------------------+----------+--------------+------------------+
  45. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  46. +------------------+----------+--------------+------------------+
  47. | mysql-bin. | | | |
  48. +------------------+----------+--------------+------------------+
  49. row in set (0.00 sec)
  50.  
  51. MariaDB [yinzhengjie]>
  52. MariaDB [yinzhengjie]> QUIT
  53. Bye
  54. [root@node105.yinzhengjie.org.cn ~]#
  55. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. --verbose
  56. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  57. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  58. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  59. DELIMITER /*!*/;
  60. # at
  61. # :: server id end_log_pos CRC32 0x4e4a71e5 Start: binlog v , server v 10.2.-MariaDB-log created ::
  62. # Warning: this binlog is either in use or was not closed properly.
  63. BINLOG '
  64. ngjAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  65. AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  66. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  67. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  68. AAAAAAAAAAAEEwQADQgICAoKCgHlcUpO
  69. '/*!*/;
  70. # at
  71. # :: server id end_log_pos CRC32 0x11540620 Gtid list []
  72. # at
  73. # :: server id end_log_pos CRC32 0x3b612022 Binlog checkpoint mysql-bin.
  74. # at
  75. # :: server id end_log_pos CRC32 0xce9f3b39 Binlog checkpoint mysql-bin.
  76. # at
  77. # :: server id end_log_pos CRC32 0xbc3f3fe1 GTID -- trans
  78. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  79. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  80. /*!100001 SET @@session.server_id=1*//*!*/;
  81. /*!100001 SET @@session.gtid_seq_no=1*//*!*/;
  82. BEGIN
  83. /*!*/;
  84. # at
  85. # at
  86. # :: server id end_log_pos CRC32 0xe7b70b5b Annotate_rows:
  87. #Q> INSERT INTO teachers (name,age,gender) VALUES ('Jason Yin',,'M'),('yinzhengjie',,'M')
  88. # :: server id end_log_pos CRC32 0xd48ca5db Table_map: `yinzhengjie`.`teachers` mapped to number
  89. # at
  90. # :: server id end_log_pos CRC32 0x1a95ea95 Write_rows: table id flags: STMT_END_F
  91.  
  92. BINLOG '
  93. uArAXRMBAAAAQQAAAE4CAAAAABYAAAAAAAEAC3lpbnpoZW5namllAAh0ZWFjaGVycwAEAg8B/gQs
  94. AfcBCNuljNQ=
  95. uArAXRcBAAAAQwAAAJECAAAAABYAAAAAAAEABP/wBQAJAEphc29uIFlpbhoC8AYACwB5aW56aGVu
  96. Z2ppZRICleqVGg==
  97. '/*!*/;
  98. ### INSERT INTO `yinzhengjie`.`teachers`
  99. ### SET
  100. ### @=
  101. ### @='Jason Yin'
  102. ### @=
  103. ### @=
  104. ### INSERT INTO `yinzhengjie`.`teachers`
  105. ### SET
  106. ### @=
  107. ### @='yinzhengjie'
  108. ### @=
  109. ### @=
  110. # at
  111. # :: server id end_log_pos CRC32 0x6b6a92b0 Xid =
  112. COMMIT/*!*/;
  113. # at
  114. # :: server id end_log_pos CRC32 0x740f1f3c GTID -- trans
  115. /*!100001 SET @@session.gtid_seq_no=2*//*!*/;
  116. BEGIN
  117. /*!*/;
  118. # at
  119. # at
  120. # :: server id end_log_pos CRC32 0x782ca82d Annotate_rows:
  121. #Q> UPDATE teachers SET gender='M'
  122. # :: server id end_log_pos CRC32 0x37af4016 Table_map: `yinzhengjie`.`teachers` mapped to number
  123. # at
  124. # :: server id end_log_pos CRC32 0xc306f092 Update_rows: table id flags: STMT_END_F
  125.  
  126. BINLOG '
  127. zw/AXRMBAAAAQQAAAFADAAAAABYAAAAAAAEAC3lpbnpoZW5namllAAh0ZWFjaGVycwAEAg8B/gQs
  128. AfcBCBZArzc=
  129. zw/AXRgBAAAAcAAAAMADAAAAABYAAAAAAAEABP//8AMADQBNaWVqdWUgU2hpdGFpTQHwAwANAE1p
  130. ZWp1ZSBTaGl0YWlNAvAEAAwATGluIENoYW95aW5nXQHwBAAMAExpbiBDaGFveWluZ10CkvAGww==
  131. '/*!*/;
  132. ### UPDATE `yinzhengjie`.`teachers`
  133. ### WHERE
  134. ### @=
  135. ### @='Miejue Shitai'
  136. ### @=
  137. ### @=
  138. ### SET
  139. ### @=
  140. ### @='Miejue Shitai'
  141. ### @=
  142. ### @=
  143. ### UPDATE `yinzhengjie`.`teachers`
  144. ### WHERE
  145. ### @=
  146. ### @='Lin Chaoying'
  147. ### @=
  148. ### @=
  149. ### SET
  150. ### @=
  151. ### @='Lin Chaoying'
  152. ### @=
  153. ### @=
  154. # at
  155. # :: server id end_log_pos CRC32 0x70750a35 Xid =
  156. COMMIT/*!*/;
  157. DELIMITER ;
  158. # End of log file
  159. ROLLBACK /* added by mysqlbinlog */;
  160. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  161. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  162. [root@node105.yinzhengjie.org.cn ~]#

查看"binlog_format=ROW"格式的二进制文件信息(占用更多磁盘空间,但有利于数据恢复。从数据安全角度来说,生产环境推荐使用该格式)

  1. [root@node105.yinzhengjie.org.cn ~]# vim /mysql//etc/my.cnf
  2. [root@node105.yinzhengjie.org.cn ~]#
  3. [root@node105.yinzhengjie.org.cn ~]# cat /mysql//etc/my.cnf
  4. [mysqld]
  5. log_bin = /data/logbin/mysql-bin
  6. binlog_format = STATEMENT
  7. character-set-server = utf8mb4
  8. default_storage_engine = InnoDB
  9. port =
  10. datadir = /mysql//data
  11. socket = /mysql//socket/mysql.sock
  12.  
  13. [mysqld_safe]
  14. log-error = /mysql//log/mariadb.log
  15. pid-file = /mysql//pid/mariadb.pid
  16. [root@node105.yinzhengjie.org.cn ~]#
  17. [root@node105.yinzhengjie.org.cn ~]# /mysql//mysqld restart
  18. Restarting MySQL...
  19. Stoping MySQL...
  20. Starting MySQL...
  21. [root@node105.yinzhengjie.org.cn ~]#
  22. [root@node105.yinzhengjie.org.cn ~]# mysql -uroot -pyinzhengjie -S /mysql//socket/mysql.sock
  23. Welcome to the MariaDB monitor. Commands end with ; or \g.
  24. Your MariaDB connection id is
  25. Server version: 10.2.-MariaDB-log MariaDB Server
  26.  
  27. Copyright (c) , , Oracle, MariaDB Corporation Ab and others.
  28.  
  29. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  30.  
  31. MariaDB [(none)]>
  32. MariaDB [(none)]> use yinzhengjie
  33. Database changed
  34. MariaDB [yinzhengjie]>
  35. MariaDB [yinzhengjie]> select * from teachers;
  36. +-----+---------------+-----+--------+
  37. | TID | Name | Age | Gender |
  38. +-----+---------------+-----+--------+
  39. | | Song Jiang | | M |
  40. | | Zhang Sanfeng | | M |
  41. | | Miejue Shitai | | M |
  42. | | Lin Chaoying | | M |
  43. | | Jason Yin | | M |
  44. | | yinzhengjie | | M |
  45. +-----+---------------+-----+--------+
  46. rows in set (0.00 sec)
  47.  
  48. MariaDB [yinzhengjie]>
  49. MariaDB [yinzhengjie]> UPDATE teachers SET gender='F';
  50. Query OK, rows affected (0.00 sec)
  51. Rows matched: Changed: Warnings:
  52.  
  53. MariaDB [yinzhengjie]>
  54. MariaDB [yinzhengjie]> select * from teachers;
  55. +-----+---------------+-----+--------+
  56. | TID | Name | Age | Gender |
  57. +-----+---------------+-----+--------+
  58. | | Song Jiang | | F |
  59. | | Zhang Sanfeng | | F |
  60. | | Miejue Shitai | | F |
  61. | | Lin Chaoying | | F |
  62. | | Jason Yin | | F |
  63. | | yinzhengjie | | F |
  64. +-----+---------------+-----+--------+
  65. rows in set (0.00 sec)
  66.  
  67. MariaDB [yinzhengjie]>
  68. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  69. +------------------+-----------+
  70. | Log_name | File_size |
  71. +------------------+-----------+
  72. | mysql-bin. | |
  73. | mysql-bin. | |
  74. | mysql-bin. | |
  75. | mysql-bin. | |
  76. +------------------+-----------+
  77. rows in set (0.00 sec)
  78.  
  79. MariaDB [yinzhengjie]>
  80. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  81. +------------------+----------+--------------+------------------+
  82. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  83. +------------------+----------+--------------+------------------+
  84. | mysql-bin. | | | |
  85. +------------------+----------+--------------+------------------+
  86. row in set (0.00 sec)
  87.  
  88. MariaDB [yinzhengjie]>
  89. MariaDB [yinzhengjie]> SELECT @@binlog_format;
  90. +-----------------+
  91. | @@binlog_format |
  92. +-----------------+
  93. | STATEMENT |
  94. +-----------------+
  95. row in set (0.00 sec)
  96.  
  97. MariaDB [yinzhengjie]>
  98. MariaDB [yinzhengjie]> QUIT
  99. Bye
  100. [root@node105.yinzhengjie.org.cn ~]#
  101. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. --verbose
  102. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  103. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  104. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  105. DELIMITER /*!*/;
  106. # at
  107. # :: server id end_log_pos CRC32 0xdbb83886 Start: binlog v , server v 10.2.-MariaDB-log created :: at startu
  108. p# Warning: this binlog is either in use or was not closed properly.
  109. ROLLBACK/*!*/;
  110. BINLOG '
  111. FhHAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  112. AAAAAAAAAAAAAAAAAAAWEcBdEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  113. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  114. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  115. AAAAAAAAAAAEEwQADQgICAoKCgGGOLjb
  116. '/*!*/;
  117. # at
  118. # :: server id end_log_pos CRC32 0x82b331c3 Gtid list [--]
  119. # at
  120. # :: server id end_log_pos CRC32 0xc2e3f301 Binlog checkpoint mysql-bin.
  121. # at
  122. # :: server id end_log_pos CRC32 0x85f8e293 GTID -- trans
  123. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  124. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  125. /*!100001 SET @@session.server_id=1*//*!*/;
  126. /*!100001 SET @@session.gtid_seq_no=3*//*!*/;
  127. BEGIN
  128. /*!*/;
  129. # at
  130. # :: server id end_log_pos CRC32 0xb6fc6c2b Query thread_id= exec_time= error_code=
  131. use `yinzhengjie`/*!*/;
  132. SET TIMESTAMP=/*!*/;
  133. SET @@session.pseudo_thread_id=/*!*/;
  134. SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=, @@session.check_constraint_c
  135. hecks=/*!*/;SET @@session.sql_mode=/*!*/;
  136. SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
  137. /*!\C utf8mb4 *//*!*/;
  138. SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
  139. SET @@session.lc_time_names=/*!*/;
  140. SET @@session.collation_database=DEFAULT/*!*/;
  141. UPDATE teachers SET gender='F'
  142. /*!*/;
  143. # at
  144. # :: server id end_log_pos CRC32 0x636e91ac Xid =
  145. COMMIT/*!*/;
  146. DELIMITER ;
  147. # End of log file
  148. ROLLBACK /* added by mysqlbinlog */;
  149. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  150. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  151. [root@node105.yinzhengjie.org.cn ~]#

查看"binlog_format=STATEMENT"格式的二进制文件信息(占用较少磁盘空间,但不利于数据恢复)

  1. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. -v --start-position= --stop-position=;
  2. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  3. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  4. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  5. DELIMITER /*!*/;
  6. # at
  7. # :: server id end_log_pos CRC32 0xdbb83886 Start: binlog v , server v 10.2.-MariaDB-log created :: at startu
  8. p# Warning: this binlog is either in use or was not closed properly.
  9. ROLLBACK/*!*/;
  10. BINLOG '
  11. FhHAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  12. AAAAAAAAAAAAAAAAAAAWEcBdEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  13. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  14. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  15. AAAAAAAAAAAEEwQADQgICAoKCgGGOLjb
  16. '/*!*/;
  17. # at
  18. # :: server id end_log_pos CRC32 0xac80a98f Query thread_id= exec_time= error_code=
  19. use `yinzhengjie`/*!*/;
  20. SET TIMESTAMP=/*!*/;
  21. SET @@session.pseudo_thread_id=/*!*/;
  22. SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=, @@session.check_constraint_c
  23. hecks=/*!*/;SET @@session.sql_mode=/*!*/;
  24. SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
  25. /*!\C utf8mb4 *//*!*/;
  26. SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
  27. SET @@session.lc_time_names=/*!*/;
  28. SET @@session.collation_database=DEFAULT/*!*/;
  29. UPDATE teachers SET gender='M' WHERE tid =
  30. /*!*/;
  31. # at
  32. # :: server id end_log_pos CRC32 0x3dd0af4d Xid =
  33. COMMIT/*!*/;
  34. # at
  35. # :: server id end_log_pos CRC32 0x42fa3228 GTID -- trans
  36. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  37. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  38. /*!100001 SET @@session.server_id=1*//*!*/;
  39. /*!100001 SET @@session.gtid_seq_no=6*//*!*/;
  40. BEGIN
  41. /*!*/;
  42. DELIMITER ;
  43. # End of log file
  44. ROLLBACK /* added by mysqlbinlog */;
  45. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  46. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  47. [root@node105.yinzhengjie.org.cn ~]#

根据二进制的起始结束位置查看相应日志记录信息

  1. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. -v --start-datetime='2019-11-04 21:35:00'
  2. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  3. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  4. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  5. DELIMITER /*!*/;
  6. # at
  7. # :: server id end_log_pos CRC32 0xdbb83886 Start: binlog v , server v 10.2.-MariaDB-log created :: at startu
  8. p# Warning: this binlog is either in use or was not closed properly.
  9. ROLLBACK/*!*/;
  10. BINLOG '
  11. FhHAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  12. AAAAAAAAAAAAAAAAAAAWEcBdEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  13. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  14. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  15. AAAAAAAAAAAEEwQADQgICAoKCgGGOLjb
  16. '/*!*/;
  17. # at
  18. # :: server id end_log_pos CRC32 0x7bb72842 GTID -- trans
  19. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  20. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  21. /*!100001 SET @@session.server_id=1*//*!*/;
  22. /*!100001 SET @@session.gtid_seq_no=7*//*!*/;
  23. BEGIN
  24. /*!*/;
  25. # at
  26. # :: server id end_log_pos CRC32 0x02f0ddbe Query thread_id= exec_time= error_code=
  27. use `yinzhengjie`/*!*/;
  28. SET TIMESTAMP=/*!*/;
  29. SET @@session.pseudo_thread_id=/*!*/;
  30. SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=, @@session.check_constraint_c
  31. hecks=/*!*/;SET @@session.sql_mode=/*!*/;
  32. SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
  33. /*!\C utf8mb4 *//*!*/;
  34. SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
  35. SET @@session.lc_time_names=/*!*/;
  36. SET @@session.collation_database=DEFAULT/*!*/;
  37. DELETE FROM teachers
  38. /*!*/;
  39. # at
  40. # :: server id end_log_pos CRC32 0x96cf1a5c Xid =
  41. COMMIT/*!*/;
  42. DELIMITER ;
  43. # End of log file
  44. ROLLBACK /* added by mysqlbinlog */;
  45. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  46. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  47. [root@node105.yinzhengjie.org.cn ~]#
  48. [root@node105.yinzhengjie.org.cn ~]#

根据二进制日志的时间查看相应的日志记录信息

7>.通过二进制日志数据恢复案例

  1. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. | mysql-bin. | |
  8. | mysql-bin. | |
  9. +------------------+-----------+
  10. rows in set (0.00 sec)
  11.  
  12. MariaDB [yinzhengjie]>
  13. MariaDB [yinzhengjie]> FLUSH LOGS;      #为了测试方便,我这里世界使用一个新的日志
  14. Query OK, rows affected (0.01 sec)
  15.  
  16. MariaDB [yinzhengjie]>
  17. MariaDB [yinzhengjie]> SHOW MASTER LOGS;
  18. +------------------+-----------+
  19. | Log_name | File_size |
  20. +------------------+-----------+
  21. | mysql-bin. | |
  22. | mysql-bin. | |
  23. | mysql-bin. | |
  24. | mysql-bin. | |
  25. | mysql-bin. | |
  26. +------------------+-----------+
  27. rows in set (0.00 sec)
  28.  
  29. MariaDB [yinzhengjie]>
  30. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  31. +------------------+----------+--------------+------------------+
  32. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  33. +------------------+----------+--------------+------------------+
  34. | mysql-bin. | | | |
  35. +------------------+----------+--------------+------------------+
  36. row in set (0.00 sec)
  37.  
  38. MariaDB [yinzhengjie]>
  39. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> FLUSH LOGS;      #为了测试方便,我这里世界使用一个新的日志

  1. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  2. +------------------+----------+--------------+------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +------------------+----------+--------------+------------------+
  5. | mysql-bin. | | | |
  6. +------------------+----------+--------------+------------------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> SELECT @@binlog_format;
  11. +-----------------+
  12. | @@binlog_format |
  13. +-----------------+
  14. | STATEMENT |
  15. +-----------------+
  16. row in set (0.00 sec)
  17.  
  18. MariaDB [yinzhengjie]>
  19. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'sql_log_bin';
  20. +---------------+-------+
  21. | Variable_name | Value |
  22. +---------------+-------+
  23. | sql_log_bin | ON |
  24. +---------------+-------+
  25. row in set (0.00 sec)
  26.  
  27. MariaDB [yinzhengjie]>
  28. MariaDB [yinzhengjie]> SELECT * FROM teachers;
  29. Empty set (0.00 sec)
  30.  
  31. MariaDB [yinzhengjie]>
  32. MariaDB [yinzhengjie]> INSERT INTO teachers VALUES (,'Jason Yin',,'F');
  33. Query OK, row affected (0.00 sec)
  34.  
  35. MariaDB [yinzhengjie]>
  36. MariaDB [yinzhengjie]> INSERT INTO teachers VALUES (,'YinZhengjie',,'F');
  37. Query OK, row affected (0.01 sec)
  38.  
  39. MariaDB [yinzhengjie]>
  40. MariaDB [yinzhengjie]> INSERT INTO teachers VALUES (,'Jenny',,'M');
  41. Query OK, row affected (0.00 sec)
  42.  
  43. MariaDB [yinzhengjie]>
  44. MariaDB [yinzhengjie]> SELECT * FROM teachers;
  45. +-----+-------------+-----+--------+
  46. | TID | Name | Age | Gender |
  47. +-----+-------------+-----+--------+
  48. | | Jason Yin | | F |
  49. | | YinZhengjie | | F |
  50. | | Jenny | | M |
  51. +-----+-------------+-----+--------+
  52. rows in set (0.00 sec)
  53.  
  54. MariaDB [yinzhengjie]>
  55. MariaDB [yinzhengjie]> DELETE FROM teachers;
  56. Query OK, rows affected (0.01 sec)
  57.  
  58. MariaDB [yinzhengjie]>
  59. MariaDB [yinzhengjie]>
  60. MariaDB [yinzhengjie]> SHOW MASTER STATUS;
  61. +------------------+----------+--------------+------------------+
  62. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  63. +------------------+----------+--------------+------------------+
  64. | mysql-bin. | | | |
  65. +------------------+----------+--------------+------------------+
  66. row in set (0.00 sec)
  67.  
  68. MariaDB [yinzhengjie]>

执行DML语句

  1. [root@node105.yinzhengjie.org.cn ~]# ls -l /data/logbin/
  2. total
  3. -rw-rw---- mysql mysql Nov : mysql-bin.
  4. -rw-rw---- mysql mysql Nov : mysql-bin.
  5. -rw-rw---- mysql mysql Nov : mysql-bin.
  6. -rw-rw---- mysql mysql Nov : mysql-bin.
  7. -rw-rw---- mysql mysql Nov : mysql-bin.
  8. -rw-rw---- mysql mysql Nov : mysql-bin.index
  9. [root@node105.yinzhengjie.org.cn ~]#
  10. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin. -v > /root/binlog.sql
  11. [root@node105.yinzhengjie.org.cn ~]#
  12. [root@node105.yinzhengjie.org.cn ~]# vim binlog.sql
  13. [root@node105.yinzhengjie.org.cn ~]#
  14. [root@node105.yinzhengjie.org.cn ~]# cat binlog.sql
  15. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  16. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  17. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  18. DELIMITER /*!*/;
  19. # at
  20. # :: server id end_log_pos CRC32 0xe7202c47 Start: binlog v , server v 10.2.-MariaDB-log created ::
  21. # Warning: this binlog is either in use or was not closed properly.
  22. BINLOG '
  23. 4CnAXQ8BAAAA/AAAAAABAAABAAQAMTAuMi4xOS1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
  24. AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
  25. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  26. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  27. AAAAAAAAAAAEEwQADQgICAoKCgFHLCDn
  28. '/*!*/;
  29. # at
  30. # :: server id end_log_pos CRC32 0xd816dae3 Gtid list [--]
  31. # at
  32. # :: server id end_log_pos CRC32 0xd0a61645 Binlog checkpoint mysql-bin.
  33. # at
  34. # :: server id end_log_pos CRC32 0x10d221ba Binlog checkpoint mysql-bin.
  35. # at
  36. # :: server id end_log_pos CRC32 0x85937970 GTID -- trans
  37. /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
  38. /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
  39. /*!100001 SET @@session.server_id=1*//*!*/;
  40. /*!100001 SET @@session.gtid_seq_no=7*//*!*/;
  41. BEGIN
  42. /*!*/;
  43. # at
  44. # :: server id end_log_pos CRC32 0x60abf36f Query thread_id= exec_time= error_code=
  45. use `yinzhengjie`/*!*/;
  46. SET TIMESTAMP=/*!*/;
  47. SET @@session.pseudo_thread_id=/*!*/;
  48. SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=, @@session.check_constraint_c
  49. hecks=/*!*/;SET @@session.sql_mode=/*!*/;
  50. SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
  51. /*!\C utf8 *//*!*/;
  52. SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
  53. SET @@session.lc_time_names=/*!*/;
  54. SET @@session.collation_database=DEFAULT/*!*/;
  55. INSERT INTO teachers VALUES (,'Jason Yin',,'F')
  56. /*!*/;
  57. # at
  58. # :: server id end_log_pos CRC32 0x84f3837a Xid =
  59. COMMIT/*!*/;
  60. # at
  61. # :: server id end_log_pos CRC32 0xc9e4ee56 GTID -- trans
  62. /*!100001 SET @@session.gtid_seq_no=8*//*!*/;
  63. BEGIN
  64. /*!*/;
  65. # at
  66. # :: server id end_log_pos CRC32 0x3b86f49f Query thread_id= exec_time= error_code=
  67. SET TIMESTAMP=/*!*/;
  68. INSERT INTO teachers VALUES (,'YinZhengjie',,'F')
  69. /*!*/;
  70. # at
  71. # :: server id end_log_pos CRC32 0x9b4e967d Xid =
  72. COMMIT/*!*/;
  73. # at
  74. # :: server id end_log_pos CRC32 0xea5e6c78 GTID -- trans
  75. /*!100001 SET @@session.gtid_seq_no=9*//*!*/;
  76. BEGIN
  77. /*!*/;
  78. # at
  79. # :: server id end_log_pos CRC32 0x0a560dec Query thread_id= exec_time= error_code=
  80. SET TIMESTAMP=/*!*/;
  81. INSERT INTO teachers VALUES (,'Jenny',,'M')
  82. /*!*/;
  83. # at
  84. # :: server id end_log_pos CRC32 0x2f20a2ac Xid =
  85. COMMIT/*!*/;
  86. # at
  87. # :: server id end_log_pos CRC32 0xbd542f84 GTID -- trans
  88. /*!100001 SET @@session.gtid_seq_no=10*//*!*/;
  89. BEGIN
  90. /*!*/;
  91. # at
  92. # :: server id end_log_pos CRC32 0x01e0a619 Query thread_id= exec_time= error_code=
  93. SET TIMESTAMP=/*!*/;
  94. #DELETE FROM teachers        #将这条删除语句给注释掉,通过当前二进制文件进行还原。
  95. /*!*/;
  96. # at
  97. # :: server id end_log_pos CRC32 0x77eb3332 Xid =
  98. COMMIT/*!*/;
  99. DELIMITER ;
  100. # End of log file
  101. ROLLBACK /* added by mysqlbinlog */;
  102. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  103. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  104. [root@node105.yinzhengjie.org.cn ~]#
  105. [root@node105.yinzhengjie.org.cn ~]#

查看二进制日志文件,并将DML这种的DELETE语句注释掉

  1. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'sql_log_bin';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | sql_log_bin | ON |
  6. +---------------+-------+
  7. row in set (0.00 sec)
  8.  
  9. MariaDB [yinzhengjie]>
  10. MariaDB [yinzhengjie]> SET sql_log_bin=OFF;        #将二进制日志关闭,因为我们需要手动还原表中的数据。还原过程无需记录日志
  11. Query OK, rows affected (0.00 sec)
  12.  
  13. MariaDB [yinzhengjie]>
  14. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'sql_log_bin';
  15. +---------------+-------+
  16. | Variable_name | Value |
  17. +---------------+-------+
  18. | sql_log_bin | OFF |
  19. +---------------+-------+
  20. row in set (0.00 sec)
  21.  
  22. MariaDB [yinzhengjie]>
  23. MariaDB [yinzhengjie]> SELECT * FROM teachers;        #查看该表数据未空
  24. Empty set (0.00 sec)
  25.  
  26. MariaDB [yinzhengjie]>
  27. MariaDB [yinzhengjie]> SOURCE binlog.sql            #通过咱们修改的数据进行还原
  28. Query OK, rows affected (0.00 sec)
  29.  
  30. Query OK, rows affected (0.00 sec)
  31.  
  32. Query OK, rows affected (0.00 sec)
  33.  
  34. Query OK, rows affected (0.00 sec)
  35.  
  36. Query OK, rows affected (0.00 sec)
  37.  
  38. Query OK, rows affected (0.00 sec)
  39.  
  40. Query OK, rows affected (0.00 sec)
  41.  
  42. Query OK, rows affected (0.00 sec)
  43.  
  44. Query OK, rows affected (0.00 sec)
  45.  
  46. Database changed
  47. Query OK, rows affected (0.00 sec)
  48.  
  49. Query OK, rows affected (0.00 sec)
  50.  
  51. Query OK, rows affected (0.00 sec)
  52.  
  53. Query OK, rows affected (0.00 sec)
  54.  
  55. Query OK, rows affected (0.00 sec)
  56.  
  57. Charset changed
  58. Query OK, rows affected (0.00 sec)
  59.  
  60. Query OK, rows affected (0.00 sec)
  61.  
  62. Query OK, rows affected (0.00 sec)
  63.  
  64. Query OK, rows affected (0.00 sec)
  65.  
  66. Query OK, row affected (0.00 sec)
  67.  
  68. Query OK, rows affected (0.00 sec)
  69.  
  70. Query OK, rows affected (0.00 sec)
  71.  
  72. Query OK, rows affected (0.00 sec)
  73.  
  74. Query OK, rows affected (0.00 sec)
  75.  
  76. Query OK, row affected (0.00 sec)
  77.  
  78. Query OK, rows affected (0.00 sec)
  79.  
  80. Query OK, rows affected (0.00 sec)
  81.  
  82. Query OK, rows affected (0.00 sec)
  83.  
  84. Query OK, rows affected (0.00 sec)
  85.  
  86. Query OK, row affected (0.00 sec)
  87.  
  88. Query OK, rows affected (0.00 sec)
  89.  
  90. Query OK, rows affected (0.00 sec)
  91.  
  92. Query OK, rows affected (0.00 sec)
  93.  
  94. Query OK, rows affected (0.00 sec)
  95.  
  96. ERROR at line in file: 'binlog.sql': No query specified
  97.  
  98. Query OK, rows affected (0.00 sec)
  99.  
  100. Query OK, rows affected (0.00 sec)
  101.  
  102. Query OK, rows affected (0.00 sec)
  103.  
  104. Query OK, rows affected (0.00 sec)
  105.  
  106. MariaDB [yinzhengjie]>
  107. MariaDB [yinzhengjie]> SELECT * FROM teachers;        #还原后发现表中的数据的确存在啦
  108. +-----+-------------+-----+--------+
  109. | TID | Name | Age | Gender |
  110. +-----+-------------+-----+--------+
  111. | | Jason Yin | | F |
  112. | | YinZhengjie | | F |
  113. | | Jenny | | M |
  114. +-----+-------------+-----+--------+
  115. rows in set (0.00 sec)
  116.  
  117. MariaDB [yinzhengjie]>
  118. MariaDB [yinzhengjie]>
  119. MariaDB [yinzhengjie]> SET sql_log_bin=ON;          #做完数据恢复操作后记得将二进制日志文件功能打开。
  120. Query OK, rows affected (0.00 sec)
  121.  
  122. MariaDB [yinzhengjie]>
  123. MariaDB [yinzhengjie]> SHOW VARIABLES LIKE 'sql_log_bin';
  124. +---------------+-------+
  125. | Variable_name | Value |
  126. +---------------+-------+
  127. | sql_log_bin | ON |
  128. +---------------+-------+
  129. row in set (0.00 sec)
  130.  
  131. MariaDB [yinzhengjie]>
  132. MariaDB [yinzhengjie]>

基于编辑后的二进制文件进行数据表的恢复操作

8>.二进制日志事件的格式

  1. [root@node105.yinzhengjie.org.cn ~]# mysqlbinlog /data/logbin/mysql-bin.000005 -v
    ......
    # at
  2. # :: server id end_log_pos CRC32 0x01e0a619 Query thread_id= exec_time= error_code=
  3. SET TIMESTAMP=/*!*/;
  4. DELETE FROM teachers
  5. /*!*/;
  6. ......

  7. 以上记录观点点说明:
  8.   事件发生的日期和时间: ::
  9.   事件发生的服务器标识:server id
  10.   事件的结束位置:end_log_pos
  11.   事件的类型:Query
  12.   事件发生时所在服务器执行此事件的线程的IDthread_id=
  13.   语句的时间戳与将其写入二进制文件中的时间差:exec_time=
  14.   错误代码:error_code=
  15.   事件内容:"DELETE FROM teachers"

9>.清除指定二进制日志(生产环境中建议保留半个月以上的日志)

  1. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. | mysql-bin. | |
  8. | mysql-bin. | |
  9. | mysql-bin. | |
  10. +------------------+-----------+
  11. rows in set (0.00 sec)
  12.  
  13. MariaDB [yinzhengjie]>
  14. MariaDB [yinzhengjie]> PURGE BINARY LOGS TO 'mysql-bin.000003';         #删除"mysql-bin.000003"之前的日志
  15. Query OK, rows affected (0.01 sec)
  16.  
  17. MariaDB [yinzhengjie]>
  18. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  19. +------------------+-----------+
  20. | Log_name | File_size |
  21. +------------------+-----------+
  22. | mysql-bin. | |
  23. | mysql-bin. | |
  24. | mysql-bin. | |
  25. +------------------+-----------+
  26. rows in set (0.00 sec)
  27.  
  28. MariaDB [yinzhengjie]>
  29. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  30. total
  31. -rw-rw---- mysql mysql Nov : mysql-bin.
  32. -rw-rw---- mysql mysql Nov : mysql-bin.
  33. -rw-rw---- mysql mysql Nov : mysql-bin.
  34. -rw-rw---- mysql mysql Nov : mysql-bin.index
  35. MariaDB [yinzhengjie]>
  36. MariaDB [yinzhengjie]> SYSTEM cat /data/logbin/mysql-bin.index
  37. /data/logbin/mysql-bin.
  38. /data/logbin/mysql-bin.
  39. /data/logbin/mysql-bin.
  40. MariaDB [yinzhengjie]>
  41. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> PURGE BINARY LOGS TO 'mysql-bin.000003';         #删除"mysql-bin.000003"之前的日志

  1. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  2. total
  3. -rw-rw---- mysql mysql Nov : mysql-bin.
  4. -rw-rw---- mysql mysql Nov : mysql-bin.
  5. -rw-rw---- mysql mysql Nov : mysql-bin.
  6. -rw-rw---- mysql mysql Nov : mysql-bin.index
  7. MariaDB [yinzhengjie]>
  8. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  9. +------------------+-----------+
  10. | Log_name | File_size |
  11. +------------------+-----------+
  12. | mysql-bin. | |
  13. | mysql-bin. | |
  14. | mysql-bin. | |
  15. +------------------+-----------+
  16. rows in set (0.00 sec)
  17.  
  18. MariaDB [yinzhengjie]>
  19. MariaDB [yinzhengjie]> PURGE BINARY LOGS BEFORE '2019-11-4 22:00:00';
  20. Query OK, rows affected (0.00 sec)
  21.  
  22. MariaDB [yinzhengjie]>
  23. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  24. +------------------+-----------+
  25. | Log_name | File_size |
  26. +------------------+-----------+
  27. | mysql-bin. | |
  28. +------------------+-----------+
  29. row in set (0.00 sec)
  30.  
  31. MariaDB [yinzhengjie]>
  32. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  33. total
  34. -rw-rw---- mysql mysql Nov : mysql-bin.
  35. -rw-rw---- mysql mysql Nov : mysql-bin.index
  36. MariaDB [yinzhengjie]>
  37. MariaDB [yinzhengjie]> SYSTEM cat /data/logbin/mysql-bin.index
  38. /data/logbin/mysql-bin.
  39. MariaDB [yinzhengjie]>
  40. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> PURGE BINARY LOGS BEFORE '2019-11-4 22:00:00';     #删除"2019-11-4 22:00:00"之前的日志

10>.删除所有二进制日志,index文件重新记数

  1.   RESET MASTER [TO #]; 删除所有二进制日志文件,并重新生成日志文件,文件名从#开始记数,默认从1开始,一般是master主机第一次启动时执行,MariaDB10..6开始支持TO #
  1. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. | mysql-bin. | |
  8. | mysql-bin. | |
  9. | mysql-bin. | |
  10. | mysql-bin. | |
  11. | mysql-bin. | |
  12. +------------------+-----------+
  13. rows in set (0.00 sec)
  14.  
  15. MariaDB [yinzhengjie]>
  16. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  17. total
  18. -rw-rw---- mysql mysql Nov : mysql-bin.
  19. -rw-rw---- mysql mysql Nov : mysql-bin.
  20. -rw-rw---- mysql mysql Nov : mysql-bin.
  21. -rw-rw---- mysql mysql Nov : mysql-bin.
  22. -rw-rw---- mysql mysql Nov : mysql-bin.
  23. -rw-rw---- mysql mysql Nov : mysql-bin.
  24. -rw-rw---- mysql mysql Nov : mysql-bin.
  25. -rw-rw---- mysql mysql Nov : mysql-bin.index
  26. MariaDB [yinzhengjie]>
  27. MariaDB [yinzhengjie]> RESET MASTER;                #删除所有二进制文件,并重新生产日志文件,文件名称从默认从1开始计数。
  28. Query OK, rows affected (0.00 sec)
  29.  
  30. MariaDB [yinzhengjie]>
  31. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  32. total
  33. -rw-rw---- mysql mysql Nov : mysql-bin.
  34. -rw-rw---- mysql mysql Nov : mysql-bin.index
  35. MariaDB [yinzhengjie]>
  36. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  37. +------------------+-----------+
  38. | Log_name | File_size |
  39. +------------------+-----------+
  40. | mysql-bin. | |
  41. +------------------+-----------+
  42. row in set (0.00 sec)
  43.  
  44. MariaDB [yinzhengjie]>
  45. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> RESET MASTER;        #删除所有二进制文件,并重新生产日志文件,文件名称从默认从1开始计数。

  1. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  2. +------------------+-----------+
  3. | Log_name | File_size |
  4. +------------------+-----------+
  5. | mysql-bin. | |
  6. | mysql-bin. | |
  7. | mysql-bin. | |
  8. | mysql-bin. | |
  9. | mysql-bin. | |
  10. | mysql-bin. | |
  11. | mysql-bin. | |
  12. +------------------+-----------+
  13. rows in set (0.00 sec)
  14.  
  15. MariaDB [yinzhengjie]>
  16. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  17. total
  18. -rw-rw---- mysql mysql Nov : mysql-bin.
  19. -rw-rw---- mysql mysql Nov : mysql-bin.
  20. -rw-rw---- mysql mysql Nov : mysql-bin.
  21. -rw-rw---- mysql mysql Nov : mysql-bin.
  22. -rw-rw---- mysql mysql Nov : mysql-bin.
  23. -rw-rw---- mysql mysql Nov : mysql-bin.
  24. -rw-rw---- mysql mysql Nov : mysql-bin.
  25. -rw-rw---- mysql mysql Nov : mysql-bin.index
  26. MariaDB [yinzhengjie]>
  27. MariaDB [yinzhengjie]> RESET MASTER TO ;        #删除所有二进制日志并指定起始文件名称数字为3
  28. Query OK, rows affected (0.01 sec)
  29.  
  30. MariaDB [yinzhengjie]>
  31. MariaDB [yinzhengjie]> SYSTEM ls -l /data/logbin/
  32. total
  33. -rw-rw---- mysql mysql Nov : mysql-bin.
  34. -rw-rw---- mysql mysql Nov : mysql-bin.index
  35. MariaDB [yinzhengjie]>
  36. MariaDB [yinzhengjie]> SHOW BINARY LOGS;
  37. +------------------+-----------+
  38. | Log_name | File_size |
  39. +------------------+-----------+
  40. | mysql-bin. | |
  41. +------------------+-----------+
  42. row in set (0.00 sec)
  43.  
  44. MariaDB [yinzhengjie]>

MariaDB [yinzhengjie]> RESET MASTER TO 3;        #删除所有二进制日志并指定起始文件名称数字为3

六.中继日志(reley log)

  1.   主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件。

七.客户端命令默认保存日志

  1. 默认再用户家目录,有保存客户端所有执行的SQL命令哟,其名称为"~/.mysql_history "

  2.   [root@node105.yinzhengjie.org.cn ~]# ll ~/.mysql_history
  3.   -rw------- root root Nov : /root/.mysql_history
  4.   [root@node105.yinzhengjie.org.cn ~]#

MySQL/MariaDB数据库的各种日志管理的更多相关文章

  1. MySQL/MariaDB数据库的用户和权限管理

    MySQL/MariaDB数据库的用户和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.元数据数据库(mysql) 系统授权表(均在mysql数据库中): db hos ...

  2. MySQL/MariaDB数据库的MHA实现高可用实战

      MySQL/MariaDB数据库的MHA实现高可用实战 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL高可用常见的解决方案 1>.Multi-Master ...

  3. MySQL/MariaDB数据库的PROXY实现读写分离

    MySQL/MariaDB数据库的PROXY实现读写分离 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ProxySQL概述 1>.各家互联网公司读写分离的解决方案 m ...

  4. MySQL/MariaDB数据库的主从复制

     MySQL/MariaDB数据库的主从复制  作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制概述 1>.传统扩展方式 垂直扩展(也叫向上扩展,Sacle ...

  5. MySQL/MariaDB数据库的索引工作原理和优化

    MySQL/MariaDB数据库的索引工作原理和优化 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了 ...

  6. MySQL/MariaDB数据库的查询缓存优化

    MySQL/MariaDB数据库的查询缓存优化 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL架构 Connectors(MySQL对外提供的交互接口,API): ...

  7. MySQL/MariaDB数据库的存储引擎

    MySQL/MariaDB数据库的存储引擎 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL体系结构 连接管理模块: 负责接收远程用户的连接. 线程管理模块: 维护 ...

  8. MySQL/MariaDB数据库的复制监控和维护

      MySQL/MariaDB数据库的复制监控和维护 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.清理日志 1>.删除指定日志文件名称之前的日志(也可用基于时间) M ...

  9. MySQL/MariaDB数据库的复制加密

      MySQL/MariaDB数据库的复制加密 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的安全问题 1>.基于SSL复制 在默认的主从复制过程或远程连接 ...

随机推荐

  1. 【转】kettle7.1资源库无法打开,找不到connect按钮的问题处理

    转自:https://www.aboutyun.com/home.php?mod=space&uid=71645&do=blog&id=3535 kettle是一个比较好用的E ...

  2. 定制flask-admin的主页

    flask也用了很久了,一般配合flask-admin设置后台. 但是flask-admin设置的都是自己加入的,对某些model进行管理. 下面介绍如何定制flask-admin的首页. 原来我们引 ...

  3. maven:不再支持源选项 5。请使用 6 或更高版本。

    解决办法: 在pom.xml中添加maven的配置 <maven.compiler.source>11</maven.compiler.source> <maven.co ...

  4. [转]java 根据模板文件生成word文档

    链接地址:https://blog.csdn.net/ai_0922/article/details/82773466

  5. react 常用组件整理

    0.es6语法糖 deptList = deptnameList.filter(item => item.rel ===this.state.thUser.orgId);//返回一个新的数组对象 ...

  6. canal使用入坑,亲测 !!!!

    原来用windows本地运行,在本地模拟客户端和服务端,鼓捣了一天都没运行成功...最后放弃了,改用 windows的客户端+ubuntu的服务端(客户端程序运行在window,canal监听运行在U ...

  7. npm 创建vue项目(指定目录进行创建)

    1.先安装node,js和npm 检验mpm 和node的方式是 npm -v  / node -v 2.安装最新版本 npm install @vue/cli -g 意外安装老版本的是代码  npm ...

  8. 《ucore lab1 exercise4》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 题目:分析bootloader加载ELF格式的OS的过程 通过阅读bootmain.c,了解bootloader如何加载ELF文件.通过分析源代 ...

  9. java修饰符的权限范围

    java有四个修饰符,分别为public/protected/default/private,这四个修饰符的权限范围是不一样的. public修饰的成员,在同类.同包.子类(继承自本类).其他包中都可 ...

  10. Linux安装zookeeper3.5.6

    依赖JRE[我这边是JRE8] 一,先在https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/下载apache-zookeeper- ...