读写分离介绍

在数据库集群架构中,让主库负责处理写入操作,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能

为什么要读写分离啊?

读写分离就是读操作和写操作从以前的一台服务器上剥离开来,将主库压力分担一些到从库。
本质上是因为访问量太大,主库的压力过大,单机数据库无法支撑并发读写。
然后一般而言读的次数远高于写,因此将读操作分发到从库上,这就是常见的读写分离。

读写分离的好处

  1. 分摊服务器压力,提高机器的系统处理效率。
    2. 在写入不变,大大分摊了读取,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了。
    3. 增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务。

mycat中间件的介绍

mycat端口:8066

Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务是实现对主从数据库的读写分离、读的负载均衡。由阿里巴巴公司推出,使用java语言编写开发 需要使用java环境。

读写分离的步骤

安装jdk

tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/local/

设置环境

JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

下载mycat

wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/

配置server.xml

image.png

配置schema.xml

image.png

启动Mycat

/usr/local/mycat/bin/mycat start

再数据库中测试mycat用户是否可用

mysql -uyoungfit -h mysql-mycat -p’Qf@456789’ -P 8066

测试是否可以读写分离

模拟客户进行读操作与 写操作
看看数据库主节点从节点 是否完成主从复制

balance的类型

balance的值可以用于负载均衡
1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance=”1”, 全部的 readHost 与 writeHost 参与 select 语句的负载均衡
3. balance=”2”, 所有读操作都随机的在 writeHost、readhost 上分发。
4. balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,