快捷搜索:
来自 网络数据库 2019-08-04 08:38 的文章
当前位置: 67677新澳门手机版 > 网络数据库 > 正文

部署读写分离,Atlas的读写分离尝试

图片 1

履新数据库新闻,假如没更新数据库的音讯,修改不会立即生效,那就需求重启数据库了。那边一直更新数据库的新闻,能够幸免重启。

目标是尝试altas的读写分离,现存一套搭建好做测量检验的MGLX570(单主),于是就腿搓绳,在MG途锐基础上搭建altas。

owners.

强制关掉三个从节点,将读重定向到次级读节点。

user=mysql

读写分离理论上讲,跟复制形式尚未涉嫌,atlas负担的是重定向读写,至于复制方式自身挑选,这里是测量试验遭逢,在此之前测验MG牧马人的单机多实例,MGOdyssey单主形式的复制形式,就顺便借助MGENCORE做遵照atlas的读写分离。

owners.

 

主MySQL数据库

图片 2

IP

基于MGXC90 Keepalived Atlas的高可用加读写分离

Welcome to the MySQL monitor.  Commands end with ; or g.

图片 3

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

图片 4

server-id=2

尚无进展分表测验。

配备中央服务器必要编写制定MySQL的配备文件,实际情况配置步骤如下:

 

[root@localhost ~]# cd /demo/atlas[root@localhost home]# wgethttps://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

 

Atlas官方链接:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

 

# 走入数据库

一起初服务不能够起动,出现错误日志proxy-plugin.c.1783: I have no server backend, closing connection,是因为布署的user消息在每一个节点差异导致的。
后来涂改pwds 节点的user音讯,个中user的新在每三个节点都同一,包蕴用户名和密码,服务符合规律运行。

从数额库 ( 192.168.1.41 )

 

mysql> grant all on *.* tobuck@'127.0.0.1' identified by "hello";Query OK, 0 rows affected (0.00 sec)

 

| user | host                  |

越过的主题素材:

能够看到测量试验插入数据的操作时,主数据库的网卡流量一点都不小,从数据库的流量十分小,是应该为主数据是至关心器重要担任写入的,而从数据库入眼是承受同步的。

altas详细安顿参照他事他说加以考察:

----------------

Atlas中间件会活动过滤掉一部分快要倾覆的操作,举个例子不带where条件的delete就无法施行

master_connect_retry=20

测量试验读写分离

------------------ ---------- -------------- ------------------

 

配置主服务器的用户名

图片 5

-> master_user='buck',

 

------------------ ---------- -------------- ------------------

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示范,将其替换为你的MySQL的用户名和加密密码!
pwds = username1:DAJnl8cVzy8=, username2:DAJnl8cVzy8=

| wl |

rpm安装,弹指间变成

#起步二进制文件

图片 6

步向从库

复制遭逢希图

Query OK, 1 row affected (0.00 sec)

读重定向到8003节点,写依然是主节点,MG奥迪Q5状态也正常,若是尝试关闭全数的读节点,读将自动重定向到主(写)节点,表明从节点的不当都是可以相配的。
那或多或少证实,从(读)节点的别的错误都是不影响atlas对外提供服务器的,假如成功主节点的高可用,atlas就足以健全地对外提供服务了。

Oracle is a registered trademark of Oracle Corporation and/or its

 

Server version: 5.0.99-agent-admin

atlas的布局文件(私下认可/usr/local/mysql_proxy/conf/test.cnf),个人感到是贰个老大满面春风的安插,基本上配置节点的备注都卓绝掌握。
因为是单机多实例,这里仅仅通过分化的端口号来差距从库实例,能够是单从,也足以是多从,遵照事先级来拆分。

  1. 基本数据库连接

接轨能够尝尝,在名爵奥迪Q5的根基上做三个依据keepalived的自动故障转移,写节点能够依赖VIP做活动故障转移,
接下来在此基础上,基于VIP 别的节点做读写分离,理论上可以周密地落到实处活动故障转移的高可用 读写分离。
那般YY起来的话,以为那样子也略屌,自动故障转移有了,读写分离也可能有了,理论上,只要有贰个现成的节点,都足以符合规律对外提供劳动。

【主意:若未有配置binlog-do-db和binlog_ignore_db,表示备份全体数据库。】

