MySQL5.7MHA+MaxScale2.0构建高可用环境

来源:互联网 发布:xp ubuntu双系统引导 编辑:程序博客网 时间:2024/04/27 15:34

MySQL读写分离与负载均衡--MHA与MaxScale

环境介绍

Part1:写在最前

看了某大牛的文章,讲述了一下MaxScale比LVS的好处多多,那您倒是放出来配置文件啊~~大牛说:

需要的单独找我吧,太长了配置文件……

看到这我心中久久不能平静啊。。。联系不上您呐 = =,于是各种资料各种找啊~各种坑各种血崩啊!~~~

由于不知道大牛的配置文件是什么样子,本文仅以随笔的形式,记录下实施过程。也欢迎您和我探讨您在实施MaxScale时遇到的各种问题和心得体会。


Part2:环境

MHA +

HE1 slave1

HE2 slave2

HE3 master

HE4 MHA-manager

MHA-vip


Part3:MHA

MHA的优点不作赘述,看下原理图吧

从宕机崩溃的Master保存二进制日志事件(binlogevent)

识别含有最新更新的Slave

应用差异的中继日志(relaylog)到其他Slave

应用从Master保存的二进制日志事件

提升一个Slave为新的Master

使其他的Slave连接新的Master进行复制



构建

Part1:写在最前

MHA的部署不是本文的叙述重点,网上比比皆是。这里只记录下的MHA搭建时的一些坑


Part2:

mha4mysql-manager-

mha4mysql-node-

Warning:这两个包首先你要搞到,虽然说什么的不代表支持的mysql版本,但经过测试,想要在上部署MHA,少走坑,请用的。


Part3:安装包的位置

请在所有的节点包括Manager节点安装好你的mha4mysql-node-,以保证后期在管理节点执行perl 的时候,你能如愿以偿的看到如下信息

[root@HE4 mha4mysql-manager-]# perl  *** Module::AutoInstall version *** Checking for Perl dependencies...[Core Features]- DBI                   . ()- DBD::mysql            . ()- Time::HiRes           . ()- Config::Tiny          . ()- Log::Dispatch         . ()- Parallel::ForkManager . ()- MHA::NodeConst        . ()*** Module::AutoInstall configuration finished.Writing Makefile for mha4mysql::manager


Part4:一些常见错误记录

如果遇到

这样

[root@HE2 bin]# masterha_check_repl --conf=/etc/mha/ Tue Apr  5 22:09:32 2016 - [warning] Global configuration file /etc/masterha_ not found. Skipping.Tue Apr  5 22:09:32 2016 - [info] Reading application default configuration from /etc/mha/..Tue Apr  5 22:09:32 2016 - [info] Reading server configuration from /etc/mha/..Tue Apr  5 22:09:32 2016 - [info] MHA::MasterMonitor version .Tue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/, ln188] There is no alive server. We can't do failoverTue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/, ln424] Error happened on checking configurations.  at /usr/local/lib64/perl5/MHA/ line 326Tue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/, ln523] Error happened on monitoring servers.Tue Apr  5 22:09:32 2016 - [info] Got exit code 1 (Not master dead).

解决方案

用的不是默认端口3306,请修改你的配置文件


这样

