MySQL:如何编写daemon plugin(11)
NULL, NULL, 0, &modes);
该变量属于枚举类型,每个session拥有自己的值,并且可在运行时修改;注意,当为session变量时,我们需要通过THDVAR(thd,mode)这样一个宏来获取相应的变量值
另外,对于Plugin中的系统变量无需加互斥锁,MySQL会自动给我们加上。
实例:启动一个后台线程,每隔5秒监控当前进程的状态(记录到log中),使用系统变量来控制是否记录log,并在show status显示记录的次数
#include <string.h>
#include <plugin.h>
#include<mysql_version.h>
#include <my_global.h>
#include <my_sys.h>
#include<sys/resource.h>
#include <sys/time.h>
#define MONITORING_BUFFER1024
/*以下三个变量在sql/mysqld.cc中声明,因此需要extern*/
extern ulong thread_id; //当前最大线程id
extern uint thread_count; //当前线程数
extern ulong max_connections;//最大允许连接数
static pthread_tmonitoring_thread; //线程id
static int monitoring_file; //日志文件fd
static my_bool monitor_state= 1; //为1表示记录日志,为0则否
static ulong monitor_num = 0; //后台线程循环次数
static struct rusage usage;
/*创建系统变量,可以通过配置文件或set global来修改*/
MYSQL_SYSVAR_BOOL(monitors_state,monitor_state,
相关新闻>>
- 发表评论
-
- 最新评论 更多>>