MySQL5.7MHA+MaxScale2.0构建高可用环境51CTO博客 - 娱乐之横扫全球

MySQL5.7MHA+MaxScale2.0构建高可用环境51CTO博客

2019年03月04日14时47分02秒 | 作者: 吉星 | 标签: 装备,环境,能够 | 浏览: 2364

MySQL读写别离与负载均衡MHA与MaxScale环境介绍

Part1:写在最前

看了某大牛的文章,叙说了一下MaxScale比LVS的好处多多,那您却是放出来装备文件啊~~大牛说:

需求的独自找我吧,太长了装备文件……

看到这我心中久久不能平静啊。。。联络不上您呐 = =,所以各种材料各种找啊~各种坑各种血崩啊!~~~

因为不知道大牛的装备文件是什么姿态,本文仅以漫笔的方式,记载下施行进程。也欢迎您和我讨论您在施行MaxScale时遇到的各种问题和心得体会。


Part2:环境

MySQL5.7 MHA + MaxScale2.0

192.168.1.248 HE1 slave1

192.168.1.249 HE2 slave2

192.168.1.250 HE3 master

192.168.1.251 HE4 MHA-manager

192.168.1.100 MHA-vip


Part3:MHA

MHA的长处不作赘述,看下原理图吧

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

辨认含有最新更新的Slave

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

使用从Master保存的二进制日志事情

提高一个Slave为新的Master

使其他的Slave衔接新的Master进行仿制



构建MySQL5.7MHA

Part1:写在最前

MHA的布置不是本文的叙说要点,网上举目皆是。这儿只记载下MySQL5.7的MHA建立时的一些坑


Part2:

①mha4mysql-manager-0.57.tar.gz

②mha4mysql-node-0.57.tar.gz

Warning:警告这两个包首要你要搞到,尽管说0.56什么的不代表支撑的mysql版别,但经过测验,想要在MySQL5.7上布置MHA,少走坑,请用0.57的。


Part3:装置包的方位

请在一切的节点包含Manager节点装置好你的mha4mysql-node-0.57.tar.gz,以确保后期在办理节点履行perl Makefile.PL的时分,你能如愿以偿的看到如下信息

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


Part4:一些常见过错记载

假如遇到

①这样

[root@HE2 bin]# masterha_check_repl conf=/etc/mha/mha.conf 
Tue Apr  5 22:09:32 2016 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Apr  5 22:09:32 2016 - [info] Reading application default configuration from /etc/mha/mha.conf..
Tue Apr  5 22:09:32 2016 - [info] Reading server configuration from /etc/mha/mha.conf..
Tue Apr  5 22:09:32 2016 - [info] MHA::MasterMonitor version 0.57.
Tue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/ServerManager.pm, ln188] There is no alive server. We cant do failover
Tue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations.  at /usr/local/lib64/perl5/MHA/MasterMonitor.pm line 326
Tue Apr  5 22:09:32 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, 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/mha.conf
Tue Apr  5 22:36:33 2016 - [warning] Global
configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Apr  5 22:36:33 2016 - [info] Reading application
default configuration from /etc/mha/mha.conf..
Tue Apr  5 22:36:33 2016 - [info] Reading server
configuration from /etc/mha/mha.conf..
Tue Apr  5 22:36:33 2016 - [info] MHA::MasterMonitor
version 0.57.
Tue Apr  5 22:36:34 2016 - [info] GTID failover mode =
0
Tue 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]   192.168.1.250(192.168.1.250:4008)
Tue Apr  5 22:36:34 2016 - [info]   192.168.1.248(192.168.1.248:4008)
Tue Apr  5 22:36:34 2016 - [info]   192.168.1.249(192.168.1.249:4008)
Tue Apr  5 22:36:34 2016 - [info] Alive Slaves:
Tue Apr  5 22:36:34 2016 - [info]   192.168.1.248(192.168.1.248:4008)  Version=5.6.16-log (oldest major version
between slaves) log-bin:enabled
Tue Apr  5 22:36:34 2016 - [info]     Replicating from
192.168.1.250(192.168.1.250: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]   192.168.1.249(192.168.1.249:4008)  Version=5.6.16-log (oldest major version
between slaves) log-bin:enabled
Tue Apr  5 22:36:34 2016 - [info]     Replicating from
192.168.1.250(192.168.1.250: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 Alive
Master: 192.168.1.250(192.168.1.250:4008)
Tue Apr  5 22:36:34 2016 - [info] Checking slave
configurations..
Tue Apr  5 22:36:34 2016 - [warning]  relay_log_purge=0 is not set on slave
192.168.1.248(192.168.1.248:4008).
Tue Apr  5 22:36:34 2016 - [warning]  relay_log_purge=0 is not set on slave
192.168.1.249(192.168.1.249:4008).
Tue Apr  5 22:36:34 2016 - [info] Checking replication
filtering 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 supported
Tue Apr  5 22:36:34 2016 - [info] Starting SSH
connection tests..
Tue Apr  5 22:36:35 2016 - [info] All SSH connection
tests passed successfully.
Tue Apr  5 22:36:35 2016 - [info] Checking MHA Node
version..
Tue Apr  5 22:36:36 2016 - [info]  Version check ok.
Tue Apr  5 22:36:36 2016 - [info] Checking SSH
publickey authentication settings on the current master..
Tue Apr  5 22:36:36 2016 - [info] HealthCheck: SSH to
192.168.1.250 is reachable.
Tue Apr  5 22:36:36 2016 - [info] Master MHA Node
version is 0.57.
Tue Apr  5 22:36:36 2016 - [info] Checking recovery
script configurations on 192.168.1.250(192.168.1.250: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=0.57
start_file=mysql-bin.000009
Tue Apr  5 22:36:36 2016 - [info]   Connecting to
root@192.168.1.250(192.168.1.250:22)..
  Creating /usr/local/mha if not exists..
Creating directory /usr/local/mha.. done.
   ok.
  Checking output directory is accessible or
not..
   ok.
  Binlog found at /log/mysql, up to
mysql-bin.000009
Tue Apr  5 22:36:36 2016 - [info] Binlog setting check
done.
Tue Apr  5 22:36:36 2016 - [info] Checking SSH
publickey authentication and checking recovery script configurations on all
alive slave servers..
Tue Apr  5 22:36:36 2016 - [info]   Executing command : apply_diff_relay_logs
command=test slave_user=root slave_host=192.168.1.248
slave_ip=192.168.1.248 slave_port=4008 workdir=/usr/local/mha
target_version=5.6.16-log manager_version=0.57
relay_log_info=/data/mysql/relay-log.info 
relay_dir=/data/mysql/ 
slave_pass=xxx
Tue Apr  5 22:36:36 2016 - [info]   Connecting to
root@192.168.1.248(192.168.1.248:22)..
Cant exec
"mysqlbinlog": No such file or directory at
/usr/local/lib64/perl5/MHA/BinlogManager.pm line 106.
mysqlbinlog version
command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client
options
 at /usr/local/bin/apply_diff_relay_logs line
493
Tue Apr  5 22:36:36 2016 -
[error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings
check failed!
Tue Apr  5 22:36:36 2016 -
[error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln413] Slave configuration
failed.
Tue Apr  5 22:36:36 2016 -
[error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln424] Error happened on
checking configurations.  at
/usr/local/bin/masterha_check_repl line 48
Tue Apr  5 22:36:36 2016 -
[error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln523] Error happened on
monitoring servers.
Tue Apr  5 22:36:36 2016 - [info] Got exit code 1 (Not
master dead).
 
MySQL Replication
Health is NOT OK!


处理计划

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



③或许这样

  Binlog found at /log/mysql, up to mysql-bin.000009
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=192.168.1.248 slave_ip=192.168.1.248 slave_port=4008 workdir=/usr/local/mha target_version=5.6.16-log manager_version=0.57 relay_log_info=/data/mysql/relay-log.info  relay_dir=/data/mysql/  slave_pass=xxx
Tue Apr  5 22:43:55 2016 - [info]   Connecting to root@192.168.1.248(192.168.1.248: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 493
Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings check failed!
Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln413] Slave configuration failed.
Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48
Tue Apr  5 22:43:55 2016 - [error][/usr/local/lib64/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Apr  5 22:43:55 2016 - [info] Got exit code 1 (Not master dead).

 

处理计划

注释掉my.cnf中的

[client]

#default-character-set=utf8


遇到上述过错别紧张,看日志,依据报错来排查问题。


折腾半响,就为了这个OK


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

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



MaxScale2.0

Part1:写在最前

maxscale是mariadb公司开发的一套数据库中间件,能够很便利的完结读写别离计划;而且供给了读写别离的负载均衡和高可用性保证。别的maxscale关于前端使用而言是通明的,咱们能够很便利的将使用迁移到maxscale中完结读写别离计划,来分管主库的压力。maxscale也供给了sql句子的解析过滤功用。这儿咱们首要解说maxscale的装置、装备以及留意事项。


Part2:全体架构



Part3:装置

Maxscale装备很简单

[root@HE3 MHA]# yum -y install maxscale-2.0.1-2.centos.6.x86_64.rpm (只在Maxscale上履行)

[root@HE3 ~]# cat /etc/maxscale.cnf
# MaxScale documentation on GitHub:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-Contents.md

# Global parameters
#
# Number of threads is autodetected, uncomment for manual configuration
# Complete list of configuration options:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Getting-Started/Configuration-Guide.md

[maxscale]
threads=auto

# Server definitions
#
# Set the address of the server to the network
# address of a MySQL server.
#

[server1]
type=server
address=192.168.1.248
port=3306
protocol=MySQLBackend
myweight=5

[server2]
type=server
address=192.168.1.249
port=3306
protocol=MySQLBackend
myweight=5

[server3]
type=server
address=192.168.1.100
port=3306
protocol=MySQLBackend

# Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MySQL Monitor documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Monitors/MySQL-Monitor.md

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3
user=mysync
passwd=MANAGER
monitor_interval=10000

# Service definitions
#
# Service Definition for a read-only service and
# a read/write splitting service.
#

# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadConnRoute.md

#[Read-Only Service]                       #只读效劳
#type=service
#router=readconnroute
#servers=server1,server2,server3
#user=sys_admin
#passwd=MANAGER
#router_options=slave

# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadWriteSplit.md



[Read-Write Service]                       写效劳
type=service
router=readwritesplit
enable_root_user=1
servers=server1,server2,server3
user=sys_admin
passwd=MANAGER
weightby=myweight
router_options=slave_selection_criteria=LEAST_GLOBAL_CONNECTIONS
max_slave_connections=1


# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Reference/MaxAdmin.md

[MaxAdmin Service]
type=service
router=cli


#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008                                  读效劳发动监听 端口4008

[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006                                  写效劳发动监听 端口

[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
port=6603                                  #办理端口


[root@HE3 ~]# /etc/init.d/maxscale start

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

 

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

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

tcp        0      0 0.0.0.0:4006                0.0.0.0:*                   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            | 192.168.1.248   |  3306 |           0 | Slave, Running

server2            | 192.168.1.249   |  3306 |           0 | Slave, Running

server3            | 192.168.1.250   |  3306 |           0 | Master, Running

-+-+-+-+


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



读写别离与负载均衡校验

Part1:读写别离

在Master构建相应的测验表

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


在slave1刺进数据HE1

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


在slave2刺进数据HE2

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


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

[root@HE3 ~]#  mysql -h192.168.1.250 -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 -h192.168.1.250 -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 0xef5570
Service:                             Read-Write Service
Router:                              readwritesplit (0x7ff5e8fa6ec0)
State:                               Started
Number of router sessions:           15
Current no. of router sessions:      0
Number of queries forwarded:          41
Number of queries forwarded to master:2 (4.88%)
Number of queries forwarded to slave: 39 (95.12%)
Number of queries forwarded to all:   0 (0.00%)
Connection distribution based on myweight server parameter.
Server               Target %    Connections  Operations
                               Global  Router
server1              50.0%     0       0       0
server2              50.0%     0       0       0
server3              100.0%     0       0       0
Started:                             Thu Nov  3 23:46:27 2016
Root user access:                    Enabled
Backend databases:
192.168.1.248:3306  Protocol: MySQLBackend
192.168.1.249:3306  Protocol: MySQLBackend
192.168.1.100:3306  Protocol: MySQLBackend
Routing weight parameter:            myweight
Users data:                          0xf09370
Total connections:                   16
Currently connected:                 1



[root@HE3 ~]# for i in `seq 1 10`; do mysql -h 192.168.1.250 -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!Thats how it works!~



毛病测验

Part1:stop slave毛病

中止HE1的仿制

[root@HE1 ~]# mysql
-uroot -p
Enter password:
Welcome to the MySQL
monitor.  Commands end with ; or \g.
Your MySQL
connection id is 74
Server version:
5.7.16-log MySQL Community Server (GPL)
 
Copyright (c) 2000,
2016, 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> stop
slave;
Query OK, 0 rows
affected (0.05 sec)
 
[root@HE3 ~]#
maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port 
| Connections | Status             
-+-+-+-+
server1            | 192.168.1.248   | 
3306 |           0 | Running
server2            | 192.168.1.249   | 
3306 |           0 | Slave,
Running
server3            | 192.168.1.250   | 
3306 |           0 | Master,
Running
-+-+-+-+
 
[root@HE3 ~]#  mysql -h192.168.1.250 -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 -h192.168.1.250 -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> start
slave;
Query OK, 0 rows
affected (0.00 sec)
 
 
[root@HE3 ~]#
maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port 
| Connections | Status             
-+-+-+-+
server1            | 192.168.1.248   | 
3306 |           0 | Slave,
Running
server2            | 192.168.1.249   | 
3306 |           0 | Slave,
Running
server3            | 192.168.1.250   | 
3306 |           0 | Master,
Running
-+-+-+-+
 
验证
[root@HE3 ~]#  mysql -h192.168.1.250 -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 -h192.168.1.250 -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/init.d/mysqld stop
Shutting down
MySQL..... SUCCESS!
 
中止HE1(slave)能够看到转发到了HE2上
 
[root@HE3 ~]#  maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port 
| Connections | Status             
-+-+-+-+
server1            | 192.168.1.248   | 
3306 |           0 | Down
server2            | 192.168.1.249   | 
3306 |           1 | Slave,
Running
server3            | 192.168.1.250   | 
3306 |           1 | Master,
Running
-+-+-+-+
[root@HE3
~]# mysql -h192.168.1.250 -P 4006 -usys_admin -pMANAGER
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 28948
Server version:
5.5.5-10.0.0 2.0.1-maxscale MySQL Community Server (GPL)
 
Copyright (c) 2000,
2016, 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> select
@@hostname;
++
| @@hostname |
++
| HE2        |
++
1 row in set (0.00
sec)
 
 
停掉2台slave,调查maxscale的状况
[root@HE3 ~]#
maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port 
| Connections | Status             
-+-+-+-+
server1            | 192.168.1.248   | 
3306 |           0 | Running
server2            | 192.168.1.249   | 
3306 |           0 | Running
server3            | 192.168.1.250   | 
3306 |           0 | Master, Stale
Status, Running
-+-+-+-+



Warning:警告这儿我并没有在

[MySQL Monitor]中装备detect_stale_master=true

能够看出,在maxscale2.0中,现已默许从库都停掉,也不影响


Part3:master毛病

[root@HE3 ~]# maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port  | Connections | Status              
-+-+-+-+
server1            | 192.168.1.248   |  3306 |           0 | Slave, Running
server2            | 192.168.1.249   |  3306 |           0 | Slave, Running
server3            | 192.168.1.100   |  3306 |           0 | Master, Running
-+-+-+-+
[root@HE3 ~]# ps -ef|grep mysql
root     27709     1  0 Nov03 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe datadir=/data/mysql pid-file=/data/mysql/HE3.pid
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/error.log open-files-limit=8192 pid-file=/data/mysql/HE3.pid socket=/tmp/mysql.sock port=3306
root     30794 28966  0 02:34 pts/1    00:00:00 grep mysql
[root@HE3 ~]# kill -9 28415 27709
[root@HE3 ~]# maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port  | Connections | Status              
-+-+-+-+
server1            | 192.168.1.248   |  3306 |           0 | Slave, Running
server2            | 192.168.1.249   |  3306 |           0 | Slave, Running
server3            | 192.168.1.100   |  3306 |           0 | Master, Running
-+-+-+-+
[root@HE3 ~]# maxadmin -pmariadb list servers
Servers.
-+-+-+-+
Server             | Address         | Port  | Connections | Status              
-+-+-+-+
server1            | 192.168.1.248   |  3306 |           0 | Master, Running
server2            | 192.168.1.249   |  3306 |           0 | Slave, Running
server3            | 192.168.1.100   |  3306 |           0 | Running
-+-+-+-+

能够看出,kill master的mysql进程后,MHA将slave1拉成新的master,Maxsale也辨认了这一状况。



Java Druid留意事项

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

>现象:

程序会不守时的呈现衔接过错,问题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.

java.sql.SQLException: No database selected

 

但经过客户端sqlyog/navicat衔接均为正常。


另:maxscale1.4.3有时还会呈现挂起现象,4006端口直接封闭。后咱们用了watch指令后台跑监控。

watch -d /bin/bash /root/sh/restart_maxsacle.sh

1234567#!/bin/bash netstat -ntlp | grep maxscale | grep 4006 > /dev/null 2>&1 if [ $? -eq 1 ];then/etc/init.d/maxscale startfi


处理:5.6以下能够直接在url上装备:autoReconnect=true

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



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

以上是开发需求留意的都是一些根本的装备。

 

其意图为:每次偿还衔接时履行select x检测衔接是否有用。 



——总结——

maxscale的中心就在于内个装备文件,依据不同的事务和架构,做好相应的装备,本文意在抛砖引玉,假如您有更全的装备文件,欢迎您共享给笔者。因为笔者的水平有限,编写时刻也很匆促,文中难免会呈现一些过错或许不精确的当地,不当之处恳请读者批评指正。


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章