SpringBoot-整合-MyCat-实现读写分离,Java数据库面试问题

本文介绍了如何在SpringBoot应用中整合Mycat以实现数据库的读写分离。首先,调整MySQL默认存储引擎为MyISAM,然后下载并安装Mycat,配置主机名和环境变量。接着,配置Mycat的schema,启动服务,并通过SQLyog或Navicat连接测试读写分离效果。
摘要由CSDN通过智能技术生成

| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
±---------------------------------±-------+
4 rows in set (0.00 sec)

// 修改配置文件
$ vim /etc/my.ini
[mysqld]
default-storage-engine=MyISAM

$ systemctl restart mysqld

mysql> show variables like ‘%storage_engine%’;
±---------------------------------±-------+
| Variable_name | Value |
±---------------------------------±-------+
| default_storage_engine | MyISAM |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
±---------------------------------±-------+
4 rows in set (0.00 sec)


#### 修改表存储引擎

如果是slave数据库的表是MyISAM,master数据库的表是InnoDB。直接覆盖master数据库来同步数据的话,slave数据库表的存储引擎也将会同步变成InnoDB。扩展:[InnoDB一棵B+树可以存放多少行数据?](

)

#### 更换存储引擎遇到的问题

`This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)`

#### 出现的原因

在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。
如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

#### 解决方案

mysql> set global log_bin_trust_function_creators=TRUE;


`Specified key was too long; max key length is 1000 bytes`

#### 出现的原因

1.  DB的 engine 是 MyISAM

2.  字符集是 utf8 ,1个 utf8=3bytes

3.  (索引长度总和) * 3 > 1000。

#### 解决方案

1.  修改DB engine 至 innodb

2.  更改字符集

3.  减小字段长度

> 注意:一定不要手动去修改slave数据库中的数据,需要给slave的用户设置只读。

至此,mysql的数据库主从设置已经配置成功。在master中修改数据库,会同步到slave中。

## Mycat基于MySQL的读写分离

Mycat不负责数据的同步,所以要还是要基于[MySQL的主从配置来实现读写分离](

)。

### 安装Mycat

由于github限制,所以以后新版本从以下地址下载 http://dl.mycat.io

Linux创建文件夹/usr/local/mycat,进入文件夹,下载安装包

$ wget http://dl.mycat.io/1.6.7.5/2020-3-3/Mycat-server-1.6.7.5-test-20200303154735-linux.tar.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值