[root@HE4 ~]#masterha_check_repl --conf=/etc/mha/Tue Apr  5 22:36:33 2016 - [warning] Globalconfiguration file /etc/masterha_ not found. Skipping.Tue Apr  5 22:36:33 2016 - [info] Reading applicationdefault configuration from /etc/mha/..Tue Apr  5 22:36:33 2016 - [info] Reading serverconfiguration from /etc/mha/..Tue Apr  5 22:36:33 2016 - [info] MHA::MasterMonitorversion .Tue Apr  5 22:36:34 2016 - [info] GTID failover mode =0Tue Apr  5 22:36:34 2016 - [info] Dead Servers:Tue Apr  5 22:36:34 2016 - [info] Alive Servers:Tue Apr  5 22:36:34 2016 - [info]   (:4008)Tue Apr  5 22:36:34 2016 - [info]   (:4008)Tue Apr  5 22:36:34 2016 - [info]   (:4008)Tue Apr  5 22:36:34 2016 - [info] Alive Slaves:Tue Apr  5 22:36:34 2016 - [info]   (:4008)  Version=-log (oldest major versionbetween slaves) log-bin:enabledTue Apr  5 22:36:34 2016 - [info]     Replicating from(:4008)Tue Apr  5 22:36:34 2016 - [info]     Primary candidate for the new Master(candidate_master is set)Tue Apr  5 22:36:34 2016 - [info]   (:4008)  Version=-log (oldest major versionbetween slaves) log-bin:enabledTue Apr  5 22:36:34 2016 - [info]     Replicating from(:4008)Tue Apr  5 22:36:34 2016 - [info]     Not candidate for the new Master(no_master is set)Tue Apr  5 22:36:34 2016 - [info] Current AliveMaster: (:4008)Tue Apr  5 22:36:34 2016 - [info] Checking slaveconfigurations..Tue Apr  5 22:36:34 2016 - [warning]  relay_log_purge=0 is not set on slave(:4008).Tue Apr  5 22:36:34 2016 - [warning]  relay_log_purge=0 is not set on slave(:4008).Tue Apr  5 22:36:34 2016 - [info] Checking replicationfiltering settings..Tue Apr  5 22:36:34 2016 - [info]  binlog_do_db= , binlog_ignore_db=Tue Apr  5 22:36:34 2016 - [info]  Replication filtering check ok.Tue Apr  5 22:36:34 2016 - [info] GTID (with auto-pos)is not supportedTue Apr  5 22:36:34 2016 - [info] Starting SSHconnection tests..Tue Apr  5 22:36:35 2016 - [info] All SSH connectiontests passed successfully.Tue Apr  5 22:36:35 2016 - [info] Checking MHA Nodeversion..Tue Apr  5 22:36:36 2016 - [info]  Version check ok.Tue Apr  5 22:36:36 2016 - [info] Checking SSHpublickey authentication settings on the current master..Tue Apr  5 22:36:36 2016 - [info] HealthCheck: SSH to is reachable.Tue Apr  5 22:36:36 2016 - [info] Master MHA Nodeversion is .Tue Apr  5 22:36:36 2016 - [info] Checking recoveryscript configurations on (:4008)..Tue Apr  5 22:36:36 2016 - [info]   Executing command: save_binary_logs--command=test --start_pos=4 --binlog_dir=/log/mysql--output_file=/usr/local/mha/save_binary_logs_test --manager_version=--start_file=mysql-Tue Apr  5 22:36:36 2016 - [info]   Connecting toroot@(:22)..  Creating /usr/local/mha if not exists..Creating directory /usr/local/mha.. done.   ok.  Checking output directory is accessible ornot..   ok.  Binlog found at /log/mysql, up tomysql-Tue Apr  5 22:36:36 2016 - [info] Binlog setting checkdone.Tue Apr  5 22:36:36 2016 - [info] Checking SSHpublickey authentication and checking recovery script configurations on allalive slave servers..Tue Apr  5 22:36:36 2016 - [info]   Executing command : apply_diff_relay_logs--command=test --slave_user='root' --slave_host=--slave_ip= --slave_port=4008 --workdir=/usr/local/mha--target_version=-log --manager_version=--relay_log_info=/data/mysql/relay- --relay_dir=/data/mysql/ --slave_pass=xxxTue Apr  5 22:36:36 2016 - [info]   Connecting toroot@(:22)..Can't exec"mysqlbinlog": No such file or directory at/usr/local/lib64/perl5/MHA/ line 106.mysqlbinlog versioncommand failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and clientoptions at /usr/local/bin/apply_diff_relay_logs line493Tue Apr  5 22:36:36 2016 -[error][/usr/local/lib64/perl5/MHA/, ln205] Slaves settingscheck failed!Tue Apr  5 22:36:36 2016 -[error][/usr/local/lib64/perl5/MHA/, ln413] Slave configurationfailed.Tue Apr  5 22:36:36 2016 -[error][/usr/local/lib64/perl5/MHA/, ln424] Error happened onchecking configurations.  at/usr/local/bin/masterha_check_repl line 48Tue Apr  5 22:36:36 2016 -[error][/usr/local/lib64/perl5/MHA/, ln523] Error happened onmonitoring servers.Tue Apr  5 22:36:36 2016 - [info] Got exit code 1 (Notmaster dead). MySQL ReplicationHealth is NOT OK!


