• 使用二进制文件
  • 二进制日志的格式
  • 从二进制日志中提取语句
  • 忽略要写入二进制日志的数据库
  • 迁移二进制日志

一、bin log 文件

MySQL 中的二进制日志,对说的就是 mysql-binlog 文件。 如在我win10上data文件夹下的binlog日志。
每次mysql服务启动或者是当bin-log达到了最大大小,都会从新去创建一个新的binlog.xxxxx 文件。
binlog日志会去记录,写的操作以及DDL语句,而select的操作是不会被记录的
image.png

1. binlogs 的作用

1.1 备份和恢复

1.2 主从配置

2. 配置和常用SQL

2.1 先简单看一下我自己 Mysql-8.0.12 的配置

  1. # mysql 命令行
  2. [mysql]
  3. default-character-set=utf8
  4. # mysql 服务端
  5. [mysqld]
  6. port=3306
  7. default_authentication_plugin=mysql_native_password
  8. basedir=D:/phpstudy_pro/Extensions/MySQL8.0.12/
  9. datadir=D:/phpstudy_pro/Extensions/MySQL8.0.12/data/
  10. character-set-server=utf8
  11. default-storage-engine=InnoDB
  12. collation-server=utf8_unicode_ci
  13. init_connect='SET NAMES utf8'
  14. innodb_buffer_pool_size=64M
  15. innodb_flush_log_at_trx_commit=1
  16. innodb_lock_wait_timeout=120
  17. innodb_log_buffer_size=4M
  18. innodb_log_file_size=256M
  19. interactive_timeout=120
  20. join_buffer_size=2M
  21. key_buffer_size=32M
  22. log-error="D:/phpstudy_pro/Extensions/MySQL8.0.12/data"
  23. log_error_verbosity=1
  24. max_allowed_packet=16M
  25. max_connections=100
  26. max_heap_table_size=64M
  27. myisam_max_sort_file_size=64G
  28. myisam_sort_buffer_size=32M
  29. read_buffer_size=512kb
  30. read_rnd_buffer_size=4M
  31. server_id=1
  32. # 本次添加的 binlog 目录
  33. log_bin="D:/phpstudy_pro/Extensions/MySQL8.0.12/data/binlogs"
  34. skip-external-locking=on
  35. sort_buffer_size=256kb
  36. table_open_cache=256
  37. thread_cache_size=16
  38. tmp_table_size=64M
  39. wait_timeout=120
  40. # 客户端
  41. [client]
  42. port=3306
  43. default-character-set=utf8

2.2 验证是否创建了二进制日志

  1. mysql> show variables like 'log_bin%';
  2. +---------------------------------+-----------------------------------------------------------+
  3. | Variable_name | Value |
  4. +---------------------------------+-----------------------------------------------------------+
  5. | log_bin | ON |
  6. | log_bin_basename | D:\phpstudy_pro\Extensions\MySQL8.0.12\data\binlogs |
  7. | log_bin_index | D:\phpstudy_pro\Extensions\MySQL8.0.12\data\binlogs.index |
  8. | log_bin_trust_function_creators | OFF |
  9. | log_bin_use_v1_row_events | OFF |
  10. +---------------------------------+-----------------------------------------------------------+

2.3 查看当前binlog的设置的最大值

-- 一旦其中的某个日志文件达到 max_binlog_size 设置的值或者
-- 服务从新启动了都会创建一个新的 binlog 文件,并且会被添加到 log_bin_index 文件中。
-- 查看当前的 binlog 日志 文件的最大值(单位应该是字节)、
mysql> select @@max_binlog_size;
+-------------------+
| @@max_binlog_size |
+-------------------+
|        1073741824 |
+-------------------+

2.4 查看当前服务器上的所有的binlog

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| binlogs.000001 |       155 |
| binlogs.000002 |       155 |
+----------------+-----------+

mysql> show master logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| binlogs.000001 |       155 |
| binlogs.000002 |       155 |
+----------------+-----------+

2.5 设置当前会话的binlog

-- 禁用当前会话的二进制日志
SET SQL_LOG_BIN = 0;

-- 重新启用
SET SQL_LOG_BIN = 1;

2.6 查看当前binlog文件的位置

mysql> SHOW MASTER STATUS;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| binlogs.000004 |      155 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+

2.7 移至下一个二进制文件

mysql> SHOW BINARY LOGS;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| binlogs.000002 |       155 |
| binlogs.000003 |       155 |
+----------------+-----------+
2 rows in set (0.00 sec)

mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.27 sec)

mysql> SHOW BINARY LOGS;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| binlogs.000002 |       155 |
| binlogs.000003 |       200 |
| binlogs.000004 |       155 |
+----------------+-----------+
3 rows in set (0.00 sec)

3. 清理binlog文件