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

[经验分享] 采用Atlas实现MySQL读写分离

[复制链接]

尚未签到

发表于 2018-10-8 09:12:31 | 显示全部楼层 |阅读模式
  ##采用Atlas实现MySQL读写分离
  一、基础介绍
  ==========================================================================================
  1、背景描述
  目前我们的高可用DB的代理层采用的是360开源的Atlas,从上线以来,已稳定运行2个多月。无论是从性能上,还是稳定性上,
  相比其他开源组件(amoeba、cobar、MaxScale、MySQL-Proxy等),还是很出色的。
  当初我们之所以选择Atlas,主要看中它有以下优点:
  (1)、基于mysql-proxy-0.8.2进行修改,代码完全开源;
  (2)、比较轻量级,部署配置也比较简单;
  (3)、支持DB读写分离;
  (4)、支持从DB读负载均衡,并自动剔除故障从DB;
  (5)、支持平滑上下线DB;
  (6)、具备较好的安全机制(IP过滤、账号认证);
  (7)、版本更新、问题跟进、交流圈子都比较活跃。
  在测试期间以及线上问题排查过程中,得到了360 Atlas作者朱超的热心解答,在此表示感谢。有关更多Atlas的介绍,我就不一一例举,可以参考以下链接:
  https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
  3、系统环境
  CentOS 7.2 x86_64
  网络环境:master  192.168.10.25
  slave   192.168.10.26
  mysql-atlas-proxy  192.168.10.28
  ##安装mysql-server主服务端(192.168.10.25)
  service  firewalld  stop
  chkconfig  firewalld  off
  setenforce  0
  getenforce
  sed  -i  's/^SELINUX=enforcing/SELINUX=permissive/'  /etc/selinux/config
  yum  install  -y  mariadb  mariadb-server
  service  mariadb  restart
  chkconfig  mariadb  on
  sed -i '1aserver_id=25'  /etc/my.cnf
  sed -i '2alog-bin=mysql-bin'  /etc/my.cnf
  service  mariadb  restart
  mysql -uroot  -e "grant  all on *.*  to  admin@'%'  identified  by '01';flush privileges;"
  mysql -uroot  -e "grant  replication slave on *.*  to  rep@'%'  identified  by '01';flush privileges;"
  mysql -uroot  -e "select user,host,password from  mysql.user;"
  mysql  -uroot  -e  "reset master;show  master  status;"
  ##安装mysql-server主服务端(192.168.10.26)
  service  firewalld  stop
  chkconfig  firewalld  off
  setenforce  0
  getenforce
  sed  -i  's/^SELINUX=enforcing/SELINUX=permissive/'  /etc/selinux/config
  yum  install  -y  mariadb  mariadb-server
  service  mariadb  restart
  chkconfig  mariadb  on
  sed -i '1aserver_id=26'  /etc/my.cnf
  sed -i '2alog-bin=mysql-bin'  /etc/my.cnf
  service  mariadb  restart
  mysql -uroot  -e "grant  all on *.*  to  admin@'%'  identified  by '01';flush privileges;"
  mysql -uroot  -e "grant  replication slave on *.*  to  rep@'%'  identified  by '01';flush privileges;"
  mysql -uroot  -e "select user,host,password from  mysql.user;"
  mysql  -uroot  -e  "change master to master_host='192.168.100.11',master_user='rep',master_password='01',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=245;"
  sleep  30s
  mysql  -uroot  -e  "start slave;show  slave  status\G"
  ##安装配置atlas读写分离(192.168.10.28)
  service  iptables  stop
  chkconfig  iptables  off
  setenforce  0
  getenforce
  sed  -i  's/^SELINUX=enforcing/SELINUX=permissive/'  /etc/selinux/config
  grep  '^SELINUX='  /etc/selinux/config
  安装和配置atlas软件
  rpm  -ivh  Atlas-2.2.1.el6.x86_64.rpm
  echo "PATH=$PATH:/usr/local/mysql-proxy/bin/"  >> /etc/profile
  source  /etc/profile
  ll /usr/local/mysql-proxy/
  ##mysql-proxy文件功能说明:
  bin目录下放的都是可执行文件
  1. “encrypt”是用来生成MySQL密码加密的,在配置的时候会用到
  2. “mysql-proxy”是MySQL自己的读写分离代理
  3. “mysql-proxyd”是360弄出来的,后面有个“d”,服务的启动、重启、停止。都是用他来执行的
  conf目录下放的是配置文件
  1. “test.cnf”只有一个文件,用来配置代理的,可以使用vim来编辑
  lib目录下放的是一些包,以及Atlas的依赖
  log目录下放的是日志,如报错等错误信息的记录
  进入bin目录,使用encrypt来对数据库的密码进行加密,我的MySQL数据的用户名是admin,密码是01,我需要对密码进行加密
  cd /usr/local/mysql-proxy/bin/
  ./encrypt 01   生成加密密码,并复制此密码
  cd /usr/local/mysql-proxy/conf/
  cp -v  test.cnf  test.cnf.bak    //备份test.cnf配置文件
  vi  test.conf   修改后的读写分享的完整配置文件内容
  [mysql-proxy]
  admin-username = user
  admin-password = pwd
  proxy-backend-addresses = 192.168.100.11:3306
  pwds = admin:VFnEp9P4Vu4=, rep:VFnEp9P4Vu4=
  daemon = true
  keepalive = true
  event-threads = 8
  log-level = message
  log-path = /usr/local/mysql-proxy/log
  proxy-address = 0.0.0.0:3306
  admin-address = 0.0.0.0:2345
  test.cnf读写分离配置文件功能说明:
  1:[mysql-proxy]   //读写分离代理配置
  6:admin-username = user    //管理接口的用户名
  9:admin-password = pwd     //管理接口的密码
  12:proxy-backend-addresses = 192.168.100.11:3306    //主数据库的IP地址和端口号(可读可写)
  18:pwds = admin:VFnEp9P4Vu4=, rep:VFnEp9P4Vu4=      //后端MYSQL的用户名和encrypt命令生成的加密密码
  21:daemon = true      //设置为守护进程模式(后台运行)
  24:keepalive = true   //允许keepalive
  27:event-threads = 8   //工作线程数为8
  30:log-level = message   //日志等级为message消息
  33:log-path = /usr/local/mysql-proxy/log    //日志文件路径
  45:proxy-address = 0.0.0.0:3306      //Atlas监听的管理接口IP和端口
  48:admin-address = 0.0.0.0:2345      //Atlas监听的管理接口IP和端口
  重启atlas服务:/usr/local/mysql-proxy/bin/mysql-proxyd  test  start
  查状态:./etc/init.d/mysqld  status
  设置mysql-proxyd开机启动:
  echo "/usr/local/mysql-proxy/bin/mysql-proxyd  test  start" >> /etc/profile
  source  /etc/profile
  登录测试:mysql  -uadmin  -p01  -h 192.168.10.28 -P3306
  登录到atlas管理端:mysql  -uuser  -ppwd  -h 192.168.10.28 -P2345


运维网声明 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-616013-1-1.html 上篇帖子: pacemaker+mysql+drbd-12764272 下篇帖子: mysql数据库安装和基本操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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