SpringBoot 整合 MyCat 实现读写分离

本文介绍了如何使用SpringBoot整合Mycat实现数据库读写分离。首先,详细讲述了MySQL的主从配置,包括master和slave数据库的配置、存储引擎的选择及其问题解决。接着,讲解了Mycat的安装、启动以及连接配置。最后,阐述了在SpringBoot应用中配置Mycat数据源和读写分离的实现方法。
摘要由CSDN通过智能技术生成

推荐阅读:

MyCat一个彻底开源的,面向企业应用开发的大数据库集群。基于阿里开源的Cobar产品而研发。能满足数据库数据大量存储;提高了查询性能。文章介绍如何实现MyCat连接MySQL实现主从分离,并集成SpringBoot实现读写分离。

MySQL配置主从关系

说明

  • 192.168.0.105 Linux 数据库作为主master数据库

  • 127.0.0.1 Window 作为从slave数据库

master主数据库配置

binlog是Mysql sever层维护的一种二进制日志,主要是用来记录对Mysql数据更新或潜在发生更新的SQL语句,记录了所有的写语句,并以事务的形式保存在磁盘中,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

master上开启log_bin

$ vim /etc/my.cnf


log-bin           = mysql-bin  #[必须]启用二进制日志
server-id         = 4          #[必须]服务器唯一ID,默认是1,最好取ip的后3位
expire-logs-days  = 7           #只保留7天的二进制日志,以防磁盘被日志占满
binlog-ignore-db  = mysql       #不备份的数据库
binlog-ignore-db  = information_schema
binlog-ignore-db  = performation_schema
binlog-ignore-db  = sys
binlog-do-db=itools_simple #需要做复制的数据库名,如果有多个,复制binlog-do-db即可

登录mysql,测试log_bin是否成功开启

$ mysql -u root -p
  Root@123

// log_bin ON表示开启成功,OFF表示开启失败
mysql> show variables like '%log_bin%';
+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/lib/mysql/mysql-bin       |
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                            |
| log_bin_use_v1_row_events       | OFF                            |
| sql_log_bin                     | ON                             |
+---------------------------------+--------------------------------+
6 rows in set (0.01 sec)

新增备份账户

mysql> grant replication slave on *.* to 'backup'@'%' identified by 'Root@123';
mysql> use mysql
mysql> select user,authentication_string,host from user;

重启mysql

$ systemctl restart mysqld

登录mysql,并设置只读

$ mysql -u root -p
  Root@123

mysql> flush tables with read lock;

mysql> show master status \G
*************************** 1. row ***************************
             File: mysql-bin.000003
         Position: 154
     Binlog_Do_DB: itools_simple
 Binlog_Ignore_DB: mysql,information_schema,performation_schema,sys
Executed_Gtid_Set: 
1 row in set (0.01 sec)

// 导出数据库,进入到一个合适的文件夹
$ mysqldump -u root -p itools_simple > itools_simple.txt
// 把生成的文件导出到本机
$ sz itools_simple.txt

// 在window本机打开cmd,登录slave本机mysql数据库,导入数据库
$ .\mysql -u root -p -hlocalhost mycat_master < .\itools_simple.txt

slave从数据库配置

配置 my.ini 文件

[mysql]
#default-character-set=utf8

[mysqld] 
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB

# 添加一下配置
log-bin=mysql-bin
server-id=223

重启slave数据库

net stop mysql
net start mysql

登录slave数据库

$ mysql -u root -p
  123456

// 停止 slave
mysql> stop slave;
// 根据master中的status,添加以下配置
msyql> change master to master_host='192.168.0.105',master_user='backup',master_password='Root@123',master_log_file='mysql-bin.000003',master_log_pos=154;
// 启用slave
mysql> start slave;
// 查看slave状态
mysql>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值