主库中将数据变更写到本地的二进制日志(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