美文网首页
Ubuntu14.04 64位+altas+mysql读写分离

Ubuntu14.04 64位+altas+mysql读写分离

作者: Gavinjou大笨象 | 来源:发表于2017-04-04 00:54 被阅读0次

    这次我来撘下比较流行的读写分离配置,现在好像很火的样子,能大大提升mysql的能力,所以我就学一下。

    一,材料准备

    Altas2.2

    三台主机

    1. altas代理中间件服务器 192.168.1.1
    2. 主mysql服务器 192.168.1.2
    3. 从mysql服务器 192.168.1.3

    Jmeter
    还得自备JDBC桥包

    二,安装mysql

    三台服务器都需要安装mysql,你会为代理服务器为什么也要装,主要是该服务器会利用某一个mysql的某个包,所以还是得装

    sudo apt-get update
    sudo apt-get install mysql-server mysql-client
    

    然后根据自己的mysql版本配置UTF-8编码,我的是5.5.6

    mysql > select version(); 
    mysql > show variables like 'character_set_%';#查看编码
    
    sudo stop mysql
    
    sudo su
    vim /etc/mysql/my.cnf
    #在[client]段增加下面代码
    default-character-set=utf8
    #在[mysqld]段增加下面的代码
    default-storage-engine=INNODB
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    sudo start mysql
    

    三,配置主从复制

    我只是做了个最简单的主从复制,所以想要理解深入的要自己去查看,然后一定要保持所有服务器的3306都可以连通

    首先配置主从服务器,代理的mysql服务器不用管,不会用到它

    vim /etc/mysql/my.cnf 
    #添加或修改(如果文件上有)以下属性
    bind-address            = 0.0.0.0
    server-id=1 #主是1,从是2,不要搞混,而且必须唯一
    log-bin=mysql-bin 
    binlog-ignore-db = mysql,information_schema
    
    sudo restart mysql
    

    master授权一个账号给slave读取数据
    账:root
    密:root(identified by 密码)

    主服务器操作

    mysql -uxxx -pxxx
    mysql > grant all privileges on *.* to 'root'@'192.168.1.3' identified by 'root';
    mysql > flush privileges;
    

    从机操作测试能否正常连接主机的mysql,能正常连接说明没问题,否则请自行检查端口,这步必须先过,否则后面就会很折磨你自己为什么弄不了

    mysql -uroot -proot -h192.168.1.2
    

    好回到主机,这两个属性很重要,等下要用

    mysql > show master status;
    

    再去到从机,按照自己配置的账密,还有刚刚那两个属性,配置以下命令输入从机

     change master to
     master_host='192.168.1.2',#主机
     master_user='root',#账
     master_password='root',#密
     master_log_file='mysql-bin.000001',#二进制文件
     master_log_pos=333;
    

    重启从机mysql,并输入一下命令,然后会看到两个YES,那就OK了,如果没有,那就检查防火墙和端口

    sudo restart mysql
    mysql -uxxx -pxxx
    mysql > start slave;
    mysql > show slave status\G;
    

    读写分离参考链接推荐:

    http://www.jianshu.com/p/bcd01f163bae
    http://blog.csdn.net/lc0817/article/details/51163268

    四,测试主从复制

    首先我们,我们先把主从机的数据库打开

    mysql > show databases;
    

    然后我们再主机输入以下命令

    mysql > create database test;
    mysql > use test;
    mysql > create table student ( id int );
    mysql > insert into student values(1);
    

    然后分别在主从机下输入以下命令

    mysql > show databases;
    mysql > use test;
    mysql > select * from student;
    

    好了恭喜,读写分离配置初步主从复制完毕。

    五,Altas配置

    首先分别进入主从机,申请同样账号密码的mysql用户提供给代理服务器使用,我觉得最好和刚才主从链接的账号密码一样咯,这样好记

    mysql > grant all privileges on *.* to 'root'@'192.168.1.1' identified by 'root';
    

    上传Atlas-2.2-debian7.0-x86_64.deb到代理机上。

    还记得我们刚刚给代理机的账号密码吧?
    账:root
    密:root (记住这个密码,最主要和主机有关系)
    然后打开代理机终端输入以下命令

    cd /usr/local/
    dpkg -i Atlas-2.2-debian7.0-x86_64.deb
    rm -rf Atlas-2.2-debian7.0-x86_64.deb 
    cd mysql-proxy
    bin/encrypt root#这是刚刚所说的密码
    #DAJnl8cVzy8=  把这个密码记住,等等配置conf
    cd conf
    vim test.cnf
    

    配置以下属性

    [mysql-proxy]
    #这是管理代理的账号密码,这个感觉默认就行了,看自己
    #管理接口的用户名
    **admin-username **= user
    
    #管理接口的密码
    **admin-password **= pwd
    
    #实现管理接口的Lua脚本所在路径
    admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
    
    #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
    #设置为自己的主机
    **proxy-backend-addresses** = 192.168.1.2:3306
    
    #Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
    #设置只读服务器,其中@后面代表权值,权值越大,抽中为读的几率越高
    **proxy-read-only-backend-addresses** = 192.168.1.2:3306@1,192.168.1.3:3306@2
    
    #设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true
    daemon = true
    
    #设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true
    keepalive = true
    
    #工作线程数,推荐设置与系统的CPU核数相等
    event-threads = 4
    
    #日志级别,分为message、warning、critical、error、debug五个级别
    log-level = message
    
    #日志存放的路径
    log-path = /usr/local/mysql-proxy/log
    
    #实例名称,用于同一台机器上多个Atlas实例间的区分
    instance = test
    
    #Atlas监听的工作接口IP和端口
    proxy-address = 0.0.0.0:1234
    
    #Atlas监听的管理接口IP和端口
    admin-address = 0.0.0.0:2345
    
    #连接池的最小空闲连接数,应设为event-threads的整数倍,可根据业务请求量大小适当调大或调小
    min-idle-connections = 8
    
    #分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
    #tables = person.mt.id.3
    
    #用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,此设置项用于多个用户名同时访问同一个Atlas实例的情况,若只有一个用户名则不需要设置该项
    #设置刚刚经过转码的密码,其实我也不太了解官方写的什么意思
    **pwds** = root:DAJnl8cVzy8=
    
    #默认字符集,若不设置该项,则默认字符集为latin1
    **charset** = utf8
    
    #允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接
    #client-ips = 127.0.0.1, 192.168.1
    
    #Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置
    #lvs-ips = 192.168.1.1
    

    OK,基本配置完成

    六,Altas测试

    代理服务器下输入以下命令

    /usr/local/mysql-proxy/bin/mysql-proxyd test start
    

    再看看代理服务器能不能正常链接两个服务器,在代理服务器上输入这个命令

    mysql -h192.168.1.1 -P2345 -uuser -ppwd
    mysql > select \* from help;
    mysql > select \* from backends; 
    

    可以看到,配置基本完成,其实基本读写分离完成了也可以用了,只要把URL换成这个就行了,和平时链接没区别,
    jdbc:mysql://192.168.1.1:1234/test?characterEncoding=UTF-8,
    并用主机的账号密码登录,如果还是不放心,那就看下面这点吧

    七,Altas读写分离测试

    这里我就说步骤了。

    打开apache-jmeter-3.1\bin\jmeter.bat

    主从机上安装sar命令,然后同时输入sar命令来监看这个动态过程

    sudo apt-get install sysstat
    sar -n DEV 1 10000
    

    可以看到现在很平稳,那么我们回到Jmerter,执行查询语句,留意两机的变化

    可以看到,从机几乎2比1主机,也就是说读的话,从机占了绝大部分,而主机只需分担一点点压力就好了,和我们的分压理论下一致了,那么我们再测一下写又会是怎么样

    你会看到,怎么从机也会写呢,因为主从复制,那么主机写的时候,从机也在读主机数据,肯定也会运行啊?对把,我们这就达到了读写分离的状态,而且写的明显比读的高,这就表明了读写已经分离了,好了完成了!

    参考链接推荐:

    https://my.oschina.net/ydsakyclguozi/blog/402444
    http://www.cnblogs.com/yyhh/archive/2015/12/29/5084844.html

    我已经尝试了好多种中间件,好像mycat,可是我觉得mycat有点深度,如果不好好研究一时没法用,而且我觉得太麻烦了,不能读出大量数据,有限制化,我的业务不能用这个中间件了。其他各有优缺,以待分析。很多人会有这个问题,就是同步延迟,其实就好像分布式一样,会有io传输这种问题,不管哪个中间件,也不太能很好解决这个问题,异步是无法避免,看您怎么看待了。

    相关文章

      网友评论

          本文标题:Ubuntu14.04 64位+altas+mysql读写分离

          本文链接:https://www.haomeiwen.com/subject/nvwoottx.html