• mysql读写分离-mysql-proxy的配置


    读写分离介绍

    读写分离适合于读特别多的场景,一台只写,一台只读,提高读的效率。

    实现的思路

    前提:

    读写分离建立在两台机器上,并且这两台机器是做了主从复制的,主库只写,从库只读,从而实现的。

    实现:

    第一种:

    在主库创建一个只写的用户,而从库创建一个只写的用户,让程序去连接不同的服务器可达到读写分离的效果。

    第二种:

    通过代理软件,这种的好处是程序不需要关心写和读的操作分别连接的哪台服务器,只管往代理机器发即可,代理软件进行判断发往不同的mysql服务器。

    通过代理实现的软件有:mysql-proxy,amoeba

    代理方式的实现

    图解:

     

    环境:

    需要开三台机器。

    192.168.101  # 主库-只写

    192.168.102  # 从库-只读

    192.168.100  # 代理

    安装lua脚本语言:

    # 这个是mysql-proxy需要的

    官方下载地址:

    http://www.lua.org/ftp/

    (1)安装依赖
    yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make readline-devel -y
    
    (2)下载包
    wget http://www.lua.org/ftp/lua-5.3.5.tar.gz -P /opt/
    
    (3)解压包
    cd /opt/
    tar xf lua-5.3.5.tar.gz
    
    (4)修改Makefile文件
    cd /opt/lua-5.3.5/
    vi Makefile
    # 设置 INSTALL_TOP= /usr/local/lua
    
    (5)编译
    make linux && make install
    
    (6)添加环境变量
    vim /etc/profile
    
    添加:
    export LUA_HOME=/usr/local/lua
    export PATH=$PATH:$LUA_HOME/bin
    
    环境变量生效:
    source /etc/profile

    安装mysql-proxy:

    (1)    下载mysql-proxy包

    wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -P /opt/

    (2)    解压包和创建软连接

    tar xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

    ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy085

    (3)    创建logs目录

    mkdir /opt/mysql-proxy085/logs

    (4)    添加环境变量

    echo "PATH=/opt/mysql-proxy085/bin/:$PATH" >> /etc/profile

    source /etc/profile

    (5)    配置代理文件

    vim /etc/mysql-proxy.cnf

    配置内容:

    [mysql-proxy]
    # 运行mysql-proxy用户
    user=root
    # mysql-proxy连接后端mysql服务器的用户
    admin-username=mysql_proxy_user
    # mysql-proxy连接后端mysql服务器的密码
    admin-password=123456
    # 代理的监听地址端口,默认端口4040
    proxy-address=0.0.0.0:3307
    #指定后端主master写入数据
    proxy-backend-addresses=192.168.1.101:3306
    #指定后端从slave读取数据
    proxy-read-only-backend-addresses=192.168.1.102:3306
    #指定读写分离配置文件位置
    proxy-lua-script=/opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua
    #日志位置
    log-file=/opt/mysql-proxy085/logs/mysql-proxy.log
    #定义log日志级别,由高到低分别有(error|warning|info|message|debug)
    log-level=debug
    #以守护进程方式运行
    daemon=true
    #mysql-proxy崩溃时,尝试重启
    keepalive=true

    # 配置参数自行修改

    (6)    修改配置文件权限

    chmod 660 /etc/mysql-proxy.cnf

    (7)    主库添加授权用户

    grant all privileges on *.* to 'mysql_proxy_user'@'192.168.1.%' identified by '123456';

    flush privileges;

    (8)    启动代理

    mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

    (9)    连接通过代理账户连接代理开启的ip及端口

    注:前提你连接的这台机器得弄个mysql客户端

    # 测试的话:mysql包解压了,添加环境变量即可

    # 后端的话:直接通过模块就连接1.100机器3307端口即可

    mysql -umysql_proxy_user -p123456 -h192.168.1.100 --port=3307

    (10) 成功

    注:lua是必须要安装的

     

    试验结果:

    注:写操作,主从两台机器都会操作,因为他们是主从复制的。

    想要看出效果需要修改lua脚本,因为它有限制(表示多少连接才开启读写分离):

    vim /opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua

    # min_idle_connnections参数表示最少多少个连接,才开始读写分离

    查询读写次数的sql语句:

    show global status where Variable_name in('com_select','com_insert','com_delete','com_update');

    show global staus like 'com_select';  # 单个的

  • 相关阅读:
    微信公众平台开发最佳实践
    微信公众平台运营规范
    微信智能开放平台
    微信公众平台模版消息
    Ace
    ZigBee介绍
    基于微信控制的智能家居产品
    微信商业模式的挑战点
    微信公众平台开发接口PHP SDK完整版
    微信公众平台开发(84) 小i机器人
  • 原文地址:https://www.cnblogs.com/zezhou/p/11525081.html
Copyright © 2020-2023  润新知