MaxScale中间件部署数据库读写分离

操作系统:CentOS7 (Core)

数据库:MariaDB-10.2.6-linux-glibc_214-x86_64

MaxScale服务器:192.168.40.134

主服务器:192.168.40.132

从服务器:192.168.40.133

1.maxscale的安装方式有很多,例如源码安装、rpm、二进制构建等,我选择二进制进行安装。

根据场景需要下载相对应的版本,下载地址;https://mariadb.com/downloads/maxscale

[[email protected] ~]# groupadd maxscale

[[email protected] ~]# useradd -g maxscale maxscale

[[email protected] ~]# cd /usr/local

[[email protected] local]# wget https://downloads.mariadb.com/MaxScale/2.1.3/centos/7server/x86_64/maxscale-2.1.3.centos.7.tar.gz

[[email protected] local]# tar zxvf maxscale-2.1.3.centos.7.tar.gz

[[email protected] local]# ln -s maxscale-2.1.3.centos.7 maxscale

[[email protected] local]# cd maxscale

[[email protected] maxscale]# chown -R maxscale var

建议创建软连接,这样有助于以后的版本升级及后期维护。

2.首次安装maxscale需要创建日志相关目录

[[email protected] ~]# mkdir /var/log/maxscale

[[email protected] ~]# mkdir /var/lib/maxscale

[[email protected] ~]# mkdir /var/run/maxscale

[[email protected] ~]# mkdir /var/cache/maxscale

3.以下目录必须具备maxscala用户权限

[[email protected] ~]# chown maxscale /var/log/maxscale

[[email protected] ~]# chown maxscale /var/lib/maxscale

[[email protected] ~]# chown maxscale /var/run/maxscale

[[email protected] ~]# chown maxscale /var/cache/maxscale

4.为了能让Maxscale能顺利启动,还需要创建配置文件,在Maxscale目录下有配置文件模板拷贝到etc下即可。

[[email protected] ~]# cp /usr/local/maxscale/etc/maxscale.cnf.template /etc/maxscale.cnf链路-

5.在修改配置文件之前,需要在主服务器上创建一个用户并给予授权,而这个用户用于MySQL监控、路由功能

MariaDB [(none)]> create user ‘jiankongdb‘@‘%‘ identified by ‘jiankong123‘;

MariaDB [(none)]> grant SELECT on mysql.user to ‘jiankongdb‘@‘%‘;

MariaDB [(none)]> GRANT SELECT ON mysql.db TO ‘jiankongdb‘@‘%‘;

MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO ‘jiankongdb‘@‘%‘;

MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO ‘jiankongdb‘@‘%‘;

MariaDB [(none)]> grant REPLICATION CLIENT on *.* to ‘jiankongdb‘@‘%‘;

MariaDB [(none)]> GRANT replication slave, replication client,SELECT ON *.* TO [email protected]‘%‘;

6.查看授权情况

MariaDB [(none)]> SHOW GRANTS FOR‘jiankongdb‘@‘%‘;

注意:

在/var/lib/maxscale文件夹上面建立文件夹.secrets,然后使用命令:maxkeys .secrets/生成加密文件.secrets。再把这个.secrets文件拷贝到/var/lib/maxscale下面,而且这个.secrets文件的格式为:

-r--------   1 maxscale maxscale   48 5月  29 15:54 .secrets

再使用这个文件生成密码:

在当前目录使用指令:maxpasswd  jiankong123生成密码C5828F2BBE20D9758BDECF33173C0317,到时候需要用到。

7.接下来就开始修改maxscale.cnf配置文件,否则无法启动。

[[email protected] ~]# vim /etc/maxscale.cnf

# MaxScale documentation on GitHub:

# https://github.com/mariadb-corporation/MaxScale/blob/2.1/Documentation/Documentation-Contents.md

# Global parameters

#

# Complete list of configuration options:

# https://github.com/mariadb-corporation/MaxScale/blob/2.1/Documentation/Getting-Started/Configuration-Guide.md

#全局配置

[maxscale]

threads=1

# Server definitions

#

# Set the address of the server to the network

# address of a MySQL server.

#

[server1]

type=server

address=192.168.40.132

port=3306

protocol=MySQLBackend

serv_weight=1

[server2]

type=server

address=192.168.40.133

port=3306

protocol=MySQLBackend

serv_weight=3

# 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/2.1/Documentation/Monitors/MySQL-Monitor.md

#MariaDB状态监控

[MySQL Monitor]

type=monitor

module=mysqlmon

servers=server1,server2

user=jiankongdb

passwd=jiankong123

monitor_interval=10000

detect_stale_master=true #即使从全挂掉,保证主担任读写

# Service definitions

#

# Service Definition for a read-only service and

# a read/write splitting service.

#

# ReadConnRoute documentation:

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

#读

[Read-Only Service]

type=service

router=readconnroute

servers=server1,server2

user=jiankongdb

passwd=jiankong123

router_options=slave

enable_root_user=1 #允许root用户登录执行

weightby=serv_weight #主从权重

# ReadWriteSplit documentation:

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

#写

[Read-Write Service]

type=service

router=readwritesplit

servers=server1,server2,server3

user=jiankong

passwd=jiankong123

