Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7613077
  • 博文数量: 1769
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16352
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1769)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: Mysql/postgreSQL

2008-06-11 11:21:15

1、安装环境
centos4.5
2、mysql-5.1的安装
mysql-5.1刚出来rc版,原先持续好久的beta版
# wget
# tar zxf mysql-5.1.22-rc.tar.gz
# cd mysql-5.1.22-rc
# ./configure --prefix=/usr/local/mysql-5.1.22 --with-charset=utf8 --with-extra-charsets=all --with-big-tables --with-comment --with-mysqld-ldflags=-all-static --enable-assembler --disable-shared --with-pthread
# make && make install
# ln -s /usr/local/mysql-5.1.22 /usr/local/mysql
# cd /usr/local/mysql
# mkdir etc ; cp share/mysql/my-large.cnf etc/my.cnf
# useradd mysql -s /sbin/nologin
# chown -R mysql.mysql .
# su -m mysql -c './bin/mysql_install_db'                  //安装授权表
# su -m mysql -c './bin/mysqld_safe &'                  //启动mysql服务
# /usr/local/mysql/bin/mysql                           //进入msyql
2、mysql-proxy安装
编译mysql-proxy 0.6.0需要Lua 5.1和glib 2.6.0以上版本
下载安装Lua 5.1
# wget         
# tar zxf lua-5.1.2.tar.gz && cd lua-5.1.2 && make linux install
centos4.5本身的glib是2.4的,glib升级非常麻烦,mysql-proxy 0.6.0源码的配置无法通过。
# tar zxf mysql-proxy-0.6.0.tar.gz && cd mysql-proxy-0.6.0
# LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm" ./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql-5.1.22/bin/mysql_config
checking for LUA... yes
checking for GLIB... Requested 'glib-2.0 >= 2.6.0' but version of GLib is 2.4.7
configure: error: Package requirements (glib-2.0 >= 2.6.0) were not met:
后来直接下载了一个RHEL4的二进制版本
# wget
# tar mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz
# cp mysql-proxy-0.6.0-linux-rhas4-x86/sbin/mysql-proxy /usr/local/mysql/bin
# /usr/local/mysql/bin/mysql-proxy &           //在后台启动,默认启动时4040和4041端口
# /usr/local/mysql/bin/mysql -P4040            //一样能进入mysql
mysql-proxy用法
  --proxy-address=             代理的ip:port,默认是0.0.0.0:4040
  --proxy-read-only-backend-addresses=    代理的只读连接ip:port 默认0.0.0.0:4042(试了一下好像没有作用)
  --proxy-backend-addresses=    db server的地址,默认是127.0.0.1:3306,可以指定多个来做failover和load balance
  --proxy-profiling             enable profiling of queries (没试)
  --proxy-fix-bug-25371         fix bug #25371 (mysqld > 5.1.12) for older libmysql versions (没试)
  --proxy-lua-script=           lua脚本文件

3、测试
分别在192.168.1.122和192.168.189上安装mysql5.1数据库,启动并添加一个用户
mysql>grant all privileges on test.* to identified by '123456';
 
在192.168.1.122的test数据库建立一个表hehe
create table hehe(id int(5),hehe char(255));
在192.168.1.189的test数据库建立一个表hehe
create table hehe(id int(5),name char(255));
两个表明一样却有不同的字段。
在192.168.1.104启动mysql-proxy
# LUA_PATH="/usr/local/share/mysql-proxy/?.lua" /usr/local/mysql/bin/mysql-proxy --proxy-read-only-backend-addresses=192.168.1.189:3306 --proxy-backend-addresses=192.168.1.122:3306 --proxy-lua-script=share/mysql-proxy/rw-splitting.lua &
假设104也有mysql客户端
# mysql -uabc -p123456 -h192.168.1.104 -P4040 test
对表进行查询
mysql> desc hehe;
出现的表描述是189上的就对了。
对数据进行写操作
mysql> create table jiji(id int(5),name char(255));
然后去122上看看,如果122上多了一张表就对了
总结:这个mysql数据库前端代理能对用户的mysql操作进行读写分离,对程序是透明的,减少了开发上的难度。
 
阅读(1386) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~