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

[经验分享] mysql+amoeba读写分离

[复制链接]

尚未签到

发表于 2018-10-6 13:15:26 | 显示全部楼层 |阅读模式
  mysql+amoeba读写分离
  一 简介:
  Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
  Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。
  优势
  Amoeba主要解决以下问题:
  a). 数据切分后复杂数据源整合
  b). 提供数据切分规则并降低数据切分规则给数据库带来的影响
  c). 降低数据库与客户端连接
  d). 读写分离路由
  不足
  a)、目前还不支持事务
  b)、暂时不支持存储过程(近期会支持)
  c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
  d)、暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致:
  二 准备
  1三台centos7系统(注意我是安装的minimal的系统,需要通yum安装一些依赖包如:,yum  -y  groupinstall development tools,现网建议安装DVD版)
  Amoeba:192.168.161.141
  Msysql master:192.168.161.142
  Mysql slave:192.168.161.143
  2 Amoeba上安装jdk-7u80-linux-x64.tar.gz、amoeba-mysql-3.0.5-RC-distribution.zip
  3 Mysql上面安装MySQL-client-5.6.6_m9-1.rhel5.x86_64.rpm、
  MySQL-server-5.6.6_m9-1.rhel5.x86_64.rpm
  三 关闭防火墙和selinux
  systemctl stop firewalld
  systemctl disable firewalld
  

setenforce 0  

  四 在161.142和161.143上面安装mysql,并配置主从同步。
  1 161.142和161.143上面都安装mysql
  rpm -ivh MySQL-server-5.6.6_m9-1.rhel5.x86_64.rpm
  rpm -ivh MySQL-client-5.6.6_m9-1.rhel5.x86_64.rpm
  2修改配置文件
  Mysql master(161.142):
  [root@localhost home]# cat /etc/my.cnf
  [mysqld]
  log-bin=mysql-bin
  server-id=1
  binlog-ignore-db=information_schema #新增的配置,忽略information_schema 的同步
  Mysql slave(161.143):
  [root@localhost home]# cat /etc/my.cnf
  [mysqld]
  log-bin=mysql-bin
  server-id=2
  3 启动两台mysql,配置主从
  (1)启动mysql:
  systemctl start mysql
  (2)修改mysql的默认密码:
  mysqladmin -uroot password '123'
  (3)进入161.142 mysql master:
  [root@localhost home]# mysql -uroot -p123
  mysql> show master status;
  +------------------+----------+--------------+--------------------+-------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB   | Executed_Gtid_Set |
  +------------------+----------+--------------+--------------------+-------------------+
  | mysql-bin.000004 |      120 |              | information_schema |                   |
  +------------------+----------+--------------+--------------------+-------------------+
  1 row in set (0.00 sec)
  (4)进入161.143 mysql slave:
  执行:
  配置slave服务器:
  change master to master_host='192.168.161.142',master_user='root',master_password='123',
  master_log_file='mysql-bin.000004',master_log_pos=120;
  启动从服务器的复制功能:
  start slave;
  查看从服务器复制的状态:
  mysql> show slave status\G'
   1. row
  Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.161.142
  Master_User: root
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.000004
  Read_Master_Log_Pos: 120
  Relay_Log_File: localhost-relay-bin.000009
  Relay_Log_Pos: 283
  Relay_Master_Log_File: mysql-bin.000004
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  Replicate_Do_DB:
  Replicate_Ignore_DB:
  Replicate_Do_Table:
  Replicate_Ignore_Table:
  Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
  Last_Errno: 0
  Last_Error:
  Skip_Counter: 0
  Exec_Master_Log_Pos: 120
  Relay_Log_Space: 623
  Until_Condition: None
  Until_Log_File:
  Until_Log_Pos: 0
  Master_SSL_Allowed: No
  Master_SSL_CA_File:
  Master_SSL_CA_Path:
  Master_SSL_Cert:
  Master_SSL_Cipher:
  Master_SSL_Key:
  Seconds_Behind_Master: 0
  Master_SSL_Verify_Server_Cert: No
  Last_IO_Errno: 0
  Last_IO_Error:
  Last_SQL_Errno: 0
  Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
  Master_Server_Id: 1
  Master_UUID: f2e02c4b-f6c3-11e7-a14e-66ab28c66abe
  Master_Info_File: /var/lib/mysql/master.info
  SQL_Delay: 0
  SQL_Remaining_Delay: NULL

  Slave_SQL_Running_State: Slave has read all>  Master_Retry_Count: 86400
  Master_Bind:
  Last_IO_Error_Timestamp:
  Last_SQL_Error_Timestamp:
  Master_SSL_Crl:
  Master_SSL_Crlpath:
  Retrieved_Gtid_Set:
  Executed_Gtid_Set:
  1 row in set (0.00 sec)
  Slave_IO_Running: Yes,Slave_SQL_Running: Yes 两个都为也是则没有问题。
  (5)测试:略
  五 在161.141上面配置amoeba
  1 161.141上面搭建Java环境
  (1)解压Java包
  tar -xzvf  jdk-7u80-linux-x64.tar.gz
  (2)配置环境变量
  修改配置文件:
  Vi /etc/profile
  JAVA_HOME=/home/jdk1.7.0_80
  CLASSPATH=.:$JAVA_HOME/lib.tools.jar
  PATH=$JAVA_HOME/bin:$PATH

  export JAVA_HOME>  使配置文件立即生效:
  source /etc/profile
  验证Java:
  [root@localhost home]# java -version
  java version "1.7.0_80"
  Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
  Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
  2 配置amoeba配置文件
  (1)下载
  wget  -c
  https://ncu.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip
  (2)解压
  unzip amoeba-mysql-3.0.5-RC-distribution.zip -d  /usr/local/amoeba
  (如没有unzip命令请自行安装:yum install -y unzip zip)
  (3)给amoeba授权mysql远程账户(不推荐使用root)

  grant all on . to amoeba@"%">  flush privileges;
  (4)修改配置文件
  Amoeba做读写分离只需要修改dbServers.xml、amoeba.xml 这两个配置文件
  [root@localhost amoeba-mysql-3.0.5-RC]# cd /usr/local/amoeba/amoeba-mysql-3.0.5-RC/conf/
  [root@localhost conf]# ls
  access_list.conf  amoeba.dtd  amoeba.xml  dbserver.dtd  dbServers.xml  function.dtd  functionMap.xml  log4j.dtd  log4j.xml  rule.dtd  ruleFunctionMap.xml  rule.xml
  修改dbServers.xml
  [root@localhost conf]# cat dbServers.xml
  
  
  

运维网声明 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-613860-1-1.html 上篇帖子: MySQL参数说明以及优化 下篇帖子: MYSQL 的集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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