【20180523】ProxySQL+MHA的配置以及一些问题描述

ProxySQL+MHA的各自搭建在这里不再描述了。具体的搭建可以自行谷歌,但是需要注意的是MHA在进行故障转移的时候不需要做VIP切换操作即可。

环境配置信息

  1. master: 172.16.3.5:3307
  2. slave:
    • 172.16.3.6:3307
    • 172.16.3.7:3306
    • 172.16.3.6:3307
  3. proxysql: 172.16.3.15

ProxySQL配置

  1. 配置链接后端MySQL实例的用户。这个用户一定要真实存在,并且这个用户会以[email protected]的身份去访问后端的MySQL实例。

    [email protected] 10:51:  [(none)]> select username,password,active,default_hostgroup from mysql_users;
    +----------+-------------+--------+-------------------+
    | username | password    | active | default_hostgroup |
    +----------+-------------+--------+-------------------+
    | rpl      | Redhat_2018 | 1      | 10                |
    +----------+-------------+--------+-------------------+
    1 row in set (0.01 sec)
    • active: 表示启用这个用户,这个用户是活动用户
    • default_hostgroup: 默认的MySQL组,若是在mysql_query_rules没有匹配到,则所有的操作则会默认在default_hostgroup这个组中执行。
    • transaction_persistent: 同一个事务在同一个实例执行
  2. 配置链接后端的MySQL实例。
    [email protected] 11:48:  [(none)]> select  hostgroup_id,hostname,port,weight from  mysql_servers;
    +--------------+------------+------+--------+
    | hostgroup_id | hostname   | port | weight |
    +--------------+------------+------+--------+
    | 11           | 172.16.3.6 | 3307 | 100    |
    | 10           | 172.16.3.5 | 3307 | 100    |
    | 10           | 172.16.3.7 | 3307 | 100    |
    | 11           | 172.16.3.7 | 3306 | 100    |
    | 11           | 172.16.3.7 | 3307 | 100    |
    +--------------+------------+------+--------+
    5 rows in set (0.00 sec)
    • hostgroup_id: 根据组ID分成不同类型的
  3. 配置mysql_replication_hostgroups。主要目的是监控后端的MySQL实例是master还是slave。
    [email protected] 11:50:  [(none)]> select * from mysql_replication_hostgroups;
    +------------------+------------------+---------+
    | writer_hostgroup | reader_hostgroup | comment |
    +------------------+------------------+---------+
    | 10               | 11               |         |
    +------------------+------------------+---------+
    1 row in set (0.00 sec)
    • writer_hostgroup: 专门进行写操作,会监控MySQL实例是否关闭了super_read_only和read_only。
    • reader_hostgroup: 专门进行读操作,会监控MySQL实例是否开启了super_read_only和read_only。
  4. 配置mysql_query_rules,这个是重中之重。
    [email protected] 14:28:  [(none)]> select rule_id,active,match_pattern,apply from mysql_query_rules;
    +---------+--------+-----------------------+-------+
    | rule_id | active | match_pattern         | apply |
    +---------+--------+-----------------------+-------+
    | 1       | 1      | ^SELECT .*FOR UPDATE$ | 1     |
    | 2       | 1      | ^SELECT               | 1     |
    +---------+--------+-----------------------+-------+
    2 rows in set (0.00 sec)
    [email protected] 14:29:  [(none)]>
    • rule_id: 过滤规则的ID,一般都是从小往大进行匹配的,所以建议不要从1开始,最好是从中间的值开始,方便后续出现紧急情况可以插入在前面。
  5. 配置监控用户。这个用户也必须真实存在,并且要有super,replication client的权限。
    set global mysql-monitor_username=‘username‘;
    set global mysql-monitor_password=‘new_password‘

注意点

  1. 路由规则越多,性能越差。
  2. 通过ProxySQL链接后端的MySQL的时候,使用use schema切换数据库的时候会花费比较长的时间。
    [email protected] 14:58:  [(none)]> use yeah
    Database changed
    [email protected] 14:58:  [yeah]> use zabbix
    • 在使用mysql登陆的时候加上参数-A,就是每次链接不会自动刷新table的缓存信息,就是不会将最新的table信息缓存在本地。
    • 遇到这种情况前提就是在配置mysql_users表的时候插入的时候没有指定默认的default_hostgroup,导致默认的default_hostgroup为0,是information_schema,若是选择了一个已经存在的hostgroup_id则不会出现这种情况。
  3. 在proxysql的表mysql_servers中插入server信息,将master的hostgroup_id设置为10,slave的hostgroup_id设置为11,但是发现hostgroup_id为10这个分组出现了slave的信息。
    [email protected] 15:02:  [(none)]> select * from mysql_servers;
    +--------------+------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    | hostgroup_id | hostname   | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
    +--------------+------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    | 11           | 172.16.3.6 | 3307 | ONLINE | 100    | 0           | 1000            | 0                   | 0       | 0              | slave   |
    | 10           | 172.16.3.5 | 3307 | ONLINE | 100    | 0           | 1000            | 0                   | 0       | 0              | master  |
    | 10           | 172.16.3.7 | 3307 | ONLINE | 100    | 0           | 1000            | 0                   | 0       | 0              | slave   |
    | 11           | 172.16.3.7 | 3306 | ONLINE | 100    | 0           | 1000            | 0                   | 0       | 0              | slave   |
    | 11           | 172.16.3.7 | 3307 | ONLINE | 100    | 0           | 1000            | 0                   | 0       | 0              | slave   |
    +--------------+------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    5 rows in set (0.00 sec)
    [email protected] 15:05:  [(none)]>

    可以很明显的看得到在第三行172.16.3.7:3307这个实例出现了俩次,但是实际情况是我只insert了1次,并且将其insert 到hostgroup_id为11的组上面,但是实际情况却在10,11俩组分别出现了。

    • 这个是因为proxysql会主动去检测后端的参数read_only和super_read_only,当发现这俩个参数是OFF的时候它会认为这个MySQL实例是master,所以需要将这俩个参数开启,在proxysql中就发现slave的信息不回出现在hostgroup_id为10的分组里面了。
  4. 登陆之后发现无法执行show tables,create table 之类的操作。
    [email protected] 15:19:  [yeah]> show tables;
    ERROR 9001 (HY000): Max connect timeout reached while reaching hostgroup 0 after 10000ms
    [email protected] 15:20:  [yeah]>
    • 主要是因为在表mysql_users插入用户信息的时候没有设置default_hostgroup,那么在路由规则不匹配的时候它会默认去匹配hostgroup_id为0,default_hostgroup为information_schema。这个时候只需要将default_hostgroup设置为10就可以了。

