纵有疾风起
人生不言弃

mysql使用触发器trigger操作memcache

  触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的
特殊的存储过程
,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,
当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规
则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。


  对memcache的操作一般都是放程序里面去操作的,新增,更新,删除什么的,如果能利用mysql来对memcache进行操作,那就更好,代码端就会简单一点,但是利用mysql来操作memcache,比较适合实现简单的方式,下面说一下安装的过程和遇到的问题,在看安装过程的之前,我觉得应当先看一下,我安装时候所遇到的问题,这样你可以避免掉,少走一点弯路.

一,安装所要的软件

mysql5.1以前版本:http://downloads.mysql.com/archives/

libevent下载:wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

libmemcached下载:http://download.tangent.org/

memcached下载:http://pecl.php.net/package/memcached

memcached_functions_mysql下载:http://download.tangent.org/

下载东西的时候,也是有技巧的,下载的东西,不要太新,太新了不然这个不行,那个也不行,太老了也不行,太老了,这个装不了,那个也装不了,所以要找一个稳定版的,一般正版软件的话,会标识basic版,stable版之类的.

二,mysql的安装

mysql的安装方式有很多,你可以用系统的软件管理包来安装,不同的版本,软件管理工具是不一样的.

redhat,centos 有yum,ubuntu 有apt get,arch有pacman等,用系统自带的管理工具安装比较简单,如果是自己下载怎么安装的呢,mysql的官方网站提供了三种mysql的安装源码,一种是.rpm的,一种是二进制的,一种是要自己编译的.

1,用rpm来按装,代码如下:

rpm -i MySQL-server-VERSION.i386.rpm

rpm -i MySQL-client-VERSION.i386.rpm

2,二进制包进行安装

二进制包安装有一个缺点,就是要安装到什么地方,都是死的,安装过程中有问题的,查看一下是不是装了glibc,以及版本是不是太低了,代码如下:

  1. groupadd mysql   
  2. useradd -g mysql mysql   
  3. tar zxvf /path/to/mysql-VERSION-OS.tar.gz -C /usr/local   
  4. cd /usr/local   
  5. mv mysql-VERSION-OS ./mysql   
  6. cd /usr/local/mysql   
  7. scripts/mysql_install_db        –user=mysql   
  8. chown -R mysql:mysql /usr/local/mysql   
  9. bin/mysqld_safe –user=mysql        &   

3,源码自己编译,代码如下:

  1. groupadd mysql   
  2. useradd -g mysql mysql   
  3. tar zxvf /path/to/mysql-VERSION-OS.tar.gz   
  4. cd /mysql-VERSION-OS   
  5. ./configure –prefix=/usr/local/mysql  //路径可自定义   
  6. make && make install   
  7. cp support-files/my-medium.cnf /etc/my.cnf   
  8. cd /usr/local/mysql   
  9. bin/mysql_install_db        –user=mysql   
  10. chown -R mysql:mysql /usr/local/mysql   
  11. bin/mysqld_safe –user=mysql        &  

安装遇难问题:安装mysql至少要5.1版本以上的,服务器端,还是客户端都要,装完memcached_functions_mysql后,调用libmemcached模块时会报错的,代码如下:

  1. [root@BlackGhost sql]# /usr/local/mysql/bin/mysql <install_functions.sql 
  2. ERROR 1126 (HY000) at line 1: Can’t open shared library ‘libmemcached_functions_mysql.so’ (errno: 22 /usr/local/mysql/lib/mysql/plugin/libmemcached_functions_mysql.so: undefined symbol: memcached_string_append) 

上面是用mysqld_safe来启动mysql的,也可以用mysql.server来启动,它在/usr/local/mysql/share/mysql下面,你也可以把mysql.server考到开机启动的目录下面,并且重命名为httpd.

  1. [root@BlackGhost mysql]# ./mysql.server stop 
  2. Shutting down MySQL.. SUCCESS! 
  3. [root@BlackGhost mysql]# ./mysql.server start 
  4. Starting MySQL. SUCCESS! 

二,关于libevent和memcached的安装

请参考: memcached 安装

三,libmemcached的安装,代码如下:

  1. tar zxvf libmemcached-0.37.tar.gz   
  2. cd libmemcached-0.37   
  3. ./configure –prefix=/usr/local/libmemcached37 –with-memcached   
  4. make && make install   

安装遇到的问题:当时我下载的是libmemcached-0.42.tar.gz,安装memcached_functions_mysql过程中遇到这样一个问题.

servers.c:263:28: error: ‘memcached_st’ has no member named ‘hosts’

servers.c:264:28: error: ‘memcached_st’ has no member named ‘hosts’

后来我在网上查一下,libmemcached-0.37没有这个问题,搞得我很无语,难道不是向下兼容的吗?

四,安装memcached_functions_mysql,代码如下:

  1. tar xzf memcached_functions_mysql-0.9.tar.gz   
  2. cd memcached_functions_mysql-0.9   
  3. ./configure –prefix=/usr/local/memcache_mysql –with-mysql-config=/usr/local/mysql/bin/mysql_config –w
未经允许不得转载:起风网 » mysql使用触发器trigger操作memcache
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录