mysql的Altas读写分离(实战配置版)

Atlas配置
下载Atlas会有两个版本,其中有个分表的版本,但是这个需要其他的依赖,我这边不需要分表这种需求,所以安装普通的版本。
Atlas (普通) : Atlas-2.2.1.el6.x86_64.rpm
Atlas (分表) : Atlas-sharding_1.0.1-el6.x86_64.rpm
http://atlas.apache.org/#/Downloads
https://pkgs.org/download/atlas

先解压

 rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 

安装好了,它会默认在”/usr/local/mysql-proxy”下给你生成4个文件夹,以及需要配置的文件,如下:

 ll /usr/local/mysql-proxy/

total 4
drwxr-xr-x. 2 root root  75 Apr 20 08:42 bin
drwxr-xr-x. 2 root root  22 Apr 20 08:42 conf
drwxr-xr-x. 3 root root 4096 Apr 20 08:42 lib
drwxr-xr-x. 2 root root  6 Dec 17 2014 log

不过需要注意的是3.0以后的版本安装后没有这四个文件,需要看官方文档移植到哪里了

bin目录下放的都是可执行文件
\1. “encrypt”是用来对MySQL密码进行加密的,在配置的时候会用到
\2. “mysql-proxy”是MySQL自己的读写分离代理
\3. “mysql-proxyd”是360弄出来的,后面有个“d”,服务的启动、重启、停止,都是用他来执行的

conf目录下放的是配置文件
“test.cnf”只有一个文件,用来配置代理的,可以使用vim来编辑

ib目录下放的是一些包,以及Atlas的依赖

log目录下放的是日志,如报错等错误信息的记录

进入bin目录,使用encrypt来对数据库的密码进行加密,我的MySQL数据的用户名是atlas,密码是MySql@123,我需要对密码进行加密

[root@server11 ~]# cd /usr/local/mysql-proxy/bin/
[root@server11 bin]# ls
encrypt mysql-proxy mysql-proxyd VERSION
[root@server11 bin]# ./encrypt MySql@123
sNU0V6SrdE173jSAUy5Kl+BK/UZJ6u8m      #不同的密码产生的密钥不一样

配置Atlas,使用vim进行编辑
[root@server11 bin]# cd /usr/local/mysql-proxy/conf/
[root@server11 conf]# ls
test.cnf
[root@server11 conf]# vim test.cnf

进入后,可以在Atlas进行配置,360写的中文注释都很详细,根据注释来配置信息,其中比较重要,需要说明的配置如下:
这是用来登录到Atlas的管理员的账号与密码,与之对应的是“#Atlas监听的管理接口IP和端口”,也就是说需要设置管理员登录的端口,才能进入管理员界面,默认端口是2345,也可以指定IP登录,指定IP后,其他的IP无法访问管理员的命令界面。方便测试,我这里没有指定IP和端口登录。

#管理接口的用户名
admin-username = user

#管理接口的密码
admin-password = pwd

#这是用来配置主数据的地址与从数据库的地址,这里配置的主数据库是192.168.10.12,从数据库是192.168.10.13
#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 192.168.121.133:3306

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

#配置MySQL的账户与密码的,我的MySQL的用户是Jaking,密码是Jaking@vip.163.com,刚刚使用Atlas提供的工具生成了对应的加密密码
#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!
pwds = atlas:sNU0V6SrdE173jSAUy5Kl+BK/UZJ6u8m

#设置工作接口与管理接口的,如果IP设置的”0.0.0.0”就是说任意IP都可以访问这个接口,当然也可以指定IP和端口,为方便测试我这边没有指定。
#Atlas监听的工作接口IP和端口
proxy-address = 0.0.0.0:1234

#Atlas监听的管理接口IP和端口
admin-address = 0.0.0.0:2345

启动Atlas

[root@server11 conf]# cd ../bin
[root@server11 bin]# ls
encrypt mysql-proxy mysql-proxyd VERSION
[root@server11 bin]# ./mysql-proxyd test start
OK: MySQL-Proxy of test is started
[root@server11 bin]# ./mysql-proxyd test status
MySQL-Proxy of test is running (12038)
MySQL-Proxy of test is running (12039)
[root@server11 bin]# ps aux | grep test
root   12038 0.0 0.2 65300 5164 ?    S  09:04  0:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/test.cnf
root   12039 0.0 0.4 141188 8668 ?    Sl  09:04  0:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/test.cnf
root   12059 0.0 0.0 112648  956 pts/0  R+  09:05  0:00 grep --color=auto test
[root@server11 bin]# netstat -pantul | grep 1234
tcp        0      0 0.0.0.0:1234            0.0.0.0:*               LISTEN      16827/mysql-proxy   
[root@server11 bin]# netstat -pantul | grep 2345
tcp        0      0 0.0.0.0:2345            0.0.0.0:*               LISTEN      16827/mysql-proxy 

测试一下Atlas服务器的MySQL状态,要确认它是关闭状态,并且使用mysql命令测试,应该不能登录数据库

说明:Atlas代理服务器上只需要有mysql命令即可

[root@server11 ~]# systemctl stop mysqld
[root@server11 ~]# systemctl status mysqld
● mysqld.service - MySQL Server
  Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
  Active: inactive (dead) since Wed 2022-04-20 09:10:26 EDT; 3s ago
   Docs: man:mysqld(8)
      http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 12275 (code=exited, status=0/SUCCESS)

Apr 20 09:09:59 server11 systemd[1]: Starting MySQL Server...
Apr 20 09:10:02 server11 systemd[1]: Started MySQL Server.
Apr 20 09:10:24 server11 systemd[1]: Stopping MySQL Server...
Apr 20 09:10:26 server11 systemd[1]: Stopped MySQL Server.
[root@server11 ~]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

确认系统中自带的MySQL进不去了,使用如下命令,进入Atlas的管理模式“mysql -h127.0.0.1 -P2345 -uuser -ppwd ”,能进去说明Atlas正常运行着,因为它会把自己当成一个MySQL数据库,所以在不需要数据库环境的情况下,也可以进入到MySQL数据库模式。

mysql -h127.0.0.1 -P2345 -uuser -ppwd

可以访问“help”表,来看MySQL管理员模式都能做些什么,可以使用SQL语句来访问。

mysql> select * from help;

也可以使用工作接口来访问,使用命令

mysql -h127.0.0.1 -P1234 -uatlas -pMySql@123
jaking是在主库设置的用户,密码也是对应用户的密码

接下来所有的操作都是需要在装有这个atlas的主机上操作的,否则实现不了读写分离

mysql -h127.0.0.1 -P1234 -uatlas -pMySql@123

还需要用这个密码登录

最后把该atlas主机的mysql停掉,因为该主机用于转发,有mysql命令就行了 不需要启动

写这个的时候也有参考一些文章,如有侵权请联系告知删除。

相关推荐

  1. mysqlAltas分离实战配置

    2023-12-08 09:14:01       38 阅读
  2. MySQL实现分离

    2023-12-08 09:14:01       21 阅读
  3. mysql分离

    2023-12-08 09:14:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 09:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 09:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 09:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 09:14:01       20 阅读

热门阅读

  1. iosapp网站是干什么的呢?

    2023-12-08 09:14:01       33 阅读
  2. Unity 程序运行后的日志信息路径

    2023-12-08 09:14:01       34 阅读
  3. 初学websocket有感-待研究

    2023-12-08 09:14:01       37 阅读
  4. 插件原理与开发

    2023-12-08 09:14:01       45 阅读
  5. 软件定制开发与标准化产品的比较及选择

    2023-12-08 09:14:01       41 阅读