mysql用maxscale中间件实现读写分离

10.10.11.13 (maxscale)
10.10.11.13 (master)
10.10.11.14 (slave)
##提前搭建好mysql主从数据库(此处mysql版本5.7.20,主从搭建不再啰嗦)
#提前创建工作路径
mkdir /qingkedata1/maxscale/log/ -p
mkdir -p /qingkedata1/maxscale/data/
mkdir -p /qingkedata1/maxscale/cache/
mkdir -p /usr/lib64/maxscale/
mkdir /qingkedata1/maxscale/pid/




1,下载maxscale2.1.9 rpm包
wget https://downloads.mariadb.com/MaxScale/2.1.9/rhel/7/x86_64/maxscale-2.1.9-1.rhel.7.x86_64.rpm


2,yum 安装
yum localinstall maxscale-2.1.9-1.rhel.7.x86_64.rpm


3,mysql创建监听用户并授权
grant  all on maxscale_schema.* to maxscale@'%' identified by "UlTY5UMJPS69J3B83NpG";#(密码自定)
grant select on mysql.* to maxscale@"%";
grant show databases on *.* to maxscale@"%";

4,maxscale生成加密密码
maxkeys /var/lib/maxscale #在指定目录下生成加密密码规格
maxpasswd UlTY5UMJPS69J3B83NpG #给123456加密 生成加密后密码(此处和mysql赋权时密码一致,将生成的密码贴在配置文件中)


5,修改配置文件


[maxscale]
threads=auto #线程开启数,设置auto同cpu核数一致
ms_timestamp=1 #timesstamp精确度 ts=秒
syslog=1 #将日志写到syslog
maxlog=1 #将日志写到maxscale的日志文件中
log_to_shm=0 #日志不写入共享缓存
log_warning=1 #记录警告信息
log_notice=0 #不记录notice
log_info=0 #不记录info
log_debug=0 #不打开debug模式
log_augmentation=1 #日志递增


#相关目录设置  
logdir=/qingkedata1/maxscale/log/  #路径如果没有在外面手动创建好
datadir=/qingkedata1/maxscale/data/
libdir=/usr/lib64/maxscale/
cachedir=/qingkedata1/maxscale/cache/
piddir=/qingkedata1/maxsc
#相关服务器设置
[server1]
type=server
address=10.10.11.13
port=3306
protocol=MySQLBackend #默认


[server2]
type=server
address=10.10.11.14
port=3306
protocol=MySQLBackend
#监控角色设置
[MySQL Monitor]
type=monitor #默认
module=mysqlmon #默认
servers=server1,server2
user=maxscale #监控mysql的用户名密码
passwd=947A8798129FA6822B7E6735EDCFE164A3FD7818146AA756B1CF0DC60066D945 #此密码需要maxpasswd 加密生成
monitor_interval=10000 #监控心态10秒
detect_replication_lag=true #监控主从同步状态和信息
detect_stale_master=true #监控主从复制 slave全部挂掉时,所有访问全部指向master


#读写服务器设置
[Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2
user=maxscale  #登录账户 和密码
passwd=947A8798129FA6822B7E6735EDCFE164A3FD7818146AA756B1CF0DC60066D945
max_slave_connections=100%
#读写服务器监听
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006


#只读服务器设置
#[Read-Only Service]
#type=service
#router=readconnroute
#servers=server2,server3
#user=maxscale
#passwd=8BC9057FF5D59D357974A11D0084CE908FB8DF95E75F2C5787ED164859991339
#router_options=slave


#只读服务器端口监听
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008


#管理
[MaxAdmin Service]
type=service
router=cli


[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default


notice:
[server1], [server2] 我配置了两个个Maxscale需要连接的MySQL服务
[MySQL Monitor] 配置一个监听服务, 同时监听着 [server1], [server2]的状态
#[Read-Only Service] 未配置只读服务
注意: 虽然是只读服务但是同样可以执行 DML DDL, 所以要限制好用户的权限.
[Read-Write Listener] 配置了读写分离的服务
[MaxAdmin Listener] 配置了用户管理Maxscale的服务




6,启动maxscale
1,maxscale -f /etc/maxscale.cnf(如果启动有报错,看下报错日志信息)
   netstat -naplt|grep maxscale 查看是否启动
2,使用maxadmin 查看服务
maxadmin -S /tmp/maxadmin.sock 
list server
list services


3,使用其他账户登录,查看读写分离日志信息
tailf /qingkedata1/maxscale/log/message.log
mysql -umaxscale -p### -h10.10.11.13 -P4006



猜你喜欢

转载自blog.csdn.net/lyk_for_dba/article/details/78351124