#Atlas后端连年的MySQL从库的IP和端口,@后边的数字代表权重,用来作负载均衡,若省略则默感到1,可安装多项,用逗号分隔
proxy-read-only-backend-addresses = ***.***.***.***:8002@1, ***.***.***.***::8003@2

下载Atlas会有四个版本,个中有个分表的版本,可是这几个需要别的的依附,作者那边不需求分表这种须要,所以安装普通的本子

启动atlas

192.168.1.41

图片 7

[root@localhost conf]# cd /usr/local/mysql-proxy/conf/

这么些节点需求留心的是,对应的用户名必须在每一种是行使都设有且密码一样,不然相会世谬误

[mysqld_safe]

图片 8

Atlas (普通) :Atlas-2.2.1.el6.x86_64.rpm

图片 9

MGHaval是一主二从,主节点Server_id是8001,从节点的Server_id分别是8002和8003
可以开掘读音信重定向到8002节点,写新闻重定向到8001节点,达成了读写分离

| root | localhost            |

atlas安装

[root@localhost bin]# mysql

[mysql-proxy]

#带#号的为非必需的配置项目

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

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

#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = ***.***.***.***:8001

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

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

#设置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 = 8

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

#日志存放的路径
log-path = /usr/local/mysql-proxy/log

#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
#sql-log = OFF

#慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。
#sql-log-slow = 10

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

#Atlas监听的工作接口IP和端口
proxy-address = ***.***.***.***:1234

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

#分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
#tables = person.mt.id.3

#默认字符集,设置该项后客户端不再需要执行SET NAMES语句
#charset = utf8

#允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接
#client-ips = 127.0.0.1, 192.168.1

#Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置
#lvs-ips = 192.168.1.1

master_log_pos=589

| buck | %                    |

锁定数据库

1:Atlas                  ########################################### [100%]

主服务器的mysql端口

也足以行使专门的工作接口来拜谒,使用命令“mysql -h127.0.0.1 -P1234 -ubuck -phello”

----------------

-> master_port=3306,

|      | localhost            |

从服务器 ( 192.168.1.41 ),也须要动用vim进行配备,只须求在[mysqld]上边步向server-id=2就足以,全体布局如下:

[root@localhost bin]# pwd

user=mysql

[root@localhost conf]# vim test.cnf

翻开主数据库音信,记住下边包车型客车“File”与“Position”的音信,它们是用来安顿从数据库的要紧新闻。能够观察上面一同的数据库的“test”数据库,主从数据库假设数额不平等,首先需求手动去一齐一下数据,小编在Windows意况下只用Navicat复制的数额,这里就不演示了。

自己探究主从复制状态,要察看下列标红的音信中,三个都以Yes,才证实为主连接正确,若是有三个是No,要求重新规定刚才记录的日志消息,停掉“stop slave”重新实行配置基本连接。

admin-password = pwd

图片 10

/iZxz 0GRoA=

| ADD CLIENT $client        | example: "add client 192.168.1.2", ...                  |

日志文件的名称,供给与主服务器对应

----------------

CentOS 7.0

你能够让数据库某一台down掉,来测量检验监察和控制的可用性。从那边能够见到我们的监督是好使的,啦啦啦啦!!

mysql> update user set host = '%' where user = 'buck';

先来测量试验写,近年来数据Curry面一条音信都并未有,开启配置好了的Jmeter,实行写入数据测验

图片 11

Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代办,修改了MySQL-Proxy的一部分BUG,况且优化了繁多东西。而且安装方便。

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

| REMOVE PWD $pwd            | example: "remove pwd user", ...                        |

mysql> create database test;

symbolic-links=0

socket=/var/lib/mysql/mysql.sock

------ -----------------------

| REMOVE CLIENT $client      | example: "remove client 192.168.1.2", ...              |

Welcome to the MySQL monitor.  Commands end with ; or g.

下载下来后,分别都解压开来,展开Jmeter ( 在bin路面下的jmeter.bat ) ,在测验安排中,导致JDBC的jar包

mysql> select user, host from user;

这里测量检验读写分离必要动用到Jmeter了,它是Java写第一套开源的压力测验工具,因为这几个相比较实惠。他有特意测量试验MySQL的模块,需求利用MySQL的JDBC驱动jar包,配置异常的粗略,东西很好很有力很好用。

master_password='hello'

[root@localhost ~]# mkdir /demo/atlas

| SELECT * FROM clients      | lists the clients                                      |

对应用户的密码