解决方案

[root@HE1 MHA]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog



或者这样

  Binlog found at /log/mysql, up to mysql-Tue Apr  5 22:43:55 2016 - [info] Binlog setting check done.Tue Apr  5 22:43:55 2016 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..Tue Apr  5 22:43:55 2016 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host= --slave_ip= --slave_port=4008 --workdir=/usr/local/mha --target_version=-log --manager_version= --relay_log_info=/data/mysql/relay-  --relay_dir=/data/mysql/  --slave_pass=xxxTue Apr  5 22:43:55 2016 - [info]   Connecting to root@(:22).. mysqlbinlog: unknown variable 'default-character-set=utf8'mysqlbinlog version command failed with rc 7:0, please verify PATH, LD_LIBRARY_PATH, and client options at /usr/local/bin/apply_diff_relay_logs line 493Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/, ln205] Slaves settings check failed!Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/, ln413] Slave configuration failed.Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/, ln424] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/, ln523] Error happened on monitoring servers.Tue Apr  5 22:43:55 2016 - [info] Got exit code 1 (Not master dead).

 

解决方案

注释掉中的

[client]

#default-character-set=utf8


遇到上述错误别慌张,看日志,根据报错来排查问题。


折腾半天,就为了这个OK


[root@HE4 mha4mysql-manager-]# masterha_check_status --conf=/etc/mha/

mha (pid:32726) is running(0:PING_OK), master:



Part1:写在最前

maxscalemariadb公司开发的一套数据库中间件,可以很方便的实现读写分离方案;并且提供了读写分离的负载均衡和高可用性保障。另外maxscale对于前端应用而言是透明的,我们可以很方便的将应用迁移到maxscale中实现读写分离方案,来分担主库的压力。maxscale也提供了sql语句的解析过滤功能。这里我们主要讲解maxscale的安装、配置以及注意事项。


Part2:整体架构



Part3:安装

Maxscale配置很简单

[root@HE3 MHA]# yum -y install maxscale--_ (只在Maxscale上执行)

[root@HE3 ~]# cat /etc/# MaxScale documentation on GitHub:# /mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-# Global parameters## Number of threads is autodetected, uncomment for manual configuration# Complete list of configuration options:# /mariadb-corporation/MaxScale/blob/master/Documentation/Getting-Started/Configuration-[maxscale]threads=auto# Server definitions## Set the address of the server to the network# address of a MySQL server.#[server1]type=serveraddress=port=3306protocol=MySQLBackendmyweight=5[server2]type=serveraddress=port=3306protocol=MySQLBackendmyweight=5[server3]type=serveraddress=port=3306protocol=MySQLBackend# Monitor for the servers## This will keep MaxScale aware of the state of the servers.# MySQL Monitor documentation:# /mariadb-corporation/MaxScale/blob/master/Documentation/Monitors/MySQL-[MySQL Monitor]type=monitormodule=mysqlmonservers=server1,server2,server3user=mysyncpasswd=MANAGERmonitor_interval=10000# Service definitions## Service Definition for a read-only service and# a read/write splitting service.## /mariadb-corporation/MaxScale/blob/master/Documentation/Routers/#[Read-Only Service]                       ###只读服务#type=service#router=readconnroute#servers=server1,server2,server3#user=sys_admin#passwd=MANAGER#router_options=slave# /mariadb-corporation/MaxScale/blob/master/Documentation/Routers/[Read-Write Service]                       ####写服务type=servicerouter=readwritesplitenable_root_user=1servers=server1,server2,server3user=sys_adminpasswd=MANAGERweightby=myweightrouter_options=slave_selection_criteria=LEAST_GLOBAL_CONNECTIONSmax_slave_connections=1# /mariadb-corporation/MaxScale/blob/master/Documentation/Reference/[MaxAdmin Service]type=servicerouter=cli#[Read-Only Listener]#type=listener#service=Read-Only Service#protocol=MySQLClient#port=4008                                  ##读服务启动监听 端口4008[Read-Write Listener]type=listenerservice=Read-Write Serviceprotocol=MySQLClientport=4006                                  ####写服务启动监听 端口[MaxAdmin Listener]type=listenerservice=MaxAdmin Serviceprotocol=maxscaledport=6603                                  ###管理端口


