MySQL读写分离服务配置部署详解
MySQL读写分离
使用mycat实现
原理
前提准备步骤
(都在代理服务器上执行)
安装jdk1.8(代理服务器上执行)
1.解压缩包:
2.环境变量文件/etc/profile配置
注意:配置环境变量时,中间不能有空格
3. 使用source命令使修改即时生效,无需重启服务器
4. 解压缩包:
(任意目录都可以)
配置mycat
server.xml
把下面 user name ="usr"等删掉
schema.xml
schema.xml是最主要的配置项,首先看我的配置文件database=“mytest” 必须是主从库都存在的数据库。
vim schema.xml (全部删完)
重新加进去
启动mycat之前需改变数据库用户的访问权限和设置新密码
查询用户密码命令:select host,user,authentication_string from mysql.user
问题一: 增加远程访问
问题二:密码编码方式不同,改
对比
启动mycat
需进入bin目录下
启动:./mycat start(后台启动) ./mycat console(前台启动)
停止:./mycat stop
重启:./mycat restart
如果在启动时发现异常,在logs目录中查看日志。
wrapper.log 为程序启动的日志,启动时的问题看这个
mycat.log 为脚本执行时的日志,SQL脚本执行报错后的具体错误内容,查看这个文件。
mycat.log是最新的错误日志,历史日志会根据时间生成目录保存。
成功的mycat.log
2021-11-26 23:24:44.684 INFO [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource$1$1.connectionAcquired(PhysicalDatasource.java:514)) - connection id is 14
2021-11-26 23:24:44.685 INFO [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.NewConnectionRespHandler.connectionAcquired(NewConnectionRespHandler.java:44)) - connectionAcquired MySQLConnection [id=14, lastTime=1637940284685, user=root, schema=test, old shema=test, borrowed=true, fromSlaveDB=true, threadId=18, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.202.151, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
2021-11-26 23:24:44.685 INFO [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource$1$1.connectionAcquired(PhysicalDatasource.java:514)) - connection id is 15
2021-11-26 23:24:44.685 INFO [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.NewConnectionRespHandler.connectionAcquired(NewConnectionRespHandler.java:44)) - connectionAcquired MySQLConnection [id=15, lastTime=1637940284685, user=root, schema=test, old shema=test, borrowed=true, fromSlaveDB=true, threadId=19, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.202.151, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
2021-11-26 23:29:44.676 INFO [Timer0] (io.mycat.backend.datasource.PhysicalDatasource.createByIdleLitte(PhysicalDatasource.java:397)) - create connections ,because idle connection not enough ,cur is 5, minCon is 10 for hostS1
2021-11-26 23:29:44.685 INFO [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource$1$1.connectionAcquired(PhysicalDatasource.java:514)) - connection id is 16
成功的wrapper.log
vim wrapper.log
查看端口:netstat -anultp
8066业务端口 9066管理端口
最后一步
途中遇到的问题
1.堆内存jvm不够
启动mycat后异常次 JVM exited while loading the application.
原因:初始化堆指定过小
问题我自己虚拟机本来就是30,并且加##默认
去除井号改30为40 成功
2.自己配置的问题
例如:没有添加好数据库test等。