maxscale实现读写分离

2024-04-02 05:18
文章标签 分离 实现 读写 maxscale

本文主要是介绍maxscale实现读写分离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、           maxscale简述

1.   maxscale简述

MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。在MHA架构上,主库宕掉后,其中从库提升为主,maxscale可以自动判断新主库,而使新主库承担写服务,也可实现从库的宕机自动离线恢复后自动上线功能。

2.   目录结构说明

目录描述

目录名

Maxscale配置文件

/etc/maxscale.cnf

Maxscale日志文件

/var/log/maxscale/ maxscale1.log

3.   MySQL启动用户

root

二、           安装maxscale

1.   将安装包和安装脚本上传到服务器/opt/software下,或者直接下载

# wget https://downloads.mariadb.com/enterprise/t6c0-wrnh/mariadb-maxscale/1.3.0/rhel/7/x86_64/maxscale-1.3.0-1.rhel7.x86_64.rpm

# ls -l

-rw-r--r-- 1 root root  39413772 Feb 8 22:11 maxscale-1.3.0-1.rhel7.x86_64.rpm

2.   执行安装命令

# rpm-ivhmaxscale-1.3.0-1.rhel7.x86_64.rpm

   1:maxscale-1.3.0-1                ################################# [100%]

三、           修改配置文件并启动

1.   在数据库中创建用户并授予相关权限

mysql>grant select,update,delete,insert on db.* to ‘user’@’%’ identified by‘password’;

mysql>flush privileges;

2.   修改配置文件

/etc/maxscale.cnf

[maxscale]

threads=8

 

[server1]#MySQL服务器配置

type=server

address=10.11.98.1

port=3306

protocol=MySQLBackend

 

[server2]

type=server

address=10.11.98.2

port=3306

protocol=MySQLBackend

 

[server3]

type=server

address=10.11.98.3

port=3306

protocol=MySQLBackend

 

 

[MySQLMonitor] #监控配置

type=monitor

module=mysqlmon

servers=server1,server2,server3

user=repl

passwd=repl4slave

monitor_interval=10000

 

#[Read-OnlyService]

#type=service

#router=readconnroute

#servers=server2,server3

#user=

#passwd=

#router_options=slave

 

[Read-WriteService] #读写分离配置

type=service

router=readwritesplit

servers=server1,server2,server3

user=masterha

passwd=masterha

max_slave_connections=100%

max_slave_replication_lag=10

 

[MaxAdminService]

type=service

router=cli

 

#[Read-OnlyListener]

#type=listener

#service=Read-OnlyService

#protocol=MySQLClient

#port=4008

 

[Read-WriteListener] #读写分离服务监听配置,端口可改

type=listener

service=Read-WriteService

protocol=MySQLClient

port=4005

 

[MaxAdminListener]

type=listener

service=MaxAdminService

protocol=maxscaled

port=6603

3.   启动服务

# systemctl start maxscale.service

#检查端口监听状态

# netstat-lntp |grep maxscale

tcp        0     0 0.0.0.0:6603            0.0.0.0:*               LISTEN      28352/maxscale     

tcp        0     0 0.0.0.0:4005           0.0.0.0:*               LISTEN      28352/maxscale     

 

四、           日常维护命令

1.   查看当前服务器

#maxadmin list servers #默认密码为mariadb

Password:

Servers.

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

Server             | Address         | Port | Connections | Status             

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

server1            | 10.11.98.1      | 3306 |           0 | Master,Running

server2            | 10.11.98.2      | 3306 |           0 | Slave,Running

server3            | 10.11.98.3      | 3306 |           0 | Slave,Running

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

2.   查看当前服务

#maxadmin list services

Password:

Services.

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

ServiceName              | Router Module        | #Users | Total Sessions

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

Read-WriteService        | readwritesplit       |     1 |  8751

MaxAdminService          | cli                  |      2 |    5

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

3.   查看当前监听端口

#maxadmin list listeners

Password:

Listeners.

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

ServiceName         | Protocol Module    | Address         | Port | State

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

Read-WriteService   | MySQLClient        | *               |  4005 | Running

MaxAdminService     | maxscaled          | *               |  6603 | Running

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

4.   剔除与添加服务器

MaxScale>set server server3 maintenance #设置服务器为维护状态

MaxScale>clear server server3 maintenance #设置服务器上线

这篇关于maxscale实现读写分离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869070

相关文章

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进