max_slave_connections=100%

use_sql_variables_in=master #保证会话的一致性

enable_root_user=1 #允许root登录

max_slave_replication_lag=3600 #允许从超出主的同步时间,超出则不路由

# This service enables the use of the MaxAdmin interface

# MaxScale administration guide:

# https://github.com/mariadb-corporation/MaxScale/blob/2.1/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

保存并退出。
8.下面创建启动脚本

[[email protected] ~]# cp /usr/local/maxscale-2.1.3.centos.7/share/maxscale.service /usr/lib/systemd/system/

[[email protected] ~]# vim /usr/lib/systemd/system/maxscale.service

9.修改maxscale.service中的ExecStart=///bin/maxscale为ExecStart=/usr/local/maxscale/bin/maxscale

[[email protected] ~]# chmod 755 /usr/lib/systemd/system/maxscale.service

[[email protected] ~]# systemctl enable maxscale

[[email protected] ~]# systemctl daemon-reload

[[email protected] ~]# systemctl start maxscale 假如该指令运行失败,可以尝试以下指令:maxscale --config=/etc/maxscale.cnf

10.添加变量值

[[email protected] ~]# vi /etc/profile //最后一行添加以下内容保存退出!

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

export PATH

[[email protected] ~]# source /etc/profile //使其变量立即生效

11.接下来就可以使用MaxAdmin进行管理。MaxAdmin是一个简单的客户端管理界面,可用于与MariaDB MaxScale服务器进行交互,可以显示MariaDB MaxScale内部的统计信息状态以及对MariaDB MaxScale操作的控制。详情:
https://mariadb.com/kb/en/mariadb-enterprise/maxadmin-admin-interface/

[[email protected] ~]# maxadmin //回车

MaxScale> list servers

Servers.

---------------+--------------+-------+-------------+-----------------

Server | Address | Port | Connections | Status

---------------+--------------+-------+-------------+-----------------

server1 | 172.16.8.56 | 3306 | 0 | Master, Running

server2 | 172.16.8.57 | 3306 | 0 | Slave, Running

server2 | 172.16.8.58 | 3306 | 0 | Slave, Running

---------------+--------------+-------+-------------+-----------------

12.至此MaxScale已经配置完成。现在就可以使用客户端连接Maxscale服务器端 端口为4006。

在MaxAdmin客户端管理界面进行操作:

停止MaxScale:shutdown maxscale

停止monitor:shutdown monitor

shutdown service

shutdown listener

原文地址:https://www.cnblogs.com/kinwing/p/11132030.html

时间: 2024-10-22 06:07:02

MaxScale中间件部署数据库读写分离的相关文章

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

从零开发分布式数据库中间件 一、读写分离的数据库中间件(转)

从零开发分布式数据库中间件 一.读写分离的数据库中间件 .embody { padding: 10px 10px 10px; margin: 0 -20px; border-bottom: solid 1px #ededed } .embody_b { margin: 0; padding: 10px 0 } .embody .embody_t,.embody .embody_c { display: inline-block; margin-right: 10px } .embody_t {

转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

(转)学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

原文:https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况

学会数据库读写分离、分表分库——用Mycat

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库读写分离、分表分库——用Mycat

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

新春好跑步,以及数据库“读写分离”的点滴考虑

新春的好日子: 小风吹来: 花一样的味道: 满满的幸福滋味. 迈开步子在宽敞的马路上跑步,步伐轻盈,多么美好的事情. 跑步总是枯燥的,只有奔跑奔跑: 跑步是孤独的,每个人的都有自己的节奏: 跑步的时候总爱瞎想,昨天和一些同学聊到了数据库的"读写分离". 在我有限的认识中,我一直认为数据库"读写分离",是为了提升数据库的瓶颈,因为数据库写总是相对比较少,而读取可能总是比较多,甚至高几个数量级. 比如一个电子商务网站,把某一个产品上架,可能一个月才需要写一次,但是每天都

【转】mysql数据库读写分离数据同步

转载请注明来源:mysql数据库读写分离数据同步 mysql数据库读写分离数据同步 我是用了两个xp(一个主的,一个从的)的系统测试成功的,linux系统我也做测试了,没有成功,不过我想我所遇到的问题是同一个问题,xp下的可以成功,linux下的应该也可以成功,稍候会测试,然后更新结果! PS:刚测试了下linux 可以同步成功,主服务器是xp,从服务器是centos,可以成功. 例: A机器 192.168.0.2 B机器 192.168.0.3 两个机器可以ping通,互相访问 先配置主服务

spring+mybatis利用interceptor(plugin)兑现数据库读写分离

使用spring的动态路由实现数据库负载均衡 系统中存在的多台服务器是“地位相当”的,不过,同一时间他们都处于活动(Active)状态,处于负载均衡等因素考虑,数据访问请求需要在这几台数据库服务器之间进行合理分配, 这个时候,通过统一的一个DataSource来屏蔽这种请求分配的需求,从而屏蔽数据访问类与具体DataSource的耦合: 系统中存在的多台数据库服务器现在地位可能相当也可能不相当,但数据访问类在系统启动时间无法明确到底应该使用哪一个数据源进行数据访问,而必须在系统运行期间通过某种条