c mysql自动安装_MySQL的源码安装及使用UDFs进行数据自动更新的教程

本文详细介绍了如何在Linux环境中源码安装MySQL,并配置相关依赖。接着,通过UDFs(用户定义函数)实现了Memcached与MySQL的自动更新,简化了数据同步过程。在MySQL中创建和测试了相关触发器,确保在Memcached出现问题时数据仍能正常插入到MySQL。
摘要由CSDN通过智能技术生成

MySQL的源码安装

1. 安装依赖组件

# yum install gcc gcc-c++ ncurses-devel perl -y

2. 安装cmake

# wget http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz

# tar zxvf cmake-2.8.12.tar.gz

# cd cmake-2.8.12

# ./bootstrap

# make && make install

3. 安装bison

# wget http://ftp.gnu.org/gnu/bison/bison-3.0.2.tar.gz

# tar zxvf bison-3.0.2.tar.gz

# cd bison-3.0.2

# ./configure

# make && make install

4. 创建用户的相应目录

# groupadd mysql

# useradd -g mysql mysql

# mkdir -p /data/mysql/

# mkdir -p /data/mysql/data/

# mkdir -p /data/mysql/log/

5. 获取mysql安装包并安装

# wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.24.tar.gz

# tar zxvf mysql-5.5.24.tar.gz

# cd mysql-5.5.24

# cmake \

-DCMAKE_INSTALL_PREFIX=/data/mysql \

-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/data/mysql/data \

-DMYSQL_TCP_PORT=3306 \

-DENABLE_DOWNLOADS=1

# make && make install

6. 修改目录权限

# chmod +w /data/mysql/

# chown -R mysql:mysql /data/mysql/

# ln -s /data/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

# ln -s /data/mysql/mysql.sock /tmp/mysql.sock

7. 初始化数据库

# cp -rp /data/mysql/support-files/my-medium.cnf /etc/my.cnf

# cp -rp /data/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

# /data/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/data/mysql --datadir=/data/mysql/data

8. 启动mysql服务

# chmod +x /etc/init.d/mysqld

# vi /etc/init.d/mysqld -->

basedir=/data/mysql

datadir=/data/mysql/data

# chkconfig --add mysqld

# service mysqld start

9. 完成配置

# /data/mysql/bin/mysqladmin -uroot -p password 'PASSWD'

# echo "export PATH=/data/mysql/bin:$PATH" >> ~/.bash_profile

# source ~/.bash_profile

UDFs实现Memcached与Mysql的自动更新

UDFs是User Defined Functions的缩写,表示MYSQL的用户定义函数,应用程序可以利用这些函数从MYSQL5.0以上版本的数据库中访问Memcached写入或者获取的数据。此外,MYSQL从5.1版本开始支持触发器,从而可以在触发器中使用UDFs直接更新Memcached的内容,这种方式降低了应用程序设计和编写的复杂性。

1.安装

wget https://launchpad.net/libmemcached/1.0/0.34/+download/libmemcached-0.34.tar.gz

yum install gcc44 gcc44-c++ libstdc++44-devel

export CC=/usr/bin/gcc44

export CXX=/usr/bin/g++44

./configure --prefix=/soft/libmemcached -disable-64bit CFLAGS="-O3 -march=i686" \

--with-memcached=/root/libmemcached-1.0.7/memcached

make && make install

wget https://launchpad.net/memcached-udfs/trunk/1.1/+download/memcached_functions_mysql-1.1.tar.gz

./configure --prefix=/soft/UDFS/memcache_mysql \

--with-mysql=/soft/mysql/bin/mysql_config \

--libdir=/soft/mysql/lib/plugin \

--with-libmemcached=/soft/UDFS/libmemcached

make && make install

mysql -uroot -pmysql < /sql/install_functions.sql

mysql -uroot -pmysql -se "select name,dl from mysql.func"

select memc_servers_set('127.0.0.1:11211');//如果mysql restart,需要重新运行这句以建立与memcached之间的关系

select memc_server_count();

select memc_set('urls:sequence', 0);

select memc_list_behaviors()\G//修改memcached参数的行为

select memc_servers_behavior_set('MEMCACHED_BEHAVIOR_NO_BLOCK','1');

select

memc_servers_behavior_set('MEMCACHED_BEHAVIOR_TCP_NODELAY','1');

设置MEMCACHED_BEHAVIOR_NO_BLOCK为打开状态,这样在memcached出现问题时(不能连接时)数据继续插入到

mysql中,报错提示,如果不设置此值,如果memcached失败,mysql需要等到timeout才可以插入到表中。

2.测试:

drop table if exists urls;

create table urls (

id int(3) not null auto_increment,

url varchar(64) not null default '',

primary key (id)

);

select memc_servers_set('localhost:11211');

select memc_set('urls:sequence', 0);

DELIMITER |

DROP TRIGGER IF EXISTS url_mem_insert |

CREATE TRIGGER url_mem_insert

BEFORE INSERT ON urls

FOR EACH ROW BEGIN

SET NEW.id= memc_increment('urls:sequence');

SET @mm= memc_set(NEW.id, NEW.url);

END |

DROP TRIGGER IF EXISTS url_mem_update |

CREATE TRIGGER url_mem_update

BEFORE UPDATE ON urls

FOR EACH ROW BEGIN

SET @mm= memc_replace(OLD.id, NEW.url);

END |

DROP TRIGGER IF EXISTS url_mem_delete |

CREATE TRIGGER url_mem_delete

BEFORE DELETE ON urls

FOR EACH ROW BEGIN

SET @mm= memc_delete(OLD.id);

END |

DELIMITER ;

insert into urls (url) value ('http://google.com');

insert into urls (url) value ('http://lycos.com/');

insert into urls (url) value ('http://tripod.com/');

insert into urls (url) value ('http://microsoft.com/');

insert into urls (url) value('http://slashdot.org');

insert into urls (url) value ('http://mysql.com');

select * from urls;

select memc_get('urls:1');

select memc_get('urls:2');

select memc_get('urls:3');

select memc_get('urls:4');

select memc_get('urls:5');

select memc_get('urls:6');

update urls set url= 'http://mysql.com/sun' where url = 'http://mysql.com';

select url from urls where url = 'http://mysql.com/sun';

select memc_get('urls:6');

delete from urls where url = 'http://microsoft.com/';

select * from urls where url='http://microsoft.com/';

select memc_get('urls:4');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值