[root@HE3 ~]# /etc//maxscale start

Starting MaxScale: maxscale (pid 28851) is running...      [  OK  ]

 

[root@HE3 ~]#  netstat -lntp |grep maxscale

tcp        0      0 :6603                :*                   LISTEN      29878/maxscale     

tcp        0      0 :4006                :*                   LISTEN      29878/maxscale     



[root@HE3 ~]# maxadmin -pmariadb list services

Services.

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

Service Name              | Router Module        | #Users | Total Sessions

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

Read-Only Service         | readconnroute        |      1 |     5

Read-Write Service        | readwritesplit       |      1 |    11

MaxAdmin Service          | cli                  |      2 |     3

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

 

[root@HE3 ~]# maxadmin -pmariadb list servers

Servers.

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

Server             | Address         | Port  | Connections | Status             

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

server1            |    |  3306 |           0 | Slave, Running

server2            |    |  3306 |           0 | Slave, Running

server3            |    |  3306 |           0 | Master, Running

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


至此,MHA+Maxscale的环境就完成了。



读写分离与负载均衡校验

Part1:读写分离

在Master构建相应的测试表

mysql> select * from helei;+--------+| a      |+--------+| HE3    |+--------+3 rows in set ( sec)


在slave1插入数据HE1

mysql> select * from helei;+------+| a    |+------+| HE3  || HE1  |+------+


在slave2插入数据HE2

mysql> select * from helei;+------+| a    |+------+| HE3  || HE2  |+------+


现在链接4006读写分离端口,进行数据写入

[root@HE3 ~]#  mysql - -P 4006 -usys_admin -pMANAGER maxscale -e"insert into helei values('写入');"mysql: [Warning] Using a password on the command line interface can be insecure.[root@HE3 ~]#  mysql - -P 4008 -usys_admin -pMANAGER maxscale -e"select * from helei;"mysql: [Warning] Using a password on the command line interface can be insecure.+--------+| a      |+--------+| HE3    || HE1    || 写入   |+--------+

可以看到主库插入完毕后从库已经同步完成,这条查询完成在了HE1(slave1)上


Part2:负载均衡

我们配置的read比例为1:1

[root@HE3 ~]# maxadmin -pmariadb show service "Read-Write Service"Service 0xef5570Service:                             Read-Write ServiceRouter:                              readwritesplit (0x7ff5e8fa6ec0)State:                               StartedNumber of router sessions:           15Current no. of router sessions:      0Number of queries forwarded:          41Number of queries forwarded to master:2 (%)Number of queries forwarded to slave: 39 (%)Number of queries forwarded to all:   0 (%)Connection distribution based on myweight server parameter.Server               Target %    Connections  Operations                               Global  Routerserver1              %     0       0       0server2              %     0       0       0server3              %     0       0       0Started:                             Thu Nov  3 23:46:27 2016Root user access:                    EnabledBackend databases::3306  Protocol: MySQLBackend:3306  Protocol: MySQLBackend:3306  Protocol: MySQLBackendRouting weight parameter:            myweightUsers data:                          0xf09370Total connections:                   16Currently connected:                 1



