千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  MySQL集群高可用架构方案——Atlas架构

MySQL集群高可用架构方案——Atlas架构

来源:千锋教育
发布人:lxl
时间: 2023-03-31 11:50:01

  一. Atlas

  1.简介

  Atlas是由 Qihoo 360公司Web平台部基础架构团队,开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。

  目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。现在有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。

  2. 主要功能

  Altas具有以下这些主要的功能:

  读写分离

  从库负载均衡

  IP过滤

  自动分表

  DBA可平滑上下线DB

  自动摘除宕机的DB

  二. MySQL主从系统搭建

  设计图

  我们先来了解一下要实现的MySQL主从架构设计图。

  2. 概述

  从上图可以看出,如果我们要想使用Atlas,首先得需要搭建一个MySQL的集群。而Atlas作为数据库中间件,可以帮助我们实现请求路由、负载均衡等。

  3. MySQL主从复制搭建

  所以接下来,我们就要先实现一个MySQL主从架构的环境。

  3.1 MySQL服务器版本选择

  在Atlas官网,关于安装的注意事项中,建议MySQL选择的版本应该大于5.1版本,最好使用5.6版本,本教程使用MySQL5.6版本进行演示。

  3.2 搭建步骤

  我这里搭建MySQL集群使用docker容器进行搭建,关于Docker的学习,搭建可以查看千锋Docker视频教程(wilson)

  https://www.bilibili.com/video/BV1ug411j71W

  暂时无法在飞书文档外展示此内容

  三. 基于Docker安装MYSQL

  拉取MySQL5.6版本的镜像

  首先我们进入duckerhub网站,地址如下:

  https://hub.docker.com/

  然后搜索mysql,查看mysql版本,将5.6版本的MySQL拉取到本地,拉取命令如下:

  docker pull mysql:5.6.51

  2. 开始安装

  首先我们在docker平台上启动两个MySQL服务,一个作为主机,一个作为从机。

  3. 启动MySQL

  主机(名字叫mysql-master):

  docker run -p3307:3306 --name mysql-master --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.51

  从机(名字叫mysql-slave):

  docker run -p3308:3306 --name mysql-slave --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.51

  4.查看容器

  启动完成之后,我们可以使用docker ps命令查看当前运行的mysql容器。

  [root@localhost ~]# docker ps

  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  329f0925de00 mysql:5.6.51 "docker-entrypoint.s…" 9 seconds ago Up 7 seconds 0.0.0.0:3308->3306/tcp mysql-slave

  b6e89b46286f mysql:5.6.51 "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 0.0.0.0:3307->3306/tcp mysql-master

  5. 设置主机和从机

  接着我们就可以设置mysql-master为主机,设置mysql-slave为从机了。

  5.1 进入容器内部

  使用docker命令进入mysql-master容器内部:

  docker exec -it b6e89b46286f bash

  5.2 安装vim编辑器

  进入容器之后,因为容器内部没有安装vim编辑器,所以首先要安装一个vim编辑器,方便我们后面进行编辑操作。在安装vim之前,要先更新一个apt库,执行更新库的命令为:

  apt-get update

  更新库完成之后,再执行安装vim编辑器命令:

  apt-get install -y vim

  如果不先更新apt库,那么vim可能会安装不成功。

  5.3 编辑my.cnf配置文件

  接着使用vim编辑器打开mysql的配置文件my.cnf:

  vim /etc/mysql/my.cnf

  在my.cnf配置文件中,设置server-id=100,这里随便设置一个任意整数即可,对MySQL集群进行编号。然后在my.cnf中开启log-bin日志,这个操作很重要,这是实现MySQL集群、数据同步的关键:

  log-bin=mysql-bin

  四. Atlas的安装/配置

  Atlas官网地址

  https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

  2. 下载地址

  https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

  3. 安装注意事项

  安装时要注意以下事项:

  1). Atlas只能安装在64位系统上;

  2). Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm;

  3). 我在Centos7.x上面,安装Atlas-XX.el6.x86_64.rpm也没问题;

  4). 如果本机之前安装过,那么需要先卸载;

  5). mysql版本应大于5.1,建议使用Mysql 5.6。

  4. 安装步骤

  Atlas安装极其简单,只需要一条命令就能快速安装完成。

  sudo rpm –i Atlas-XX.el6.x86_64.rpm

  5. test.cnf配置文件

  安装目录在/usr/local/mysql-proxy文件夹下,安装好之后就是配置介绍。

  配置文件(/usr/local/mysql-proxy/conf/test.cnf)里面介绍了一些非必须的配置,我这里将非必须的都删除掉,如果大家有需要,请自行查看。

  [mysql-proxy]

  #管理接口的用户名(默认即可,进入管理客户端的用户名,非操作数据库的用户名)

  admin-username = user

  #管理接口的密码(默认即可)

  admin-password = pwd

  #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔

  proxy-backend-addresses =192.168.1.134:3307

  #Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔

  #proxy-read-only-backend-addresses = 192.168.1.134:3308@1

  #用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的root为示例,将其替换为你的MySQL的用户名和加密密码!

  pwds = root:/iZxz+0GRoA=

  #设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。

  daemon = true

  #设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。

  keepalive = true

  #工作线程数,对Atlas的性能有很大影响,可根据情况适当设置

  event-threads = 2

  #日志级别,分为message、warning、critical、error、debug五个级别

  log-level = message

  #日志存放的路径

  log-path = /usr/local/mysql-proxy/log

  #实例名称,用于同一台机器上多个Atlas实例间的区分

  #instance = test

  #Atlas监听的工作接口IP和端口,相当于MySQL的3306端口,用于操作数据库的,以前我们都是直连数据库,现在我们连接中间件即可.

  proxy-address = 0.0.0.0:1234

  #Atlas监听的管理接口IP和端口

  admin-address = 0.0.0.0:2345

  上面就是Atlas的最简配置,如果你有还什么特殊需要,请查看详细官网,地址为:

  https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85

  五. Atlas的启动和测试

  启动

  进入/usr/local/mysql-proxy/bin目录,执行下面的命令启动、重启或停止Atlas:

  (1). sudo ./mysql-proxyd test start 启动Atlas。

  (2). sudo ./mysql-proxyd test restart 重启Atlas。

  (3). sudo ./mysql-proxyd test stop 停止Atlas。

  注意:

  1. 运行文件是:mysql-proxyd(不是mysql-proxy)

  2. test是conf目录下配置文件的名字,也是配置文件里instance项的名字,三者需要统一

  3. 可以使用ps -ef | grep mysql-proxy查看Atlas是否已经启动或停止

  2. 测试

  测试1234端口号是否能操作数据库:

  mysql -uroot -h192.168.1.134 -P1234 -p123456

  测试2345端口号是否能进入管理控制台,对MySQL集群进行管理:

  mysql -uuser -h192.168.1.134 -P2345 -ppwd

  通过select * from help;语句查看管理DB的各类命令:

  SELECT * FROM backends; 查看当前MySQL的服务节点列表;

  SELECT * FROM pwds; 查看MySQL加密之后的密码;

  SELECT VERSION; 查看当前Atlas版本。

  以上为Atlas的设计,如果你想了解更多其他的内容,可以查看官网,地址为:

  https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E6%9E%B6%E6%9E%84

  六. MyBatis连接Atlas操作数据库

  本操作和操作单点数据库一模一样,所以这里就不再演示了。

  注意: 由于MySQL数据库版本较低,所以对应MySQL的驱动尽量做到兼容,建议也替换成5.x!

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>