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

这次我来撘下比较流行的读写分离配置,现在好像很火的样子,能大大提升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传输这种问题,不管哪个中间件,也不太能很好解决这个问题,异步是无法避免,看您怎么看待了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 《老男孩Linux运维》笔记MySQL-Documentation 概述 MySQL介绍 MySQL属于传统关系型...
    Zhang21阅读 994评论 0 9
  • !/bin/sh 02 03 mysql-proxy This script starts and stops t...
    __XY__阅读 817评论 0 15
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,169评论 11 349
  • 谢谢各位原创作者的奉献, 因为有你, 技术更精彩~持续更新中~ 强波 (阿里云OS平台部-Cloud Engine...
    菜刀文阅读 669评论 1 1