• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    linux mysql proxy 的安装,配置,以及读写分离

      in  数据库      Tags: 

    一,mysql proxy是什么,干什么用的

    mysql Proxy就是这么一个中间层代理,简单的说,mysql Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负 载平衡。对于应用来说,mysql Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多 个proxy的连接参数即可。

    mysql replication 数据同步

    mysql replication 数据同步

    上图中,web到底连接那个数据库,这个要程序员自己写的代友来决定的,现在是二台mysql服务器,如果有多台或者是N台呢,靠用php代码来管理连接数据库,就很郁闷了。

    mysql proxy 图示

    mysql proxy 图示

    mysql proxy就很好解决了这个问题,对于程序端而言,web端的请求,只要到mysql proxy的连接池就OK了,剩下的工作就交给mysql proxy了。对于程序代码管理来说就简单多了。个人觉得这一点最值得借用的了。

    二,mysql proxy的安装

    我在安装mysql proxy的时候,提示要安装lua,其他的没有什么提示,不过我在网上看到好多要装这个,那个。

    那些东西,我都已经装过了,装系统的时候,就自带的装了。

    a,安装pkg-config

    Ubuntu安装: apt-get install pkg-config

    CentOS安装:yum install pkg-config

    archlinux安装:pacman -S pkg-config

    如果你要手动装,自己下

    b,安装libevent

    c,安装glib

    d,安装lua

    怎么安装同a

    e,安装mysql在这儿不多说了,一搜网上都是

    f,二进制包mysql proxy

    wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

    #解压到mysql下面,因为这个东西可以看成是mysql的一个插件了。

    tar zxvf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz -C /usr/local/mysql

    mv /usr/local/mysql/mysql-proxy-0.6.0-linux-rhas4-x86  /usr/local/mysql/mysql_proxy

    cd /usr/local/mysql/mysql_proxy/sbin/

    echo $PATH
    /usr/local/mmseg/bin:/usr/local/mmseg/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/share/eclipse:/usr/bin/perlbin/site:/usr/bin/perlbin/vendor:/usr/bin/perlbin/core

    cp mysql-proxy /usr/sbin               #加到环境变成里面去

    查看一下是否安装成功

    [root@BlackGhost sbin]#  mysql-proxy --help
    Usage:
    mysql-proxy [OPTION...] - MySQL Proxy

    Help Options:
    -?, --help                                          Show help options
    --help-all                                          Show all help options
    --help-admin                                        Show options for the admin-module
    --help-proxy                                        Show options for the proxy-module

    Application Options:
    -V, --version                                       Show version
    --daemon                                            Start in daemon-mode
    --pid-file=<file>                                   PID file in case we are started as daemon

    三,启动mysql proxy

    #注意:LUA_PATH="/usr/local/mysql/mysql-proxy/share/mysql-proxy/*.lua"

    启动前,增加一下LUA的环境变量,不然用mysql proxy启动mysql时,会报找不到lua,会报以下错误

    [root@BlackGhost share]# mysql -u root -h 127.0.0.1 -P 8888
    (lua-error) [/usr/local/mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua]
    ...mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua:29: module 'proxy.commands' not found:
    no field package.preload['proxy.commands']
    no file './proxy/commands.lua'
    no file '/data1/mysqldev/mysql-proxy/inst/lua/share/lua/5.1/proxy/commands.lua'
    no file '/data1/mysqldev/mysql-proxy/inst/lua/share/lua/5.1/proxy/commands/init.lua'
    no file '/data1/mysqldev/mysql-proxy/inst/lua/lib/lua/5.1/proxy/commands.lua'

    mysql-proxy --proxy-address=127.0.0.1:8888 --proxy-read-only-backend-addresses=192.168.1.75:3306 --proxy-backend-addresses=192.168.1.91:3306 --proxy-lua-script=/usr/local/mysql/mysql_proxy/share/mysql-proxy/rw-splitting.lua &

    [root@BlackGhost sbin]# ps -e|grep mysql-proxy

    15804 pts/1    00:00:00 mysql-proxy

    四,测试mysql proxy

    1,在192.168.1.75的test数据库中,建一个test表,结构一样

    2,在192.168.1.91的test数据库中,建一个test表,结构一样

    mysql -u root -h 127.0.0.1 -P 8888            #利用连接池,进入数据库

    use test

    INSERT INTO `test` ( `name`, `sex`) VALUES ('tank', 1)

    你会发现这条数据会出现在192.168.1.91的mysql的数据库中。



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开