原文地址:http://blog.51cto.com/11819159/2119462

时间: 2024-10-17 04:05:58

【20180523】ProxySQL+MHA的配置以及一些问题描述的相关文章

MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置

一.总概 1.MHA介绍 MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步). MHA有两部分组成:MHA Manager(管理节点)和MHA Node(数据节点). MHA Manager可以单独部署在一台独立机器上管理多个master-slave集群,也可以部署在一台slave上.MHA Manager探测集群的node节点,当发现master出现故障的时候,它可以自动将具有最新数据的s

MySQL Group Replication mgr 单主 proxysql 读写分离配置过程

1.前期准备,mgr安装见上一篇文章 2.创建用户和导入脚本 GRANT ALL ON *.* TO 'rootuser'@'%' IDENTIFIED BY '123456'; /mgr/mysql/bin/mysql -h127.0.0.1 -P24802 <a.sql [[email protected] ~]# cat a.sql USE sys; DELIMITER $$ CREATE FUNCTION IFZERO(a INT, b INT) RETURNS INT DETERMIN

Mysql MHA(GTID)配置(实操)

实现环境 centos6.7 MYSQL5.6.36 主:192.168.1.191 从1:192.168.1.145 从2:192.168.1.146 监测:放在从2上 192.168.1.146 虚拟IP:192.168.1.222 准备软件包:下载链接: https://pan.baidu.com/s/1jHYafcU 密码: irbv epel-release-6-8.noarch.rpm   (所有服务器上都要) mha4mysql-node-0.56-0.el6.noarch.rpm

mha简单配置

关于mha mha是一款开源的mysql的高可用程序,它为mysql主从复制架构提供了自动化主机故障转移功能.mha检测架构的所有节点,一但检测到主节点有故障时,会立即提升拥有最新数据的从节点成为新的主节点.除了故障时转移,mha也支持在线手动切换.当主节点需要下线维护,也可以实现. 实验环境 master:192.168.32.111 slave:192.168.32.112 slave:192.168.32.104 manager:192.168.32.105 实验前提 1.节点内所有主机时

数据库 之 MHA 简要配置文档

1  概述 当主服务器挂掉的时候,考虑将从服务器提升为主服务器,一般是将数据落后最少的从服务器提升为主服务器,但是,这里有个问题是,如果被提升的从服务器上可能有些没完成的事务在其他从服务器上已经完成,因此,被提升的从服务器还是存在数据不同步的情况,要解决的方法是借助外在的辅助机制,监控所有从服务器的事务完成情况,并将所有进度做并集,将每一个节点完成的事务并集补全在其中一台数据最接近于主服务的从服务器上,因此补上并集的从服务器数据是最完整的.此时,主服务器异常时,就将该从服务器提升为主服务器. 外

MHA+ProxySQL实现读写分离高可用

最近在研究ProxySQL,觉得还挺不错的,所以就简单的折腾了一下,ProxySQL目前也是Percona在推荐的一个读写分离的中间件.关于详细的介绍可以参考官方文档.https://github.com/sysown/proxysql/wiki 本文主要介绍的是MHA+ProxySQL读写分离以及高可用,ProxySQL的细节请参考文档,目前已经有人写发非常详细了,文章最后会给出链接.当然和Group Replication,PXC搭配那是更完美的.关于MHA的配置参考我前面的文章,本文就不再

MySQL 之 MHA + ProxySQL + keepalived 实现读写分离,高可用(一)

准备服务器: docker network create --subnet=192.168.0.0/16 staticnetdocker run -d --privileged -v `pwd`/mysql_data:/data -p 3001:3306 --name mysql5-master --hostname mysql5-master --net staticnet --ip 192.168.0.101 eiki/mysql:5.7.23 /usr/sbin/init docker r

MHA大杀器——mysql主、从双击热备配置安装解析

MHA的主要作用: 在mysql的主从复制中,当master崩溃了,利用mha实现backup顶替崩溃的master自动切换为master继续工作,从而实现高可用. 下面介绍本次实验的环境: MHA分为manager管理节点和node节点,一般来讲最少是三台服务器,两台node节点,一台manager节点,但本次环境限制,只能使用两台,所以把manager也装在一台node节点上. 两台服务器,两个网口: IP: 10.2.16.253     10.0.0.1  node1 10.2.16.2

MySql 的 MHA 配置

MySql Faliover 可以使用MHA来配置,其原理是通过半同步日志,自动选举slave为新的master, 如果配合VIP使用,可以做到应用层平滑过渡(一般在30秒内切换完成),由于使用了半同步日志, 可以避免脑裂(MMM方案的问题)和最大程度的恢复master状态,保证一致性. 安装 MHA mha-manager : 10.1.1.107 node                  : 10.1.1.102,10.1.1.107,10.1.1.108 在三台node节点上配置别名 v