[root@HE3 ~]# for i in `seq 1 10`; do mysql -h  -P 4006 -usys_admin -pMANAGER maxscale -e "select @@hostname; select sleep(10)" 2>/dev/null & done[root@HE3 ~]# +------------+| @@hostname |+------------+| HE1        |+------------++------------+| @@hostname |+------------+| HE1        |+------------++------------+| @@hostname |+------------+| HE1        |+------------++------------+| @@hostname |+------------+| HE1        |+------------++------------+| @@hostname |+------------+| HE1        |+------------++------------+| @@hostname |+------------+| HE2        |+------------++------------+| @@hostname |+------------+| HE2        |+------------++------------+| @@hostname |+------------+| HE2        |+------------++------------+| @@hostname |+------------+| HE2        |+------------++------------+| @@hostname |+------------+| HE2        |+------------+


OK!That's how it works!~



故障测试

Part1:stop slave故障

停止HE1的复制

[root@HE1 ~]# mysql-uroot -pEnter password:Welcome to the MySQLmonitor.  Commands end with ; or \g.Your MySQLconnection id is 74Server version:-log MySQL Community Server (GPL) Copyright (c) 2000,2016, Oracle and/or its affiliates. All rights reserved. Oracle is aregistered trademark of Oracle Corporation and/or itsaffiliates. Othernames may be trademarks of their respectiveowners. Type 'help;' or '\h'for help. Type '\c' to clear the current input statement. mysql> stopslave;Query OK, 0 rowsaffected ( sec) [root@HE3 ~]#maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port | Connections | Status             -------------------+-----------------+-------+-------------+--------------------server1            |    | 3306 |           0 | Runningserver2            |    | 3306 |           0 | Slave,Runningserver3            |    | 3306 |           0 | Master,Running-------------------+-----------------+-------+-------------+-------------------- [root@HE3 ~]#  mysql - -P 4006 -usys_admin-pMANAGER maxscale -e"select * from helei;"mysql: [Warning]Using a password on the command line interface can be insecure.+--------+| a      |+--------+| HE3    || HE2    || 写入  |+--------+[root@HE3 ~]#  mysql - -P 4006 -usys_admin-pMANAGER maxscale -e"select * from helei;"mysql: [Warning]Using a password on the command line interface can be insecure.+--------+| a      |+--------+| HE3    || HE2    || 写入  |+--------+

 

可以看出,在slave1故障后,所有的读操作都进入了HE2(slave2);


 

 

 

恢复HE1

 mysql> startslave;Query OK, 0 rowsaffected ( sec)  [root@HE3 ~]#maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port | Connections | Status             -------------------+-----------------+-------+-------------+--------------------server1            |    | 3306 |           0 | Slave,Runningserver2            |    | 3306 |           0 | Slave,Runningserver3            |    | 3306 |           0 | Master,Running-------------------+-----------------+-------+-------------+-------------------- 验证[root@HE3 ~]#  mysql - -P 4006 -usys_admin-pMANAGER maxscale -e"select * from helei;"mysql: [Warning]Using a password on the command line interface can be insecure.+--------+| a      |+--------+| HE3    || HE2    || 写入  |+--------+[root@HE3 ~]#  mysql - -P 4006 -usys_admin-pMANAGER maxscale -e"select * from helei;"mysql: [Warning]Using a password on the command line interface can be insecure.+--------+| a      |+--------+| HE3    || HE1    || 写入  |+--------+

 

在HE1(slave1)恢复完成后,重新有了负载均衡。

 

 

 

 

Part2:mysql down故障

[root@HE1 ~]#/etc//mysqld stopShutting downMySQL..... SUCCESS! 停止HE1(slave)可以看到转发到了HE2上 [root@HE3 ~]#  maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port | Connections | Status             -------------------+-----------------+-------+-------------+--------------------server1            |    | 3306 |           0 | Downserver2            |    | 3306 |           1 | Slave,Runningserver3            |    | 3306 |           1 | Master,Running-------------------+-----------------+-------+-------------+--------------------[root@HE3~]# mysql - -P 4006 -usys_admin -pMANAGERmysql: [Warning]Using a password on the command line interface can be insecure.Welcome to the MySQLmonitor.  Commands end with ; or \g.Your MySQLconnection id is 28948Server version:- -maxscale MySQL Community Server (GPL) Copyright (c) 2000,2016, Oracle and/or its affiliates. All rights reserved. Oracle is aregistered trademark of Oracle Corporation and/or itsaffiliates. Othernames may be trademarks of their respectiveowners. Type 'help;' or '\h'for help. Type '\c' to clear the current input statement. mysql> select@@hostname;+------------+| @@hostname |+------------+| HE2        |+------------+1 row in set (sec)  停掉2台slave,观察maxscale的状态[root@HE3 ~]#maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port | Connections | Status             -------------------+-----------------+-------+-------------+--------------------server1            |    | 3306 |           0 | Runningserver2            |    | 3306 |           0 | Runningserver3            |    | 3306 |           0 | Master, StaleStatus, Running-------------------+-----------------+-------+-------------+--------------------



Warning:这里我并没有在

[MySQL Monitor]中配置detect_stale_master=true

可以看出,在中,已经默认从库都停掉,也不影响


Part3:master故障

[root@HE3 ~]# maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port  | Connections | Status              -------------------+-----------------+-------+-------------+--------------------server1            |    |  3306 |           0 | Slave, Runningserver2            |    |  3306 |           0 | Slave, Runningserver3            |    |  3306 |           0 | Master, Running-------------------+-----------------+-------+-------------+--------------------[root@HE3 ~]# ps -ef|grep mysqlroot     27709     1  0 Nov03 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql    28415 27709  0 Nov03 ?        00:00:19 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/ --open-files-limit=8192 --pid-file=/data/mysql/ --socket=/tmp/ --port=3306root     30794 28966  0 02:34 pts/1    00:00:00 grep mysql[root@HE3 ~]# kill -9 28415 27709[root@HE3 ~]# maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port  | Connections | Status              -------------------+-----------------+-------+-------------+--------------------server1            |    |  3306 |           0 | Slave, Runningserver2            |    |  3306 |           0 | Slave, Runningserver3            |    |  3306 |           0 | Master, Running-------------------+-----------------+-------+-------------+--------------------[root@HE3 ~]# maxadmin -pmariadb list serversServers.-------------------+-----------------+-------+-------------+--------------------Server             | Address         | Port  | Connections | Status              -------------------+-----------------+-------+-------------+--------------------server1            |    |  3306 |           0 | Master, Runningserver2            |    |  3306 |           0 | Slave, Runningserver3            |    |  3306 |           0 | Running-------------------+-----------------+-------+-------------+--------------------

可以看出,kill master的mysql进程后,MHA将slave1拉成新的master,Maxsale也识别了这一状态。



Java Druid注意事项

------------以下文章取材于贺春旸技术博客-------------------

/5223301/1869414

现象:

程序会不定时的出现连接错误,问题bug的异常信息如下:

The last packet successfully received from the server was 116 milliseconds ago.  The last packet sent successfully to the server was 115 milliseconds ago.

: No database selected

 

但通过客户端sqlyog/navicat连接均为正常。

----------------------------------------------------------------------

另:有时还会出现挂起现象,4006端口直接关闭。后我们用了watch命令后台跑监控

watch -d /bin/bash /root/sh/restart_

1
2
3
4
5
6
7
#!/bin/bash
 
netstat -ntlp | grep maxscale | grep 4006 > /dev/null 2>&1
 
if [ $? -eq 1 ];then
/etc/init.d/maxscale start
fi


解决:以下可以直接在url上配置:autoReconnect=true

对于以上的只能在jdbc的链接池里设置:



第一个设置成ture,超时自动链接,对于mysql要把第二个设置成false,不启用缓存。

以上是开发需要注意的都是一些基本的配置。

 

其目的为:每次归还连接时执行select 'x'检测连接是否有效。 



——总结——

maxscale的核心就在于内个配置文件,根据不同的业务和架构,做好相应的配置,本文意在抛砖引玉,如果您有更全的配置文件,欢迎您分享给笔者。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。


0 0