maxscale读写分离

今天,写写mysql兄弟公司maridb开发的一个读写分离,既然是兄弟,那也适用于mysql。

1、安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

2、下载软件

cd /usr/local
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.14.tar.gz

3、添加mysql用户和用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

4、解压安装mysql

# 创建数据目录mkdir -p /data/mysql
# 解压boost
tar xzf boost_1_59_0.tar.gz

# 解压mysql,编译安装
tar xzf mysql-5.7.14.tar.gz
cd mysql-5.7.14
 cmake .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/data/mysql  -DDOWNLOAD_BOOST=1  -DWITH_BOOST=/usr/local/boost_1_59_0  -DSYSCONFDIR=/etc  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_PARTITION_STORAGE_ENGINE=1  -DWITH_FEDERATED_STORAGE_ENGINE=1  -DWITH_BLACKHOLE_STORAGE_ENGINE=1  -DWITH_MYISAM_STORAGE_ENGINE=1  -DENABLED_LOCAL_INFILE=1  -DENABLE_DTRACE=0  -DDEFAULT_CHARSET=utf8mb4  -DDEFAULT_COLLATION=utf8mb4_general_ci  -DWITH_EMBEDDED_SERVER=1

make
make install
# 复制到启动项
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on
 # 复制配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

# 安装
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

5、添加环境变量

cd ~

vi .profile_bash

PATH=/usr/local/mysql/bin:$PATH

export PATH

6、mysql主从复制(利用gtid特性)

# 关闭selinux和防火墙
systemctl stop firewalld.service
vi /etc/selinux/config
# 配置每个节点配置文件my.cnf
# 添加如下
log-bin=mysql-bin
server-id=3
gtid_mode=ON
log_slave_updates
enforce_gtid_consistency
(注:除了server-id每个节点不一样,其它都一样,也必须加,以一般主从复制区别,多了下面的3个参数)
# 主节点添加复制账号
grant replication slave  on *.* to ‘backup‘@‘%‘identified by‘backup‘;
# 从节点执行
change master  to  master_host=‘192.168.10.140‘, master_user=‘backup‘, master_password=‘backup‘,master_port=3306,master_auto_position=1;
start slave;

7、maxscale安装

安装依赖

yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y

MaxScale 的下载地址:

https://downloads.mariadb.com/files/MaxScale

rpm -ivh maxscale-beta-2.0.0-1.centos.7.x86_64.rpm

在开始配置之前,需要在 master和backup 中为 MaxScale 创建两个用户,用于监控模块和路由模块。

创建监控用户

mysql> create user [email protected]‘%‘ identified by "123456";

mysql> grant replication slave, replication client on *.* to [email protected]‘%‘;

创建路由用户 

mysql> create user [email protected]‘%‘ identified by "123456";

mysql> grant select on mysql.* to [email protected]‘%‘;

用户创建完成后,开始配置

vi /etc/maxscale.cnf
[[email protected] ~]# cat /etc/maxscale.cnf
# MaxScale documentation on GitHub:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-Contents.md

# Global parameters
#
# Complete list of configuration options:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Getting-Started/Configuration-Guide.md

[maxscale]
threads=1
log_info=1
logdir=/tmp/

# Server definitions
#
# Set the address of the server to the network
# address of a MySQL server.
#

[server1]
type=server
address=192.168.10.140
port=3306
protocol=MySQLBackend

[server2]
type=server
address=192.168.10.141
port=3306
protocol=MySQLBackend

[server3]
type=server
address=192.168.10.142
port=3306
protocol=MySQLBackend

# Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MySQL Monitor documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Monitors/MySQL-Monitor.md

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3
user=scalemon
passwd=123456
monitor_interval=10000

# Service definitions
#
# Service Definition for a read-only service and
# a read/write splitting service.
#

# ReadConnRoute documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadConnRoute.md

# [Read-Only Service]
# type=service
# router=readconnroute
# servers=server1
# user=myuser
# passwd=mypwd
# router_options=slave

# ReadWriteSplit documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadWriteSplit.md

[Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=scaleroute
passwd=123456
max_slave_connections=100%

# This service enables the use of the MaxAdmin interface
# MaxScale administration guide:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Reference/MaxAdmin.md

[MaxAdmin Service]
type=service
router=cli

# Listener definitions for the services
#
# These listeners represent the ports the
# services will listen on.
#

# [Read-Only Listener]
# type=listener
# service=Read-Only Service
# protocol=MySQLClient
# port=4008

[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006

[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default

启动

maxscale --config=/etc/maxscale.cnf

查看

注意:这里用的是最新的2.0版本,登录已经不像老版本maxadmin --user=admin --password=mariadb这样了,而是像下面一样:

[[email protected] ~]# maxadmin -S /tmp/maxadmin.sock
MaxScale> list services
Services.
--------------------------+----------------------+--------+---------------
Service Name              | Router Module        | #Users | Total Sessions
--------------------------+----------------------+--------+---------------
Read-Write Service        | readwritesplit       |      1 |     1
MaxAdmin Service          | cli                  |      2 |     4
--------------------------+----------------------+--------+---------------
命令也有变化,请自行FQ到Google查看
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.10.140  |  3306 |           0 | Master, Running
server2            | 192.168.10.141  |  3306 |           0 | Slave, Running
server3            | 192.168.10.142  |  3306 |           0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------

测试

在其它远程客户端连接maxscale所在服务器的数据库

mysql -h 192.168.10.140 -P4006 -uscalemon -p
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| maxscale1  |
+------------+
1 row in set (0.00 sec)

关了一个slave后
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.10.140  |  3306 |           1 | Master, Running
server2            | 192.168.10.141  |  3306 |           1 | Slave, Running
server3            | 192.168.10.142  |  3306 |           0 | Down
-------------------+-----------------+-------+-------------+--------------------

参考,我是开启FQ的

https://mariadb.com/kb/en/mariadb-enterprise/mariadb-maxscale/maxadmin/

时间: 2024-08-26 01:03:45

maxscale读写分离的相关文章

基于maxscale的读写分离部署笔记

使用maxscale搭建的读写分离架构,后期还可以再结合MHA做master的故障转移,这样业务层面上不需要做任何的改动即可. 基于connect方式的不要使用.从库延迟他还会继续分发请求过去,暂时不适合生产使用. 实验演示: 目前的主从结构: node93     10.1.20.93 master node94  10.1.20.94 slave node95  10.1.20.95 slave node96  10.1.20.96 maxscale 先在master主库上创建相关的账户:

MaxScale:实现MySQL读写分离与负载均衡的中间件利器

1.MaxScale 是干什么的? 配置好了MySQL的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡是MySQL集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能. 2.MaxScale 的基础构成 MaxScale 是MySQL的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟.MaxScale 是插件式结构,允许用户开发适合自己的插件. MaxScale 目前提供的插件功能分为5类: 认证插件

Maxscale安装-读写分离(1)

前言 关于MySQL中间件的产品也很多,之前用过了360的Atlas.玩过MyCat.这边我选择 Maxscale的原因就是功能能满足需求,也看好他的未来发展. 其实有关于如何安装 Maxscale的文章百度一下一大把,写这篇文章主要为了说明配置的某些现象,同时也为之后使用Maxscale的其他配置做下基础. 我的环境 这边我的'一主二从'已经是搭建好的了,如何搭建就不再描述了. 注意:这边我的三个节点都没有开启 GTID,具体是为什么在之后会讲到,这边大家留意一下就行. 192.168.137

maxscale配合MHA搭建读写分离的高可用架构(基于GTID replication主从架构,mysql5.6)

基于GTID的主从replication并配合MHA搭建高可用架构,请参考之前的博客:http://linzhijian.blog.51cto.com/1047212/1906434.这里只叙述如何在此基础上增加maxscale中间件,实现读写分离的功能. MaxScale是maridb开发的一个MySQL数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换.官方文档:https://mariadb.com/kb/en/mariadb-enterprise/about

使用Maxscale实现mysql读写分离

MaxScale 是 MariaDB 的产品之一,可以很方便的实现读写分离方案:并且提供了读写分离的负载均衡和高可用性保障. 一.安装配置 前提:先配置好mysql的主从,Maxscale会根据主从复制信息来判断Master和slave 注:不能配置mysql互为主从,如果互为主从,两台都会被认为slave,在这种情况下,写请求会被拒绝,只接受读请求. 1.1.安装 官网下载对应的rpm包, wget  https://downloads.mariadb.com/MaxScale/2.0.3/c

Maxscale实现mysql的读写分离

1MaxScale 是干什么的? 配置好了MySQL的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡是MySQL集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能. 2MaxScale 的基础构成 MaxScale 是MySQL的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟.MaxScale 是插件式结构,允许用户开发适合自己的插件. MaxScale 目前提供的插件功能分为5类: 认证插件 提供

基于Keepalived高可用集群的MariaDB读写分离机制实现

一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主节点如果挂掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整.2.全同步复制:指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端.因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必

采用Atlas+Keepalived实现MySQL读写分离、读负载均衡

========================================================================================== 一.基础介绍 ========================================================================================== 1.背景描述 目前我们的高可用DB的代理层采用的是360开源的Atlas,从上线以来,已稳定运行2个多月.无论是从性能上,

proxysql安装配置和读写分离初识

前言 笔者从事MySQL的相关工作,最近线上需要一款性能上佳的MySQL中间件产品,本人在了解一些如ProxySQL.MariaDB MaxScale.MySQL Router.Atlas.DBProxy等相关产品后,经过反复对比和相关测试,初步选用了proxysql.本文是proxysql系列的第一篇,笔者计划proxysql系列的博文将为您介绍proxysql的安装配置.读写分离.可用性测试.深入了解proxysql各组件.proxysql+keepalived实现高可用.proxysql和