1. SQL 语句的几种类型
首先介绍一下,对于一个
SQL 语句,它常常被分为以下几种类型:
- DDL(Data Definition Language,数据定义语言):用来操作数据库、表、列等,比如 CREATE、ALTER、DROP。
- DML( Data Manipulation Language,数据操作语言 ):用来操作表里的数据,比如 INSERT、UPDATE、DELETE。
- DCL( Data Control Language,数据控制语言): 用来操作访问权限等,比如 GRANT
- DQL( Data Query Language,数据查询语言):用来查询数据,比如 SELECT。
- TCL( Transaction Control Language,事务控制语言):用于数据库的事务管理,比如 COMMIT,ROLLBACK。
而 binlog,即 binary log,是 MySQL 的二进制日志文件,这个文件记录了我们所有的 DDL,DML,TCL 等操作,比如表的创建,数据的插入、更新和删除等。
比如我们下面执行的创建数据库、表,插入、更新数据,在 binlog 配置开启的情况下,都会被记录到 binlog 中:
CREATE DATABASE db_test DEFAULT CHARACTER set utf8;
create table users (
id int not null auto_increment primary key,
name varchar(20) not null,
email varchar(100) default ""
);
insert into users (name, email) values("张三", "12345@qq.com"), ("李四", "345123@qq.com");
update users set email = "4123@qq.com" where id=1;
2.binlog 配置和查看
2.1 binlog 查看配置
我们可以通过下面的命令查看 binlog 日志是否打开,以及存储的文件夹:
show variables like '%log_bin%';
显示的内容如下:
其主要字段含义分别如下:
- log_bin 表示是否开启 binlog。
- log_bin_basename 表示的是 binlog 所在的文件夹。
- log_bin_index 表示的是 binlog 的索引文件,我们可以在其中找到所有的 binlog 日志。
sql_log_bin用于主从复制,这个参数关闭后,主库的改动不会记录到 binlog,不会复制到从库。
log_bin_basename 指向的是 binlog 存储的文件夹,在后面我们查看 binlog 具体内容的时候,会需要进入到这个文件夹进行查看。
2.2 binlog 查看
我们可以通过下面的命令查看全部的 binlog 文件,在这里,一个 binlog 版本就是一个文件:
show binary logs;
show master logs;
上面这两条命令都可以显示出 binlog 文件,内容显示如下: