解压 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz
tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz
cp -R mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql
新建或编辑 /etc/mysql-proxy.cnf 文件,添加以下内容 ( 具体参数根据实际情况修改 ) :
vi /etc/mysql-proxy.cnf
[mysql-proxy]
admin-username = zhangdongyu
admin-password = 123123
daemon = true
keepalive = true
proxy-backend-addresses = 192.168.0.88:3306
proxy-read-only-backend-addresses = 192.168.0.88:3307
proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
admin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua
log-file = /usr/local/proxy-mysql/cn.log
log-level = debug
主要参数注解:
proxy-backend-addressesmysql 主库(写)地址
proxy-read-only-backend-addresses mysql 从库(读)地址
proxy-lua-script 读写分离脚本
admin-lua-script admin 脚本
admin-username 数据库用户名(主从上都需建立相同用户)
admin-password 数据库密码
daemon daemon 进程运行
keepalive 保持连接(启动进程会有 2 个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)
编辑 profile/.bash_profile 脚本
vi /etc/profile( 或者 .bash_profile)
LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"
export LUA_PATH
export PATH=$PATH:/usr/local/proxy-mysql/bin
:wq
source /etc/profile
为方便建立建立 mysql-proxy.sh 脚本
#!/bin/bash
mode=$1
if [ -z "$mode" ] then
mode="start"
fi
case $mode in
start)
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &
stop)
killall -9 mysql-proxy
restart)
if $0 stop then
$0 start
else
echo "Restart failed!"
exit 1
fi
esac
exit 0
启动 mysql-proxy
sh 脚本
启动: ./mysql-proxy.sh 或 ./mysql-proxy.sh start
启动日志
重启: ./mysql-proxy.sh restart
停止: ./mysql-proxy.sh stop
测试:
为达到测试效果,修改 admin-sql.lua 脚本以下两行
vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, # 修改最小连接为 1
max_idle_connections = 2, # 修改最大连接为 2
is_debug = true#debug 为 true
}
end
重启 mysql-proxy 代理
开启两个终端分别连接代理:
ONE : ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
TWO : ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
可看到连接成功信息:
操作 ONE 客户端:
执行 select 语句观察数据库 log 文件
select * from z_member_info
观察主从库日志文件,发现查询发生在主库?
主库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql/localstate/mysqlexecute.log
这是因为 mysql-proxy 代理会检测客户端连接,当连接没有超过 min_idle_connections 预设值时,不会进行读写分离,即查询操作会发生到主库上。
操作 TWO 客户端:
执行 select 语句观察数据库 log 文件
select * from z_member_info
观察主从库日志文件,发现主库没有任何记录,查询日志记录在从库。
从库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql3307/localstate/mysqlexecute.log
操作两个终端进行 insert 操作,会发现写操作始终被主库( 3306 )日志文件记录。
至此 mysql-proxy 安装测试完成。
注:生产环境一定要根据实际情况配置相关文件,至于 lua 文件强烈推荐读者自行,目前正在研究 lua 文件的优化与定制,不久会发上来。
一、启动mysql服务(1) rpm方式安装的mysql
-设置自动启动
#ntsysv --level 3
-手工启动
#service mysqld start
(2) 编译安装的mysql
-设置自动启动
#vi /etc/rc.d/rc.local
.......
/usr/local/mysql/bin/mysqld_safe&
........
-手工启动
#/usr/local/mysql/bin/mysqld_safe&
查看文章
mysql服务器(一)2009-06-15 11:18mysql服务器
一. 认识和安装mysql
1. 认识mysql
(1) mysql是一种网络数据库服务器产品
(2) mysql是开源的免费的
(3) mysql是关系型数据库管理系统,支持SQL.
(4) mysql无溢出漏洞
(5) mysql提供丰富的API
(6) mysql提供丰富的数据类型
(7) mysql具较强的移值性
2. 安装mysql软件
(1) rpm安装方式
#rpm -ivh perl-CGI....
perl-DBI....
perl-DBD-MySQL.....
mysq-....
mysql-server....
mysql-devel.....
(2) 编译安装方式
#groupadd mysql
#useradd -g mysql mysql
#tar -xzvf mysql-4.1.19.tar.gz
#cd mysql-4.1.19
#./configure --prefix=/usr/local/mysql
#make
#make install
#cp support-files/my-medium.cnf /etc/my.cnf
#cd /usr/local/mysql
#bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chgrp -R mysql .
3. 启动mysql服务
(1) rpm方式安装的mysql
-设置自动启动
#ntsysv --level 3
-手工启动
#service mysqld start
(2) 编译安装的mysql
-设置自动启动
#vi /etc/rc.d/rc.local
.......
/usr/local/mysql/bin/mysqld_safe&
........
-手工启动
#/usr/local/mysql/bin/mysqld_safe&
二、mysql的管理
1. 如何连接mysql服务器
(1) Linux客户机
#mysql [-h服务器地址] [-u用户名] [-p口令] [数据库名]
实例:
#mysql
mysql>
#mysql -h192.168.3.1 -uadmin -plinux
mysql>
(2) Windows客户机
-利用第三方mysql客户端软件
-利用浏览器连接(服务器必须安装web管理平台,如:phpmyadmin/webmin)
注:webmin的安装方法
#tar -xzvf webmin-1.25.tar.gz
#cd webmin-1.25
#./setup.sh
2. 数据库管理
(1) 认识mysql的数据库
-mysql服务器默认建立两个数据库,分别是mysql和test其中mysql是系统数据库test是学习数据库
-mysql服务器上的每个数据库都会在相应路径中建立与库同名的目录
-每个数据库可包含若干张表,每张表由*.frm、*.MYD和*.MYI文件构成
(2) 创建数据库
#mysql
mysql>create database 数据库名
实例:
mysql>create database dbinfo
(3) 查看服务器上已创建的数据库
#mysql
mysql>show databases
(4) 打开数据库
#mysql
mysql>use 数据库名;
实例:
mysql>use db1
(5) 删除数据库
#mysql
mysql>drop database 数据库名
实例:
mysql>drop database dbinfo
3. 数据表的管理
(1) mysql提供的数据类型
-数字型
TINYINT 1字节
SMALLINT 2字节
MEDIUMINT 3B
INT 4B
BIGINT 8B
FLOAT[(M,D)] 4B
DOUBEL[(M,D)] 8B
DECIMAL(M,D)
-字符串型
char(M)
varchar(M)
tinytext
text
mediumtext
longtext
enum('..',...)
set(....)
-日期时间型
date
datetime
time
(2) 创建表
#mysql
mysql>use 数据库
mysql>create table 表名 (
列名 数据类型 属性/约束
.......
.....
) 表选项
列属性/约束:
null/not null 是否允许为null
default 值 定义列的默认值
primary key 定义主键
check 表达式 定义列的取值范围
REFERENCES 表名(列名) 定义外部键
表选项:
TYPE=HEAP/ISAM/MYISAM/INNOBDB/BDB/MERGE //定义数据表引擎类型
实例:
mysql>use db1
mysql>create table users (
->id varchar(10) primary key,
->name varchar(20) not null,
->password varchar(30) not null) TYPE=MYISAM
(3) 查看数据库中已建立的表
#mysql
mysql>use 数据库
mysql>show tables
(4) 查看表的结构
#mysql
mysql>use 数据库
mysql>describe 表名
(5) 修改表的结构
#mysql
mysql>use 数据库
mysql>alter table 表名
add 列定义//添加列
|drop 列名//删除列
|add index 索引名 (列名) //添加索引
|drop index 索引名 //删除索引
|modify 列定义 //修改列的定义
|add primary key (列名) //添加主键
|drop primary key //删除主键
|rename 新表名 //修改表名称
实例:mysql>alter table users add memo text
(6) 向表中插入数据
#mysql
mysql>insert into 表名[(列名,...n)] values (值,...)
实例:
mysql>insert into users values ('0001','user1','linux','system admin')
(7) 查看表中数据
#mysql
mysql>select 列名 [as 别名] [,...n]|*|表达式
->from 表名[,...n]
->[where 条件表达式]
->[order by 列名]
->[group by 列名]
->[having 条件表达式]
实例:
mysql>select * from users
mysql>select user,password from users
mysql>select user,password from users where name='user1'
mysql>select * from users order by id desc
mysql>select 性别, count(*) as 人数 from 学生 group by 性别
(8) 删除表中数据
#mysql
mysql>delete from 表名 [where 条件表达式]
实例:
mysql>delete from users
mysql>delete from users where name='user1'
(9) 修改表中数据
#mysql
mysql>update 表名 set 列名=值 [where 条件表达式]
实例:
mysql>update users set password='132' where name='user1'
(10) 删除表
#mysql
mysql>drop table 表名
实例:
mysql>drop table users
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)