maxscale mysql 主从_MariaDB主从配置与MaxScale实现MySQL读写分离

17270ce95af85a4a2d33846cd5831d99.png

MaxScale由MariaDB开发,MaxScale是插件式结构,允许用户开发适合自己的插件。

一、MaxScale插件

认证插件

提供了登录认证功能,MaxScale 会读取并缓存数据库中 user 表中的信息,当有连接进来时,先从缓存信息中进行验证,如果没有此用户,会从后端数据库中更新信息,再次进行验证

协议插件

包括客户端连接协议,和连接数据库的协议

路由插件

决定如何把客户端的请求转发给后端数据库服务器,读写分离和负载均衡的功能就是由这个模块实现的

监控插件

对各个数据库服务器进行监控,例如发现某个数据库服务器响应很慢,那么就不向其转发请求了

日志和过滤插件

提供简单的数据库防火墙功能,可以对SQL进行过滤和容错

二、MaxScale安装配置

1、MariaDB主从配置

主服务器

mysqld新增如下配置

vi /etc/my.cnf.d/server.cnf

[mysqld]

#集群配置 - 主服务器

server-id=40

# binlog-do-db = testdb //只记录testdb库变化,多个库用‘,’分隔

# binlog-ignore-db=mysql //忽略mysql库变化,多个库用‘,’分隔

从服务器

mysqld新增如下配置

vi /etc/my.cnf.d/server.cnf

[mysqld]

#集群配置 - 从服务器

server-id=126

# binlog-do-db = testdb //只记录testdb库变化,多个库用‘,’分隔

binlog-ignore-db=mysql

主从服务器服务重启

systemctl restart mariadb.service

主服务器备份sql并导入从服务器

主服务器创建Replication账户

create user 'lbh18'@'%' identified by '81hbl';

GRANT REPLICATION SLAVE ON *.* TO lbh18@从服务器ip IDENTIFIED BY '81hbl';

FLUSH PRIVILEGES;

查看主服务器最新binlog日志文件名

SHOW MASTER STATUS;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000006 | 811 | | |

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

1 row in set (0.00 sec)

设置从服务器为主服务器的从库并启动从服务器主从复制

change master to master_host='主服务器ip',master_user='lbh18',master_password='81hbl',master_port=10336,master_log_file='mysql-bin.000006',master_log_pos=811;

start slave;

show slave status\G

设置从服务器为只读模式

#登陆mysql查看只读状态

SHOW global variables like 'read%';

#编辑配置文件设置只读状态

[mysqld]

...

read_only=1

...

#重启从服务器mysql服务

systemctl restart mariadb.service

2、MaxScale配置

下载安装MaxScale

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

wget https://downloads.mariadb.com/MaxScale/2.2.0/centos/7server/x86_64/maxscale-2.2.0-1.centos.7.x86_64.rpm

rpm -ivh maxscale-2.2.0-1.centos.7.x86_64.rpm

MariaDB主服务器创建监控与路由用户

#监控用户

create user scalemon@'%' identified by "密码";

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

#路由用户

create user maxscale@'%' identified by "密码";

MaxScale服务器修改配置

vi /etc/maxscale.cnf

[maxscale]

threads=auto

log_info=1

logdir=/tmp/

[server1]

type=server

address=主MariaDB服务器

port=10336

protocol=MySQLBackend

[server2]

type=server

address=从MariaDB服务器

port=10336

protocol=MySQLBackend

[MySQL Monitor]

type=monitor

module=mysqlmon

servers=server1,server2

user=scalemon

passwd=监控用户密码

monitor_interval=10000

# 确保所有slave挂掉后maxscale可正常识别master

detect_stale_master=true

[Read-Write Service]

type=service

router=readwritesplit

servers=server1,server2

user=maxscale

passwd=路由用户密码

max_slave_connections=100%

#保证会话的一致性

use_sql_variables_in=master

#允许root登录

enable_root_user=1

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

max_slave_replication_lag=3600

[Read-Only Service]

type=service

router=readconnroute

servers=server1,server2

user=maxscale

passwd=监控用户密码

router_options=slave

#允许root用户登录执行

enable_root_user=1

#主从权重

weightby=serv_weight

启动服务并查看监听端口

maxscale --config=/etc/maxscale.cnf

netstat -ntelp

MaxScale管理器

#执行以下命令

maxadmin

list servers

#状态如下

Servers.

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

Server | Address | Port | Connections | Status

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

server1 | 主服务器ip | 10336 | 0 | Master, Running

server2 | 从服务器ip | 10336 | 0 | Slave, Running

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

至此,完成MaxScale中间件实现MySQL读写分离。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值