一起聊聊Mycat实现 Mysql 集群读写分离

本篇文章给大家介绍了关于MySQL读写分离的相关知识,希望对大家有帮助。 MySQL 读写分离的概述 MySQL 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接

    本篇文章给大家介绍了关于MySQL读写分离的相关知识,希望对大家有帮助。

MySQL 读写分离的概述

MySQL 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。

在实际的生产环境中,由单台 MySQL 作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。

因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力进行部署与实施。

读写分离工作原理

基本的原理是:

主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE)

从数据库处理 SELECT 查询操作

数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

为什么要读写分离

面对越来越大的访问压力,单台的服务器的性能成为瓶颈,需要分担负载

主从只负责各自的写和读,极大程度的缓解 X(写)锁和 S(读)锁争用

从库可配置 myisam 引擎,提升查询性能以及节约系统开销

增加冗余,提高可用性

实现读写分离的方式

MyCAT 在 Linux 中部署启动时,首先需要在 Linux 系统的环境变量中配置 MYCAT_HOME,操作方式如下:

sudo vim /etc/profile.d/mycat.sh MYCAT_HOME=/usr/local/mycat PATH=$MYCAT_HOME/bin:$PATH

使环境变量生效

. /etc/profile.d/mycat.sh

mycat 的用户账号和授权信息是在 conf/server.xml 文件中配置

vim /usr/local/mycat/conf/server.xml

这里定义的是在 192.168.2.2 上登陆 mycat 的用户名和密码,名称可以自定义。192.168.2.2 上没有运行 mysqld 服务,schemas里面指定的数据库名是服务器端必须存在的数据库!

编辑 MyCAT 的配置文件 schema.xml,关于 dataHost 的配置信息如下: