深入mysql

Posted ptxxc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入mysql相关的知识,希望对你有一定的参考价值。

集群搭建之读写分离

mysql-Proxy下载

https://downloads.mysql.com/archives/proxy/

技术图片

 

 

 MySQL-Proxy安装

准备一台机器作为MySQL-Proxy
上传压缩包
 解压缩包
 tar -zxvf /software/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/
 技术图片

 

 技术图片

名字太长,把名字改成mysql-proxy

mv mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy

技术图片

 

MySQL-Proxy配置

创建mysql-proxy.cnf文件

技术图片

 

修改mysql-proxy.cnf文件的权限:chmod

修改rw-splitting.lua脚本

技术图片

 

 

启动测试

在当前目录下,执行mysql-proxy命令,后面跟着配置文件地址mysql-proxy.cnf(因为就在当前目录下,所以写的相对路径,可改成绝对路径)

./mysql-proxy --defaults-file=mysql-proxy.cnf

技术图片

 

 执行ok后

技术图片

 

 这样再使用连接测试,发现已经能连接了

mysql -uroot -proot -h192.168.68.4 -P4040

 技术图片

然后update数据,发现主从服务器的数据已跟着发生改变

 

分库分表之MyCat实现

什么是MyCAT?

MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

 

MyCat有哪些作用

 

目前虽然传统关系数据库存在一些列的先天弊端,但NoSQL数据库又将其替代,但是如果传统数据库易于扩展和分拆就可以极大的避免单机单库在数据增删改查方面的缺陷。

 

MyCAT的关键特性

 支持 SQL 92标准

支持Mysql集群,可以作为Proxy使用

支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL  Server使用

支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群

自动故障切换,高可用性

支持读写分离,支持Mysql双主多从,以及一主多从的模式

支持全局表,数据自动分片到多个节点,用于高效表关联查询

支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询

多平台支持,部署和实施简单

 

MyCAT架构

技术图片

如图所示:MyCAT使用Mysql的通讯协议模拟成了一个Mysql服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNodeMySQL Instance)上的真实物理库中,这样一来,所有能使用Mysql的客户端以及编程语言都能将MyCAT当成是Mysql Server来使用,不必开发新的客户端协议。

 

Mycat解决的问题

性能问题

数据库连接过多

E-R分片难处理

可用性问题

成本和伸缩性问题

技术图片

 

Mycat读写分离

技术图片

 

 

 

 

Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。

 

以上是关于深入mysql的主要内容,如果未能解决你的问题,请参考以下文章

《深入MySQL实战》.pdf

MySQL深入学习--day3

阿里《深入MySQL实战》.pdf

MySQL进阶-10深入理解redolog,undolog和binlog的底层原理

MySQL深入浅出主从复制数据同步原理

深入理解MariaDB与MySQL