什么是读写分离

在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能。当然,主数据库另外一个功能就是负责将事务性查询导致的数据变更同步到从库中,也就是写操作。

读写分离的好处

1)分摊服务器压力,提高机器的系统处理效率

读写分离适用于读远比写的场景,如果有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能并不高,而主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;

假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能;

2)增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务

什么是  Mycat

是一个开源的分布式数据库系统,但是因为数据库一般都有自己的数据库引擎,而Mycat并没有属于自己的独有数据库引擎,所有严格意义上说并不能算是一个完整的数据库系统,只能说是一个在应用和数据库之间起桥梁作用的中间件。

在Mycat中间件出现之前,MySQL主从复制集群,如果要实现读写分离,一般是在程序段实现,这样就带来了一个问题,即数据段和程序的耦合度太高,如果数据库的地址发生了改变,那么我的程序也要进行相应的修改,如果数据库不小心挂掉了,则同时也意味着程序的不可用,而对于很多应用来说,并不能接受;

引入Mycat中间件能很好地对程序和数据库进行解耦,这样,程序只需关注数据库中间件的地址,而无需知晓底层数据库是如何提供服务的,大量的通用数据聚合、事务、数据源切换等工作都由中间件来处理;

Mycat中间件的原理是对数据进行分片处理,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成完成的数据库存储,有点类似磁盘阵列中的RAID0.

实现读写分离

准备工作

步骤一:创建数据库

#创建数据库

CREATE DATABASE weibo_simple

步骤二:创建用户表

