MySQL高可用——MaxScale

羡仙. • 2020 年 02 月 26 日

本文基于MHA

依赖包yum install -y novacom-server.x86_64 libaio.x86_64 libaio-devel.x86_64

安装

官网下载地址

[root@localhost softpackage]# rpm -ivh maxscale-2.4.7-1.centos.7.x86_64.rpm

警告:maxscale-2.4.7-1.centos.7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 28c12247: NOKEY

准备中... ################################# [100%]

正在升级/安装...

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

Created symlink from /etc/systemd/system/multi-user.target.wants/maxscale.service to /usr/lib/systemd/system/maxscale.service.

环境介绍服务器功能hostnameMysql Server_id192.168.128.125从库qvbilam_mha_111

192.168.128.126主库qvbilam_mha_212

192.168.128.127从库qvbilam_mha_313

192.168.128.128从库qvbilam_mha_414

192.168.128.129MHA,MaxScalelocalhost-

使用

创建权限用户-- 创建监控账号

create user qvbilam_scale_monitor@'192.168.128.%' identified by 'qvbilam';

-- 授权用于监控服务账号权限

grant replication slave,replication client on *.* to qvbilam_scale_monitor@'192.168.128.%';

-- 创建路由账号

create user qvbilam_scale_route@'192.168.128.%' identified by 'qvbilam';

-- 授予路由账号权限

grant select on mysql.* to qvbilam_scale_route@'192.168.128.%';

修改配置# cp /etc/maxscale.cnf /etc/maxscale.cnf.back

vi /etc/maxscale.cnf

# --------------- 内容如下 ---------------

# 进程数,

[maxscale]

threads=auto

# 数据库地址

[server1]

type=server

address=192.168.128.125

port=3306

protocol=MariaDBBackend

[server2]

type=server

address=192.168.128.126

port=3306

protocol=MariaDBBackend

[server3]

type=server

address=192.168.128.127

port=3306

protocol=MariaDBBackend

[server4]

type=server

address=192.168.128.128

port=3306

protocol=MariaDBBackend

# 监控模块

[MariaDB-Monitor]

type=monitor

module=mariadbmon

servers=server1,server2,server3,server4 # 需要监控的服务器

user=qvbilam_scale_monitor # Mysql监控用户

password=qvbilam # Mysql监控密码

monitor_interval=2000 # 监控间隔时间/毫秒

# 只读模块,不需要注释掉

# [Read-Only-Service]

# type=service

# router=readconnroute

# servers=server1

# user=myuser

# password=mypwd

# router_options=slave

# 读写分离模块

[Read-Write-Service]

type=service

router=readwritesplit

servers=server1,server2,server3,server4 # 服务列表

user=qvbilam_scale_route # mysql创建的路由账号

password=qvbilam # mysql路由账号的密码

max_slave_replication_lag=60 # 从服务器延迟超过60秒后不参与读写分离的集群中

# 只读服务监听,不需要注释掉

# [Read-Only-Listener]

# type=listener

# service=Read-Only-Service

# protocol=MariaDBClient

# port=4008

# 读写分离监听

[Read-Write-Listener]

type=listener

service=Read-Write-Service

protocol=MariaDBClient

port=3006 # 默认4006,为了方便相当于使用mysql.

# maxadmin 服务

[MaxAdmin-Service]

type=service

router=cli

[MaxAdmin-Listener]

type=listener

service=MaxAdmin-Service

protocol=maxscaled

port=6603

启动# 惊奇的发现会自动生成maxscale 用户

[root@localhost ~]# cat /etc/passwd | grep maxscale

maxscale:x:995:994::/home/maxscale:/bin/false

# 启动报错

[root@localhost ~]# maxscale

Error: MaxScale cannot be run as root.

Failed to write child process message!

# 不让用root启动,用自动创建的用户启动测试

[root@localhost ~]# maxscale --u=maxscale

Failed to open file '/var/log/maxscale/maxscale.log': 13, Permission denied

# 给log文件权限后再启动

[root@localhost ~]# chmod 777 maxscale.log

[root@localhost maxscale]# maxscale --u=maxscale -f /etc/maxscale.cnf

# 通过maxadmin查看集群状态 默认账号admin,默认密码mariadb

[root@localhost ~]# maxadmin --user=admin --password=mariadb

MaxScale> list servers

Servers.

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

Server | Address | Port | Connections | Status

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

server1 | 192.168.128.125 | 3306 | 0 | Slave, Running

server2 | 192.168.128.126 | 3306 | 0 | Master, Running

server3 | 192.168.128.127 | 3306 | 0 | Slave, Running

server4 | 192.168.128.128 | 3306 | 0 | Slave, Running

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

测试

连接MaxScale# 连接监控服务器的maxscale服务

# -u: maxscale配置中[Read-Write-Service]模块下的user,即mysql中创建的路由用户

# -h: 监控服务器ip(没有启动mysql)

# -P: maxscale配置中[Read-Write-Listener]模块下的port,默认4406

mysql -uqvbilam_scale_route -pqvbilam -h192.168.128.129 -P3306

# 成功进入mysql界面

mysql: [Warning] Using a password on the command line interface can be insecure.

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

Your MySQL connection id is 17

Server version: 5.7.25-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

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

affiliates. Other names may be trademarks of their respective

owners.

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

MySQL [(none)]>

读写分离

通过下面演示可以看到当执行读操作的时候,分配的主机名是qvbilam_mha_1(从库125),当执行事务也就是写操作的时候,分配的主机名为qvbilam_mha_2(主库126).# 测试读

MySQL [(none)]> select @@hostname;

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

| @@hostname |

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

| qvbilam_mha_1 |

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

1 row in set (0.01 sec)

# 测试写

MySQL [(none)]> begin;

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> select @@hostname;

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

| @@hostname |

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

| qvbilam_mha_2 |

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

1 row in set (0.00 sec)

MySQL [(none)]> rollback;

Query OK, 0 rows affected (0.00 sec)

maxscale mysql 主从_MySQL高可用——MaxScale相关推荐

  1. mysql keepalived主从_mysql高可用架构之(一)基于自身主从复制&keepalived实现

    系统环境及架构 #主机名 系统版本 mysql版本 ip地址 mysqlMaster centos7.4 mysql5.7 192.168.1.42 mysqlSlave centos7.4 mysq ...

  2. 方案 mysql 优点_mysql高可用方案分析

    低读低写并发.低数据量方案 方案一:双机高可用方案 1.数据库架构图 2.特点 一台机器A作为读写库,另一台B作为备份库:A库故障后B库作为读写库:A库恢复后A作为备库. 3.开发说明 此种情况下,数 ...

  3. mysql主从及高可用3

    loose-(加在数据前面,正确就起来,错误就警告但是不影响起来) 工作中尽量不要跨库操作,不然有可能会失效 目录 半同步复制 副服务器倒入恢复主服务器 复制过滤器 GTID复制 并行复制   (增加 ...

  4. MySQL 5.6通过Keepalived+互为主从实现高可用架构

    本文将介绍两台Mysql如何实现高可用架构.通常我们会配置主从同步,但这样若主的Mysql挂掉,还需要手动干预,例如把指向主库的IP地址修改为指向从库的IP,为了实现自动切换到从数据库,我们可以使用K ...

  5. mysql高可用_mysql高可用方案

    第一节:mysql 高可用方案 1.1 一主一从架构 mysql 配置为主从模式,从库是主库的 backup,同一时间设置其中一台为主服务器,提供读写,另一台服务器作为热备,不提供读写,通过复制与主服 ...

  6. nginx实现mysql高可用_MySQL高可用

    3,nfs高可用,keepalive使用脚本(自己编写)vrrp_script {},通过脚本返回的状态(根据keepalive自定)判断drbd的主从,然后飘动vip,同时再触发脚本,切换drbd的 ...

  7. mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)

    Mysql双主双活+keepalived实现高可用 文件夹 1.前言... 4 2.方案... 4 2.1.环境及软件... 4 2.2.IP规划... 4 2.3.架构图... 4 3.安装设置MY ...

  8. 路由器snmp配置_基于keepalived配置数据库主从实现高可用

    基于keepalived配置数据库主从实现高可用 使用keepalived来监听端口,实现数据库的高可用.实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后, ...

  9. MySQL数据库的高可用方案总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  10. heartbeat+iscsi+mysql实现双机高可用

    8.heartbeat+iscsi+mysql实现双机高可用 虚拟地址的迁移 iscsi提供存储共享 (mysql 是application  也可以是ftp web等) 在iscsi服务器上:10. ...

最新文章

  1. RichTextBox粘贴两次以及去掉粘贴内容的格式问题
  2. 进击的 Spring Cloud Alibaba —— 框架与服务
  3. 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得
  4. 演练 小说排行榜 0912
  5. 深度学习-函数-tf.nn.embedding_lookup 与tf.keras.layers.Embedding
  6. Spark基础学习笔记20:RDD持久化、存储级别与缓存
  7. python多用户登录_python 多用户登录
  8. 对象的List成员添加元素
  9. 矩阵理论应用之反射变换的理解
  10. java8steam流 filler_做有机硅,不懂英文哪能行?——赶紧收藏,说不定哪天就用到了!...
  11. 计算机学业水平考试反思总结8百,考试反思与总结
  12. python爬虫构建国外代理池_Ipidea丨构建Python网络爬虫代理池
  13. C语言 | 条件运算符
  14. html页面虚化,css实现背景虚化效果的示例代码
  15. 深度学习——Noisier2Noise
  16. Arduino-超声波测距仪-实现近距离蜂鸣器报警
  17. 专访羽顺热能董事长陈群:荣誉就是不懈的努力
  18. 计算机科学专刊的区别,EI和SCI期刊的正刊和专刊有区别吗
  19. jquery 插件 countdown.js 倒计时插件
  20. web渗透测试之攻破登录页面

热门文章

  1. IP网络性能测试工具——Renix Perf
  2. wifi信号增强android,WiFi信号增强大师
  3. 护理教育学考试复习题
  4. 波动率模型:现货、期货及期货期权
  5. 残差网络(Residual Network),残差连接(skip-connect)
  6. 淘宝/天猫API ,获得淘口令真实url
  7. 微商怎么引流被加精准粉?微商有效引流被加方法
  8. HTTPS是如何保证数据传输安全的?
  9. 为什么低通滤波器的作用相当于积分器
  10. Java多线程 - 线程状态