• 注册
当前位置:1313e > 数据库 >正文

mysql读写分离6_MySQL读写分离

关于MySQL的读写分离的实现,有两种方式。

1.第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到不同的数据库中,实现读写分离;

2.第二种方式就是基于MyCat中间件来实现读写分离的效果;

优劣分析

关于这两种方式的优劣。

代码层实现读写分离,主要的优点就是灵活,可以自己根据不同的需求对读写分离的规则进行定制化开发,但其缺点也十分明显,就是当我们动态增减主从库数量的时候,都需要对代码进行一个或多或少的修改。并且当主库宕机了,如果我们没有实现相应的容灾逻辑,那么整个数据库集群将丧失对外的写功能。

使用MyCat中间件实现读写分离,优点十分明显,我们只需要进行配置就可以享受读写分离带来的效率的提升,不用写一行代码,并且当主库宕机时,我们还可以通过配置的方式进行主从库的自动切换,这样即使主库宕机我们的整个集群也不会丧失写的功能。其缺点可能就是我们得多付出一台服务器作为虚拟节点了吧,毕竟服务器也是需要成本的。

两种方式如何抉择:如果你目前的项目比较小,或者干脆是一个毕业设计、课程设计之类的,不会有动态增减数据库的需求,那么自己动手实现一个数据库的读写分离会比较适合你,毕竟答辩的时候,可以一行一行代码跟你的导师和同学解(zhuang)释(bi)。如果项目比较大了,数据库节点有可能进行增减,并且需要主从切换之类的功能,那么就使用第二种方式吧。这种配置化的实现可以降低第二天洗头时候下水管堵塞的几率。

第二种方式;

1、创建“weibo_simple”数据库

#创建数据库

CREATE DATABASE weibo_simple

2、创建表结构

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;

3、 解压mycat,不要放在有中文目录的地方

da694b9ad3184bdf9b2a0d5f5385894f.png

4、修改mycat解压目录下的conf文件夹中server.xml文件,配置账户

mycat_master

mycat

mycat_slave

mycat

true

5、配置schema.xml文件

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

slaveThreshold="100">

select user()

6、 配置rule.xml

user_id

func1

autopartition-long.txt

7、 配置启动日志 log4j.xml

8、启动bin下startup_nowrap.bat

9、 连接mycat_master主机

5a4926d4b6ccf74b8885191b00c9e14d.png 

6546d954112158041f048a741cee7fdb.png

10、 连接mycat_slave从机   (只读)

cde4ab2d96da20f5e404f086f2113303.png 

a9e2c4e8797af370e5d8c9194d2f13a6.png

特别注意

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

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录