CREATE TABLE `t_users` (

`user_id` varchar(64) NOT NULL COMMENT '注册用户ID',

`user_email` varchar(64) NOT NULL COMMENT '注册用户邮箱',

`user_password` varchar(64) NOT NULL COMMENT '注册用户密码',

`user_nikename` varchar(64) NOT NULL COMMENT '注册用户昵称',

`user_creatime` datetime NOT NULL COMMENT '注册时间',

`user_status` tinyint(1) NOT NULL COMMENT '验证状态 1:已验证 0:未验证',

`user_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除',

PRIMARY KEY (`user_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

步骤三:创建微博表

CREATE TABLE `t_message` (

`messages_id` varchar(64) NOT NULL COMMENT '微博ID',

`user_id` varchar(64) NOT NULL COMMENT '发表用户',

`messages_info` varchar(255) DEFAULT NULL COMMENT '微博内容',

`messages_time` datetime DEFAULT NULL COMMENT '发布时间',

`messages_commentnum` int(12) DEFAULT NULL COMMENT '评论次数',

`message_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除',

`message_viewnum` int(12) DEFAULT NULL COMMENT '被浏览量',

PRIMARY KEY (`messages_id`),

KEY `user_id` (`user_id`),

CONSTRAINT `t_message_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `t_users` (`user_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

安装mycat

步骤一:解压mycat,不要放在有中文目录的文件夹下

步骤二:修改mycat目录下的conf文件夹中的server.xml文件,配置账户

mycat_master

mycat

mycat_slave

mycat

true

步骤三:配置schema.xml文件

writeType="0" dbType="mysql" dbDriver="native" switchType="1"

slaveThreshold="100">

select user()

步骤四:配置rule.xml文件

user_id

func1

autopartition-long.txt

步骤五:配置启动日志文件log4j.xml

步骤六:启动mycat,默认端口为8066

master

master机器上可以进行读写操作

slave

slave机器上可以进行读操作,进行写操作时会报错

注意注意注意特别注意

1.在使用mycat连接SQLyog时,SQLyog版本不能太低,版本不能太低,不能太低,需要高版本!!!

2.在双击启动mycat时,如果控制台一闪而过,参考方案如下

修改startup_nowrap.bat启动文件,内容如下

"%JAVA_CMD%" -server -Xms512M -Xmx600M -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" org.opencloudb.MycatStartup

好文要顶 已关注 收藏该文

mysql读写分离优点_mysql读写分离相关推荐

  1. mysql的读写分离技术_mysql 读写分离方法

    数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案. 比较常见的读写分离方案如下: 1 基于查询分离 最简单的分离方法是将读和写分发到主和从服务器上,这种策略很容易实现,但是仅限于一 ...

  2. mysql读写分离 存储过程_MySQL读写分离 · wang-y/Technical-Information Wiki · GitHub

    MySQL读写分离 1.主(master)从(slave)服务器上安装mysql; 2.配置步骤 主服务器master 配置: mysql 配置文件添加:(windows: my.ini;linux: ...

  3. mysql读写分离优点_mssql2008 读写分离_mysqlproxy读写分离_读写分离的好处

    mssql2008 读写分离 在一些大型的网站或者应用中,单台的SQL Server 服务器可能难以支撑非常大的访问压力.mssql2008 读写分离很在这时候,第一个想到的就是一个解决性能问题的利器 ...

  4. mysql 线程池 优点_Mysql 线程池 ===

    why 在5.6以前,mysql会对每个连接创建一个线程,请求结束后销毁线程.在高并发的情况下,为了避免频繁创建和释放连接,可以通过thread-cache将线程缓存起来,请求来了先尝试从cache中 ...

  5. mysql复合索引优点_mysql 联合索引有什么好处? 联合索引的意义

    mysql 里创建'联合索引'的意义 问题? 因为什么需求,要创建'联合索引'?最实际好处在于什么?如果是为了更快查询到数据,有单列索引不是Ok?为什么有'联合索引'的存在? 简单的说有两个主要原因: ...

  6. mysql主主备份_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

    一.MySQL主从备份 为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在主服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当主 ...

  7. mysql主从配置访问_Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  8. 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)

    高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制) 视频地址:https://www.bilibili.com/video/BV1ry4y1v7Tr?p=8& ...

  9. MySQL之中间件Mycat实现读写分离

    目录 一.MySQL 读写分离的概述 1.读写分离工作原理 1.读写分离工作原理 2.为什么要读写分离 3.实现读写分离的方式 4.常见的中间件程序 二.什么是MyCAT? 三.Mycat应用场景 四 ...

  10. java spring mysql配置_java相关:mysql+spring+mybatis实现数据库读写分离的代码配置

    java相关:mysql+spring+mybatis实现数据库读写分离的代码配置 发布于 2020-4-4| 复制链接 分享一篇关于关于mysql+spring+mybatis实现数据库读写分离的代 ...

最新文章

  1. 逻辑网络拓扑与物理网络拓扑—Vecloud微云
  2. iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET
  3. StackOverflow 上面最流行的 7 个 Java 问题!| 值得一看
  4. 某页纸api接口网站源码 高速php源码
  5. 在Mac OS X Snow Leopard中设置Google App Engine [失败]
  6. Python程序设计读者群成立通知
  7. C语言丨定积分的近似计算
  8. eclipse不能添加tomcat7的问题
  9. fastjson转换json格式数据为ListHashMap转换异常问题
  10. 贪心科技机器学习训练营(十)
  11. DDNS设置(自用)
  12. 6410启动问题排除
  13. 战士的升级速度不可能同法师相比,道士相比也有一定差距
  14. Matter Commissioning
  15. 别再稀里糊涂的使用ls命令了,带你重新认识linux查看文件信息的ls【内涵长文,非命令参数罗列】
  16. 内存的分类以及各自特征
  17. 中南大学材料院matlab考试题,中南大学材料院matlab操作题集答案
  18. go解析yaml文件示例
  19. Outlook使用RTF格式发信出现Winmail.dat附件事宜
  20. scrapy框架菜鸟学习记录

热门文章

  1. aspnetpager 详解
  2. 约瑟夫问题(Josephus problem)详解
  3. 如何不使用输入法打出汉字- 在word中打印出自己的名字
  4. kindle android 音标 乱码,在乐视2手机上解决kindle阅读器即译时音标显示正常的问题...
  5. Atlas500 ROS Ubuntu容器硬件接口及网络映射配置
  6. 中国图形图象学报和计算机科学,《中国图象图形学报》编辑部
  7. 安装Microsoft Office Document Image Writer
  8. 百度网盘客户端二维码无法显示及第三方无法登录问题的解决方法
  9. 华为ENSP 三层交换
  10. leapftp怎么下载文件,用leapftp怎么下载文件