1.神通数据库BINLOG日志接口
1.1 开启BINLOG日志
- 开启binlog功能,打开参数配置工具,修改数据库参数enable_binlog=true,重启数据库。
- 检查SHOW_BINLOG_EVENTS函数包含REDO_SQL、USER_NAME列,如果不包含,请先升级神通数据库后台,SHOW_BINLOG_EVENTS函数详细说明参见神通数据库帮助文档。
1.2 BINLOG日志接口
1.2.1 描述
神通数据库提供binlog读取接口,v_sys_binary_logs视图可以查看binlog文件和大小,show_binlog_events函数根据参数(文件、偏移量等)可以读取binlog文件的event;通过监视v_sys_binary_logs视图感知数据变化,再根据show_binlog_events函数可以获悉实时增加语句。文件和偏移量可作为日志增量的位置位点标记。
1.2.2 接口
- 查询所有的binlog日志
select * from v_sys_binary_logs;
- 事件查询(EVENT事件可以理解为每个ddl或者dml)
查询的结果已经按照事务排序。
SELECT * FROM SHOW_BINLOG_EVENTS(varchar_expression, int_expression, int_expression, int_expression);
参数:
varchar_expression
要查看BINLOG文件的绝对路径,路径可以从V_SYS_BINARY_LOGS视图中获取。
int_expression
要查看文件的起始位置,如果设置为0,将从文件头开始读取。如果用户设定该参数,该参数必须是某个EVENT的偏移位置,不可以随意设定,会导致读取出错。
int_expression
从起始位置的Event偏移来读取BINLOG日志,跳过指定偏移的Event开始读取BINLOG日志。
int_expression
读取多少个EVENT,默认是0,会读取所有的EVENT。
- 查询结果字段
返回与text表达式相同的类型。
- LOGFILE_NAME binlog文件
- EVENT_TYPE 事件类型
QUERY_EVENT:
"QUERY"; //事务开始(看event_info=begin)或者是执行的sql
XID_EVENT:
"XID"; //事务结束
WRITE_ROWS_EVENT:
"INSERT_ROW";
DELETE_ROWS_EVENT:
"DELETE_ROW";
UPDATE_ROWS_EVENT:
"UPDATE_ROW";
LOBHEAD_EVENT:
"LOB_HEAD";
LOBBODY_EVENT:
"LOB_BODY";
FUNCTION_EVENT:
"FUNCTION_EVENT"
- USER_NAME 执行语句的用户
- END_LOG_POS 偏移量,可以根据此值标记,获取增量日志、
- CSF 如果语句过长,超过65535,会分多行显示。0表示语句完整,1表示语句未完,与直到该值为0的语句,拼接成完整的语句。
- REDO_SQL 当前执行的sql
- EVENT_INFO 事件信息
可以查询到执行的具体语句情况
grant、drop、create可以
insert、delete、update,显示insert/delete/update row
2. 读写分离集群BINLOG日志接口
2.1 开启BINLOG日志
同1.1
2.2 日志接口
2.2.1 描述
binlog读取接口与神通单库有区别,使用lsn号作为日志增量的位置位点标记,lsn号是全局唯一并且递增的。show_binlog_events函数根据参数(lsn号)读取binlog文件的event, show_binlog_events函数可以获悉实时增加语句。
2.2.2 接口
1. 查询日志的最新标记
select END_LOG_POS from SHOW_BINLOG_EVENTS('A',0,0,0) order by END_LOG_POS desc limit 1 --END_LOG_POS是最近的LSN号
或者第一次:
select START_LSN from V_SYS_HA_SLAVE_INFO where STATUS='master' --START_LSN是最近的LSN号
2. 查询事件(EVENT)
SELECT * FROM SHOW_BINLOG_EVENTS(varchar_expression, int_expression, int_expression, int_expression);
参数:
varchar_expression
不再使用,可以传任意字符串,比如’A’。
int_expression
起始LSN号,从此位置开始查找日志数据。LSN号是全局唯一递增的。
int_expression
从起始位置的Event偏移来读取BINLOG日志,跳过指定偏移的Event开始读取BINLOG日志。
int_expression
读取多少个EVENT,默认是0,会读取所有的EVENT。
举例:
SELECT * FROM SHOW_BINLOG_EVENTS(‘A’, 1190, 0,10);
从lsn=1190号开始查找到10个event。
3.查询结果字段
LOGFILE_NAME 保留字段,无意义
其他字段同1.2.2