springboot+mybatis+mysql+mycat实现主从复制+读写分离

环境:

JDK 1.8

MYSQL 5.7.2

服务器两台:主、从各一台

JDK 1.8

MYSQL 5.7.2

服务器两台:主、从各一台

  1. 下载地址:http://dl.mycat.io/6.6/

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第1张图片

  1. 用Xftp上传压缩包到主数据库服务器
  2. 解压压缩包

[root@localhost software]# tar -zxvf Mycat-server-1.6.6.1-test-20180729105217-linux.tar.gz

 

  1. 开放8066端口(mycat的默认端口)

firewall-cmd --zone=public --query-port=8066/tcp

然后重启防火墙

firewall-cmd –reload

  1. 修改配置vim /etc/my.cnf

#服务器唯一标示,一般取服务器的ip

server-id = 142

#启动MySQL二进制日志

log_bin = master-bin

log_bin_index = master-bin.index

#指定记录二进制日志的数据库

binlog_do_db = db1

#指定不记录二进制日志的数据库

binlog_ignore_db = mysql

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第2张图片

重启msql 

[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# service mysql restart

Shutting down MySQL.. SUCCESS!

Starting MySQL. SUCCESS!

建立帐户并授权slave

 

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';

 

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';

 

#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

 

刷新权限

 

mysql> FLUSH PRIVILEGES;

 

查看mysql现在有哪些用户

 

mysql>select user,host from mysql.user;

 

也可以借助Navicat来查看:

查询master的状态

mysql> show master status;

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第3张图片

记住这红框的两个

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第4张图片

  1. Mysql从服务器配置

第一步:修改my.conf文件

[mysqld]

server-id=143

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第5张图片

重启mysql服务,改完配置文件一定要重启   service mysqld restart

 

然后再Navicat执行,

CHANGE MASTER TO master_host = '你主库的ip',

master_port = 3306,

master_user = 'backup',

master_password = '123456',

master_log_file = 'master-bin.000001', -- 上面红框的

master_log_pos = 867; -- 上面红框的

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第6张图片

启动从服务器复制功能

start slave;

show slave status;

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第7张图片

只需要查看下面圈起来的这个2个字段状态,同时为yes即标识你配置成功!

如果后续发现这两个值出现no,请查考文章:https://www.cnblogs.com/l-hh/p/9922548.html

 

7.测试:

在主库的表插入一条数据,从库相同的表名就会插入一条数据

PS:附带mycat常用命令

mycat目录/bin 下执行如下命令

 

启动MyCat: ./mycat start

查看启动状态:./mycat status

停止: ./mycat stop

重启: ./mycat restart

启动并控制台打印日志:./mycat console

8.mycat配置读写分离

schema.xml

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第8张图片



















        show slave status

        

        

               

               

        

        

                         

        









server.xml











0 

1

0  

0  



        2

false 



        8066

        9066

       

         





        

        0

        

        

        

        

        

        

        

        

        0

       

               

        1



        

        64k



        

        1k



        0



        

        384m





        

        false



        

        



        

        

        

        false

       

        true

       

























        123456

        TESTDB

       

        

        







        user

        TESTDB

        true





到时候用这个hostmaster账户和密码123456去用navicat连接

 

9.springboot+mybatis+mycat集成

application.properties配置:

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第9张图片

 

POM.XML我mysql用的版本

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第10张图片

代码就是很普通的增删查改,主要是连接数据库的配置,改为连接mycat

 

10.测试

用navicat连接mycat

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第11张图片

 

连接两个mysql

 

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第12张图片

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第13张图片

 

然后建表

CREATE TABLE `category_info` (

  `category_id` varchar(255) NOT NULL COMMENT '主键',

  `create_time` datetime NOT NULL,

  `update_time` datetime NOT NULL,

  `category_name` varchar(255) NOT NULL COMMENT '品类名称',

  `status` int(2) NOT NULL COMMENT '0:启动 1:未启动',

  `category_picture` varchar(255) NOT NULL COMMENT '分类图片',

  `plate_id` varchar(255) NOT NULL COMMENT '板块ID',

  PRIMARY KEY (`category_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

用postman调用接口插入数据

主从两个库都会有数据

然后手动插入主库两条数据

主库数据为

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第14张图片

从库数据为

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第15张图片

调用接口查询

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第16张图片

查出了从库的数据,实现了读写分离!

 

PS:springboot+mybatis+mysql+mycat实现主从复制+读写分离_第17张图片

在从库:stop slave;

              change master to master_host='主数据库ip',master_port=3306,master_user='主数据库账户',master_password='主数据库密码',master_log_file='master-bin.000002',master_log_pos=1571;

master_log_file和master_log_pos可以在主库用show master status;看

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第18张图片

然后重新start slave

再重新查看show slave status

springboot+mybatis+mysql+mycat实现主从复制+读写分离_第19张图片

OK了

你可能感兴趣的:(工具)