当前位置: 首页 > 工具软件 > MySQL-Proxy > 使用案例 >

读写分离mysql-proxy sharding-jdbc

冉永宁
2023-12-01

主库中将数据变更写到本地的二进制日志(binary log)中。从库通过一个I/O线程从主库拉取binlog,写到中继日志(relay log)中,然后通过一个SQL回放线程读取本地的中继日志,将数据变更应用到从库上,使得从库的数据库与主库保持一致。

主从延迟
CHANGE MASTER TO MASTER_DELAY = 600;  表示有多少秒左右的延迟。在其他时候,这个字段是NULL

https://www.cnblogs.com/huanshilang/p/12055296.html
读写分离 强走主库  sharding-jdbc    
HintManager.getInstance().setMasterRouteOnly();  只对一条数据有效

 

待解决 第一次连接都失败   强制性走主库

 

读写分离:程序区分(扩展性差)    中间件

https://www.cnblogs.com/xiaogan/p/5994687.html
https://blog.csdn.net/qq_35887546/article/details/104775643
https://blog.csdn.net/renfeigui0/article/details/103005608

yum -y install lua

vim /etc/profile
export PATH=/opt/mysql-proxy/mysql-proxy/bin/:/opt/mysql-proxy/mysql-proxy/mysql/bin:$PATH
source /etc/profile

#修改默认连接,进行快速测试,默认最小4个以上的客户端连接才会实现读写分离,最大链接数为8。
为了验证试验效果将他改成1 .就是当有一个链接的时候,就实现读写分离的功能。为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能。
vim mysql-proxy/rw-splitting.lua    
min_idle_connections = 1
max_idle_connections = 1

文件新建 mysql-proxy.cnf mysql-proxy.pid mysql-proxy.log
[mysql-proxy]
 daemon=true
 user=root
 pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid
 plugins=proxy
 log-level=debug
 log-file=/opt/mysql-proxy/mysql-proxy/mysql-proxy.log
 keepalive=true
 proxy-read-only-backend-addresses=192.168.31.16:3306
 proxy-backend-addresses=192.168.31.234:3306
 proxy-lua-script=/opt/mysql-proxy/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
 
chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf

启动默认4040
/opt/mysql-proxy/mysql-proxy/bin/mysql-proxy --defaults-file=/opt/mysql-proxy/mysql-proxy/mysql-proxy.cnf

bin目录下  另外一种
./mysql-proxy --proxy-read-only-backend-addresses=192.168.31.16:3306 --proxy-backend-addresses=192.168.31.234:3306 --proxy-lua-script=/opt/mysql-proxy/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &


客户端连接
/opt/mysql/bin/mysql -uroot -p   -P4040 -h192.168.31.234
nssa_db_1qazZAQ!
 


mysql-proxy不再支持mysql5.7,mysql8.0的client客户端登录; 支持mysql5.6;mysql5.5;mariadb5.5支持  用navicat可以连接
mysql版本     5.7.28
mysql-connector-java与mysql、java的对应版本

jdbc版本不对
com.mysql.jdbc.Driver 是 mysql-connector-java 5的,  去掉cj  加上useSSL=false
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以上的

 Cause:java.sql.SQLException: Access denied for user 'root'@'192.168.31.234' (using password: NO)
 https://blog.csdn.net/liuzhongyefirst/article/details/88579846
 
 
 spring配置!!!!
 
 <!-- 提供mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.28</version>
</dependency>

这个版本 可以com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以上的

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.2</version>
</dependency>

        
spring:
  datasource:
    url: jdbc:mysql://192.168.31.234:4040/security_db?characterEncoding=utf8&useTimezone=true&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: nssa_db_1qazZAQ!
    driverClassName: com.mysql.jdbc.Driver
 
 
 
是否启动太频繁!!!!!
MySQL-Proxy, SpringBoot应用卡在HikariPool-1 - Starting…一直一直卡着不

 

删除maven 下所有的 mysql-connector-java 6.0.2其他版本

先最好所有修改common.xml  添加!!pom.xml所有的版本
打包前先前几pom.xml 右键maven reimport!!!!! 然后再mvn clean install
mvn clean install 出现了其他版本 就说明这个包有问题  因为会重新导包  但还是8.0.18!!!!!!


最好重新导项目 有些历史包还是在里面


主从
https://blog.csdn.net/dany_zj_cn/article/details/112871965?spm=1001.2014.3001.5501

 


 

 类似资料: