1. 环境架构
需要三台服务器。 192.168.2.10(master) 192.168.2.20(slave) 192.168.2.30(maxscale)
2. 部署mysql主从同步
3. 部署maxscale服务
由MySQL兄弟公司MariaDB开发 下载地址: https://downloads.mariadb.com/MaxScale/
3.1. 安装maxscale
[ root@localhost ~]
[ root@localhost ~]
3.2. 修改配置文件
[ root@localhost ~]
[ root@localhost ~]
[ maxscale]
threads = auto ----定义线程数,可以根据服务器性能填多少,或者选择auto,auto会根据本身服务器CPU核数来自动创建。
[ server1]
type = server --类型
address = 192.168 .2.10 ---ip地址
port = 3306 ---端口号
protocol = MySQLBackend ---协议[ server2]
type = server
address = 192.168 .2.20
port = 3306
protocol = MySQLBackend
[ MySQL Monitor]
type = monitor ---类型为监视
module = mysqlmon ---定义模块
servers = server1,server2 ----指定需要监视的服务器
user = maxscale ---被监视的服务器用户名
passwd = 1234 ---被监视的服务器密码
monitor_interval = 10000 ---用户maxscalemon连接server1和server2的频率,单位是毫秒。
[ Read-Write Service]
type = service
router = readwritesplit
servers = server1,server2
user = myuser 路由用户
passwd = mypwd 路由密码
max_slave_connections = 100 %
[ MaxAdmin Service]
type = service 类型
router = cli 访问方式为命令行
[ Read-Write Listener]
type = listener
service = Read-Write Service
protocol = MySQLClient
port = 4006
[ MaxAdmin Listener]
type = listener
service = MaxAdmin Service
protocol = maxscaled
prot = 4016
socket = default
4. 创建授权用户
mysql> grant replication slave,replication client on *.* to 'maxscale' @'%' identified by '1234' ;
mysql> grant select on mysql.* to 'maxscale1' @'%' identified by '1234' ;
5. 启动代理服务
[ root@localhost ~]
[ root@localhost ~] PID TTY TIME CMD2359 ? 00:00:00 maxscale
[ root@localhost ~]
tcp6 0 0 :::4016 :::* LISTEN 2359 /maxscale
tcp6 0 0 :::4006 :::* LISTEN 2359 /maxscale
6. 测试配置
6.1. 查看监控状态
管理用户密码默认的
[ root@localhost ~]
MaxScale> list servers --显示监控列表
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168 .2.10 | 3306 | 0 | Master, Running
server2 | 192.168 .2.20 | 3306 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
6.2. 验证写是否在主库查是否在从库
mysql> use db1;
mysql> create table t1( -> id int not null,name char( 10 ) not null) ;
mysql> insert into t1 values( '1' ,'tom' ) ;
mysql> select * from t1;
+----+------+
| id | name |
+----+------+
| 1 | tom |
+----+------+
mysql> use db1;
Database changed
mysql> show tables;
Empty set ( 0.00 sec) ----可以看的出来主库没有表格
[ root@localhost ~]
mysql> select * from db1.t1;
+----+------+
| id | name |
+----+------+
| 1 | tom |
+----+------+
1 row in set ( 0.00 sec)
可以看的出来读是在从库提取的。