[root@localhost home]# ll /usr/local/mysql-proxy/total 16drwxr-xr-x. 2 root root 4096 Dec 28 10:47bindrwxr-xr-x. 2 root root 4096 Dec 28 10:47confdrwxr-xr-x. 3 root root 4096 Dec 28 10:47libdrwxr-xr-x. 2 root root 4096 Dec 17  2014log

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql>

日记地方,需求与主服务器对应

MySQL的JDBC  :http://dev.mysql.com/downloads/connector/j/

初步进程

布署好了今后,就先运维查询操作,然后分别监察和控制主数据库与从数据库所在机器的流量,来规定是否读写,使用“sar -n DEV 1 一千0”命令来监督读写

测量试验一下Atlas服务器的MySQL状态,要鲜明它是关门状态,而且选取mysql命令,进不去数据库,前提是Atlas服务器也亟需装mysql,直接运转 yum -y install mysql 就足以了。大家那边只必要mysql那一个命令好使,就能够了。

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld]

master_log_file='mysql-bin.000001'

mysql> use test;

Query OK, 0 rows affected (0.01 sec)

------ -----------------------

从数量库 ( 192.168.1.41 )

affiliates. Other names may be trademarks of their respective

bin目录下放的都是可奉行文件

socket=/var/lib/mysql/mysql.sock

log-bin=mysql-bin

  1. “encrypt”是用来生成MySQL密码加密的,在安排的时候会用到

  2. “mysql-proxy”是MySQL自身的读写分离代理

图片 12

配置

mysql> use mysql

mysql> flush tables with read lock;

#Atlas后端接二连三的MySQL从库的IP和端口,@后边的数字代表权重,用来作负载均衡,若省略则默感觉1,可安装多项,用逗号分隔

-> master_connect_retry=20;

proxy-address = 0.0.0.0:1234

安装好了,它会默许在”/usr/local/mysql-proxy”下给您转移4个文本夹,以及须要配备的文件,如下:

mysql> start slave;

Database changed

[root@localhost bin]# ./mysql-proxyd test start

承认系统中自带的MySQL进不去了,使用如下命令,步入Atlas的管理格局“mysql -h127.0.0.1 -P2345 -uuser -ppwd ”,能跻身表明Atlas平时运营着吗,因为它会把团结当成三个MySQL数据库,所以在无需数据库情状的事态下,也足以进去到MySQL数据库方式。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

mysql> show master status;

mysql> show slave status G;*************************** 1. row ***************************              Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.246.134                  Master_User: buck                  Master_Port: 3306                Connect_Retry: 10              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 589              Relay_Log_File: mysqld-relay-bin.000001                Relay_Log_Pos: 251        Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_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: 17620976              Relay_Log_Space: 407              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: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0              Last_SQL_Error: 1 row in set (0.00 sec)ERROR: No query specified

proxy-backend-addresses = 192.168.1.50:3306

| mysql-bin.000001 | 589      | test        | mysql            |

| ADD MASTER $backend        | example: "add master 127.0.0.1:3306", ...              |

Atlas (分表) :Atlas-sharding_1.0.1-el6.x86_64.rpm

本条是用来布署MySQL的账户与密码的,笔者的MySQL的用户是buck,密码是hello,刚刚使用Atlas提供的工具生成了对应的加密密码

查看一下user表,看看修改成功了未有。能够看出,buck的用户,host已经修改成都百货分号了。

分级做询问与插入语句

图片 13

---------------------------- ---------------------------------------------------------

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

16 rows in set (0.00 sec)

#没有须要备份的数据库

那是用来报到到Atlas的管理员的账号与密码,与之对应的是“#Atlas监听的管理接口IP和端口”,也正是说需求安装管理员登入的端口,技巧跻身管理员分界面,暗中同意端口是2345,也足以内定IP登入,钦定IP后,其余的IP不能访谈管理员的吩咐分界面。方便测量试验,笔者那边未有一点名IP和端口登录。

log目录下放的是日记,如报错等错误新闻的记录

---------------------------- ---------------------------------------------------------

Server version: 5.0.81-log

Query OK, 1 row affected (0.00 sec)

图片 14

192.168.1.50

假如事业接口可以步向了,就能够在Windows平台下,使用Navicat来连接数据库,填写对应的host,Port,用户名,密码就足以

本文由67677新澳门手机版发布于网络数据库,转载请注明出处:部署读写分离,Atlas的读写分离尝试

关键词: