MHA 相关原理 http://mp.blog.csdn.net/postedit/79183726
MHA http://mp.blog.csdn.net/postedit/79183743 最佳实战
MySQL读写分离原理相关知识体系 http://blog.csdn.net/wjl7813/article/details/79184468
本文以第2种方式实现(基于中间代理层实现)
创建监控复制状态账号
grant replication slave, replication client on *.* to scalemon@'192.168.137.%' identified by 'monitor18';
创建业务账号
grant all privileges on mycat.* to user_maxscale@'192.168.137.%' identified by 'H2kXvhaJxRSl';
grant select on *.* to user_maxscale@'192.168.137.%';
mkdir -p /data1/maxscale4007/log/
mkdir -p /data1/maxscale4007/data/
mkdir -p /data1/maxscale4007/cache/
mkdir -p /data1/maxscale4007/pid/
chown -R maxscale:maxscale /data1/maxscale4007
2.1.6.maxsacle创建秘钥
[root@mha-manager opt]# maxpasswd /data1/maxscale4007/data/.secrets monitor18
Failed to encode the password
[root@mha-manager opt]# maxkeys /data1/maxscale4007/data/
[root@mha-manager opt]# maxpasswd /data1/maxscale4007/data/.secrets monitor18
E2D5388FEC655E04F977AFFE91F08240
[root@mha-manager opt]# maxpasswd /data1/maxscale4007/data/.secrets H2kXvhaJxRSl
DAA9A9DD308D222752B398EBC03474EF
vim /etc/maxscale4007.cnf
[maxscale]
threads=auto
maxlog=1
log_to_shm=0
log_warning=1
log_error=1
log_notice=1
log_info=0
log_debug=0
#log_augmentation=1
LimitNOFILE=65536
logdir=/data1/maxscale4007/log/
datadir=/data1/maxscale4007/data/
cachedir=/data1/maxscale4007/cache/
piddir=/data1/maxscale4007/pid/
libdir=/usr/lib64/maxscale/
execdir=/usr/bin/
[server1]
type=server
address=192.168.137.141
port=3389
protocol=MySQLBackend
[server2]
type=server
address=192.168.137.142
port=3389
protocol=MySQLBackend
[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2
user=scalemon
passwd=E2D5388FEC655E04F977AFFE91F08240
monitor_interval=5000
#detect_replication_lag=true
#max_slave_replication_lag
detect_stale_master=true
#[Read-Only Service]
#type=service
#router=readconnroute
#servers=server2
#user=user_maxscale
#passwd=A622DB34CBF413527DE9048EBC3FE42E66EF97D8DD167887F781C5108213FD21
#router_options=slave
[Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2
user=user_maxscale
passwd=DAA9A9DD308D222752B398EBC03474EF
max_slave_connections=100%
use_sql_variables_in=master
enable_root_user=1
#master_accept_reads=true
[MaxAdmin Service]
type=service
router=cli
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=3300
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4007
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=/data1/maxscale4007/maxadmin.sock
port=6604
启动 maxscale
[root@mha-manager opt]# maxscale -f /etc/maxscale4007.cnf
maxscale服务状态
[root@mha-manager opt]# maxadmin -S /data1/maxscale4007/maxadmin.sock
MaxScale> list listeners
Listeners.
---------------------+--------------------+-----------------+-------+--------
Service Name | Protocol Module | Address | Port | State
---------------------+--------------------+-----------------+-------+--------
Read-Write Service | MySQLClient | * | 4007 | Running
MaxAdmin Service | maxscaled | * | 6604 | Running
MaxAdmin Service | maxscaled | /data1/maxscale4007/maxadmin.sock | 0 | Running
---------------------+--------------------+-----------------+-------+--------
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.137.141 | 3389 | 0 | Master, Running
server2 | 192.168.137.142 | 3389 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale> list services
Services.
--------------------------+----------------------+--------+---------------
Service Name | Router Module | #Users | Total Sessions
--------------------------+----------------------+--------+---------------
Read-Write Service | readwritesplit | 1 | 1
MaxAdmin Service | cli | 3 | 4
--------------------------+----------------------+--------+---------------
MaxScale> show services
Service 0x1915e10
Service: Read-Write Service
Router: readwritesplit (0x7f7e0a75fd40)
State: Started
Number of router sessions: 0
Current no. of router sessions: 0
Number of queries forwarded: 0
Number of queries forwarded to master: 0 (0.00%)
Number of queries forwarded to slave: 0 (0.00%)
Number of queries forwarded to all: 0 (0.00%)
Started: Tue Dec 26 05:02:16 2017
Root user access: Enabled
Backend databases:
192.168.137.141:3389 Protocol: MySQLBackend
192.168.137.142:3389 Protocol: MySQLBackend
Users data: 0x192b5f0
Total connections: 1
Currently connected: 1
Service 0x1914350
Service: MaxAdmin Service
Router: cli (0x7f7e0a969560)
State: Started
Started: Tue Dec 26 05:02:16 2017
Root user access: Disabled
Backend databases:
Users data: 0x193bfa0
Total connections: 4
Currently connected: 3
[mysql@mha-manager mha]$ mysql -h 192.168.137.140 -P4007 -uuser_maxscale -pH2kXvhaJxRSl
mysql> select @@hostname;
+--------------+
| @@hostname |
+--------------+
| node1-slave1 |
+--------------+
1 row in set (0.00 sec)
master 创建一个测试库 percona
mysql> create database percona;
Query OK, 1 row affected (2.65 sec)
mysql> use percona;
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.33 sec)
mysql> INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.14 sec)
mysql>
mysql> select * from example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
mysql> INSERT INTO percona.example VALUES (2, 'percona2');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO percona.example VALUES (3, 'percona3');
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
| 2 | percona2 |
| 3 | percona3 |
+---------+-----------+
3 rows in set (0.00 sec)
mysql> select * from example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
| 2 | percona2 |
| 3 | percona3 |
+---------+-----------+
3 rows in set (0.00 sec)
mysql> select * from example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
| 2 | percona2 |
| 3 | percona3 |
+---------+-----------+
3 rows in set (0.00 sec)