Mycat2学习3-搭建一主一从读写分离

我们通过 Mycat 和 MySQL 的主从复制配合搭建数据库的读写分离,实现 MySQL 的 高可用性。我们将搭建:一主一从、双主双从两种读写分离模式。

1搭建 MySQL 数据库主从复制

  1. 原理


  1. 主机配置(atguigu01)

修改mysql的配置文件etc/my.cnf

#主服务器唯一ID 
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql binlog-ignore-db=information_schema
#设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字
#设置logbin格式 binlog_format=STATEMENT
  1. 从机配置

还是同样的修改my.cnf文件:

修改配置文件:vim /etc/my.cnf
#从服务器唯一ID 
server-id=2
#启用中继日志
   relay-log=mysql-relay
  1. 主机、从机重启 MySQL 服务
  2. 主机从机都关闭防火墙
  3. 在主机上建立帐户并授权 slave
#在主机MySQL里执行授权命令
CREATE USER 'slave2'@'%' IDENTIFIED BY '123123';
GRANT REPLICATION SLAVE ON *.* TO 'slave2'@'%'; #此语句必须执行。否则见下面。
ALTER USER 'slave2'@'%' IDENTIFIED WITH mysql_native_password BY '123123';
flush privileges; #查询master的状态 show master status;
#记录下File和Position的值 #执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
  1. 在从机上配置需要复制的主机

复制主机的命令

CHANGE MASTER TO MASTER_HOST='主机的IP地址', MASTER_USER='slave', MASTER_PASSWORD='123123',

MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;

下面两个参数都是Yes,则说明主从配置成功! # Slave_IO_Running: Yes

Slave_SQL_Running: Yes

  1. 主机新建库、新建表、insert 记录,从机复制
    这个主要是测试一下,在主机上做一些数据库的修改,从机会不会更新

  2. 如何停止从服务复制功能
    stop slave;

  3. 如何重新配置主从

stop slave;
reset master;

2 配置 Macat 读写分离

1.2.1 登录Mycat,创建逻辑库,配置数据源

在Mycat里创建数据库mydb1 #创建db2逻辑库
create database mydb1;
修改mydb1.schema.json 指定数据源 "targetName": "prototype",配置主机数据源 vim /usr/local/mycat/conf/schemas/mydb1.schema.json

在我第一个帖子里面又讲,就跟登录mysql一样的登录mycat不过端口号是8066,当然也可以使用工具 ,比如 navicat来登录mycat。

1.2.2 使用注解方式添加数据源

这里我们可以在登录之后(命令行登录或者navicat等工具连接好),运行下面的一些命令:

登录Mycat,注解方式添加数据源,指向从机

/*+ mycat:createDataSource{ "name":"rwSepw", "url":"jdbc:mysql://192.168.140.100:3306/mydb1?useSSL=false&characterEncodi ng=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123123" } */;
/*+ mycat:createDataSource{ "name":"rwSepr", "url":"jdbc:mysql://192.168.140.99:3306/mydb1?useSSL=false&characterEncodin g=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123123" } */;

查询配置数据源结果

/*+ mycat:showDataSources{} */;

更新集群信息,添加dr0从节点.实现读写分离

/*! mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rw Sepr"]} */;

查看配置集群信息

/*+ mycat:showClusters{} */;

查看集群配置文件 conf/clusters/prototype.cluster.json


readBalanceType
查询负载均衡策略 可选值: BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE 获取集群中允许读写的数据源,但允许读的数据源优先 BALANCE_NONE
获取集群中允许写数据源,即主节点中选择
switchType NOT_SWITCH:不进行主从切换 SWITCH:进行主从切换
3 重新启动 Mycat
1.2.4验证读写分离

这里注意一点,我们在配置集群文件的时候readBalanceType配置的是all,也就是说读的时候是轮训的遍历所有的数据源来读取,写入的话在文中没有特意的配置,我们可以按需在配置的数据源文件中配置: instanceType:配置实例只读还是读写
可选值: READ_WRITE,READ,WRITE

  1. 在写主机数据库表mytbl中插入带系统变量数据,造成主从数据不一致 INSERT INTO mytbl VALUES(2,@@hostname);


  2. 在Mycat里查询mytbl表,可以看到查询语句在主从两个主机间切换

你可能感兴趣的:(Mycat2学习3-搭建一主一从读写分离)