mysql 读写分离配置

简介

使用mycat中间件对mysql进行读写分离。

配置流程

配置mysql主从复制 

(主从复制配置的过程链接

https://blog.csdn.net/u011177064/article/details/102698002

使用mycat 配置读写分离

验证是否读写分离效果

Mycat配置读写分离

Mycat官网:http://www.mycat.io/

Mycat下载地址:http://dl.mycat.io/

 

Mycat的安装其实只要解压下载的目录就可以了,非常简单。
安装完成后,目录如下:

目录

说明

bin

mycat命令,启动、重启、停止等

catlet

catlet为Mycat的一个扩展功能

conf

Mycat 配置信息,重点关注

lib

Mycat引用的jar包,Mycat是java开发的

logs

日志文件,包括Mycat启动的日志和运行的日志。

Mycat的配置文件都在conf目录里面

文件

说明

server.xml

Mycat的配置文件,设置账号、参数等

schema.xml

Mycat对应的物理数据库和数据库表的配置

rule.xml

Mycat分片(分库分表)规则

Mycat对外实现了一套跟mysql一样的通讯协议,所以应用代码不用做任何调整,只需要将jdbc链接改为mycat的即可

默认配置

9066:mycat 管理端口

8066:mycat 数据连接端口(应用只需要将之前mysql的连接替换成这个即可使用)

 

实现读写分离主要是针对 schema.xml 进行配置

<schema name="pingtuan" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
	
<dataNode name="dn1" dataHost="pingtuanrw" database="pingtuan" />
	
	<!-- 物理数据库配置 -->
    <dataHost name="pingtuanrw" maxCon="2000" minCon="10" balance="1"  writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user();</heartbeat>
        <writeHost host="hostM1" url="172.16.0.10:3306" user="pingtuan" password="xxxxxxxxxx">  
        <readHost host="hostS1" url="172.16.0.17:3306" user="pingtuan" password="xxxxxxxxxx">   
        </readHost>
        </writeHost>
</dataHost>

schema: 

属性

说明

name

逻辑数据库名,与server.xml中的schema对应

checkSQLschema

数据库前缀相关设置,建议看文档,这里暂时设为folse

sqlMaxLimit

select 时默认的limit,避免查询全表

table:

属性

说明

name

表名,物理数据库中表名

dataNode

表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name

primaryKey

主键字段名,自动生成主键时需要设置

autoIncrement

是否自增

rule

分片规则名,具体规则下文rule详细介绍

dataNode

属性

说明

name

节点名,与table中dataNode对应

datahost

物理数据库名,与datahost中name对应

database

物理数据库中数据库名

dataHost

属性

说明

name

物理数据库名,与dataNode中dataHost对应

balance

均衡负载的方式

writeType

写入方式

dbType

数据库类型

heartbeat

心跳检测语句,注意语句结尾的分号要加。

Mycat命令

Mycat的启动也很简单,启动命令在Bin目录:

##启动

mycat start

##停止

mycat stop

##重启

mycat restart

如果在启动时发现异常,在logs目录中查看日志。

wrapper.log 为程序启动的日志

mycat.log 为脚本执行时的日志,SQL脚本执行报错后的具体错误内容,查看这个文件。

mycat.log是最新的错误日志,历史日志会根据时间生成目录保存。

读写分离验证

首先强调下,字符集utf8mb4的设定,除了mysql本身需要设定utf8mb4之外,mycat也需要配置字符utf8mb4设置,不然会出现问题。

读写分离效果验证

设置 mycat 的debug 日志模式:(生产环境一定要改回info,日志会非常大)

/usr/java/mycat/conf/log4j2.xml

查看mycat日志:

验证查询SQL 是否在读库上执行:

验证更新SQL 是否在写库上执行:

 

发布了16 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u011177064/article/details/102647825