设为首页 收藏本站
查看: 1488|回复: 0

[经验分享] mysql数据库-基于amoeba读写分离

[复制链接]

尚未签到

发表于 2018-10-10 13:22:28 | 显示全部楼层 |阅读模式
  环境:
  主机A( huangzp2):172.16.115.157
  主机B( huangzp3):172.16.115.100
  主机C( huangzp4):172.16.115.87
  说明:

  •   依赖于主从结构
  •   需要中间件(连接两个独立的应用程序或独立的系统,即使没有相同的接口,也能为他们交换数据)实现,如tomcat、weblogic、数据库中间件
  •   mysql proxy,支持读写分离、负载均衡、故障转移,缺点:性能差,不支持大数量转发,需要用到lua脚本
  •   atlas,性能较差,相应时间较长,不支持动态参数的配置加载,即先关闭数据库,不适用在线业务;
  •   amoeba,阿里研发和使用的,除了支持读写分离,也支持数据库分区、分表操作,对数据库性能较小,因为研发工程师跳槽至盛大,怕数据泄露,不用
  •   cobar,阿里现在在使用的中间件,半开源软件,有较多限制)
  1. 主从机器AB上安装mysql和mysql-server,修改配置文件和授权、查看状态
  yum install -y mysql mysql-server
  主上A:修改配置文件vim /etc/my.cnf,重启,授权(所有权限,更方便)、状态
DSC0000.png


  grant all privileges on *.* to 'silen'@'%'>  说明:
DSC0001.png

DSC0002.png

  从上B:修改配置文件vim /etc/my.cnf,重启,填写Master.info信息、开启slave,查看状态
DSC0003.png

DSC0004.png

DSC0005.png

  主上A:
DSC0006.png

  从上B:
DSC0007.png

  2. 从上也需要授权,让中间件能过访问

  grant all privileges on *.* to 'silen'@'%'>
DSC0008.png

  3. 中间件服务器设置
  3.1 环境:
  (1)先安装gcc环境;
  yum install -y gcc*
  (2)需要获得amoeba主程序:amoeba-mysql-1.3.1-BETA.zip
  下载链接:http://101.110.118.21/jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/amoeba-mysql-1.3.1-BETA.zip
  (3)java的安装包:jdk-7u40-linux-x64.tar.gz
  下载链接:
  http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
  3.2 配置全局变量
  3.2.1 创建 /amoeba目录,将java解压到该目录下
  mkdir /amoeba
  tar -zxvf jdk-7u40-linux-x64.tar.gz -C /amoeba/
  3.2.2 目录标题较长,做个软链接,即可
  ln -s jdk1.7.0_40/ jdk
  3.2.3 编辑全局变量
  vim /etc/profile配置java选项(java的东西都需要声明)
  JAVA_HOME=/amoeba/jdk
  export JAVA_HOME
  PATH=$JAVA_HOME/bin:$PATH
  export PATH

  >
  export>
DSC0009.png DSC00010.png

  说明:

  •   JAVA_HOME表示java的目录位置,设置为全局变量,这样其他shell也可以使用
  •   java目录下的工具脚本加入到系统环境变量中,便于执行命令,也升级为全局变量
  •   CLASSPATH表示java类的库的环境变量,把当前目录.,java下的tool.jar,dt.jar加入到变量中(Linux下用冒号隔开,Windows下用分号隔开),也升级为全局变量
  3.2.4. 刷新下全局变量文件
  source /etc/profile
  3.2.5 验证java是否可用
DSC00011.png

  3.3 安装配置amoeba
  3.3.1 解压至/usr/local/amoeba目录下
  unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba
  3.3.2 添加命令执行权限,便于调用命令
  chmod -R +x /usr/local/amoeba/bin/
  3.3.3 修改amoeba主配置文件
  vim /usr/local/amoeba/conf/amoeba.xml
  ...(服务器性能部分设置)
  A. 找到:
  
  去注释,改amoeba的服务器(中间件)ip为:
  172.16.115.87
DSC00012.png

  B. 找到:
  
  去注释,修改amoeba的root登录密码为123456:
  123456
DSC00013.png

  ...(amoeba每一个数据库服务器,对应一个dbServer)(数据库服务器列表部分设置)
  A.  下找到:
  127.0.0.1
  将ip地址改为主一的ip(端口和数据库名可以默认3306、test):
  172.16.115.157
  B. 找到:
  root
  将用户名改为授权的zhangshan:
  silen
  C. 找到:
  
  去掉注释,将密码改为123456:
  123456
DSC00014.png

  D. 找到:
  
  修改dbserver池子名为master(定义池子下面哪些server属于master这个池子,用来扩展服务器):
  
  E. 找到:
  server1
  如果master池子新增多台主服务器,比如server1(已在master池子中了)、server2、server3,则修改为:
  server1,server2,server3
DSC00015.png

  F. 因为有两台数据库服务器,已经设置了主服务器,所以需复制主服务器的dbServer,作为模板,修改从服务器dbServer
  复制(64行-109行),粘贴在...范围内:
  ...
  (1)修改dbServer的名称为server2:
  dbServer name="server2"
  (2)ip地址修改为192.168.9.252:
  172.16.115.100
DSC00016.png

  (3)在下,修改池子名称为slave:
  
  (4)slave池子下server主机名字修改为server2:
  server2
DSC00017.png

  最后跳出:
  A. 找到:
  server1
  将单台服务器的名称修改为池子名称(如果有多台主机,依次轮询去分配),作为默认访问的服务器:
  master
  B. 找到:
  
  去掉注释,写入池改为master,读取池改为slave:
  master
  slave
DSC00018.png

  3.4 查看并编辑amomeba的执行脚本文件:
  vim /usr/local/amoeba/bin/amoeba
  A. 找到:
  DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"
  修改为:
  DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
DSC00019.png

  3.5 启动amoeba程序,并查看进程
  说明:nohup命令表示,放在后台启动,即使采用远程连接,远程断了,也能运行
  nohup bash -x /usr/local/amoeba/bin/amoeba &
DSC00020.png

  4. 中间件服务器,安装mysql,不需要安装mysql-server,登录amoeba
  说明:用户为配置文件中指定的用户和密码,默认端口为8066,登录的其实中间件,调用的是主从服务上的mysql,这里安装的mysql只是一个登录的工具
  yum install mysql -y
  mysql -u root -p123456 -h172.16.115.87 -P 8066
DSC00021.png

  测试:实际生产环境中,不需要操作!!!
  停用从服务器slave,即stop slave,在主和从服务器上的test库中创建一个a1表(表名需一致,因为是主从),分别插入一条数据master和slave
  主上:
DSC00022.png

DSC00023.png

DSC00024.png


  从上:
DSC00025.png

  结论:中间件查看a1表中数据,反复查询都是slave,表明,查询数据是从从服务器中获得
DSC00026.png

  中间件,往a1表中插入一条数据amoeba
DSC00027.png

  结论:在主服务器上的a1表中看到amoeba数据,表明写数据是在主服务器中写入
  主上:
DSC00028.png

  从上:
DSC00029.png

  最后分别删掉主和从上的test库中的tb1表,从上开启slave



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620008-1-1.html 上篇帖子: 关于MySQL的编译安装和基本配置 下篇帖子: MySQL基础命令和mysqladmin命令的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表