当前位置: 首页 > news >正文

站长之家网站流量查询重庆政务服务网

站长之家网站流量查询,重庆政务服务网,旅游网站国际业务怎样做,物流网站开发策划目录 九、MyCat实现分库分表1、分库分表介绍#xff1a;横向#xff08;水平#xff09;拆分**垂直分表**#xff1a;水平分表#xff1a;**分库分表** 纵向#xff08;垂直#xff09;拆分分表字段选择 2、分库分表操作#xff1a;1、分析图#xff1a;2、克隆主从3、… 目录 九、MyCat实现分库分表1、分库分表介绍横向水平拆分**垂直分表**水平分表**分库分表** 纵向垂直拆分分表字段选择 2、分库分表操作1、分析图2、克隆主从3、配置MyCat修改配置文件schema.xmlrule.xml schema.xml**rule.xml**重启mycat 4、测试 mysql系统架构各模块工作配合schema.xml 九、MyCat实现分库分表 1、分库分表介绍 https://www.cnblogs.com/zhangyi555/p/16528576.html 横向水平拆分 那如果把一张表中的不同的记录分别放到不同的表中这种就是横向拆分。 横向拆分的结果是数据库表中的数据会分散到多张分表中使得每一个单表中的数据的条数都有所下降。比如我们可以把不同的用户的订单分表拆分放到不同的表中 垂直分表 垂直分表是指将一个表按照字段分成多表每个表存储其中一部分字段 一张表有10个字段分成A、B两张表A表放3个字段B表放7个字段。 水平分表 把10万条数据的表分成两个5万数据的表就是水平分表字段都是一样的 分库分表 纵向垂直拆分 分表字段选择 2、分库分表操作 1、分析图 2、克隆主从 在克隆出一个主数据和从数据 以前克隆后的id修改步骤参考 主数据库 192.168.209.154 从数据库192.168.209.155 这两个主从数据库的配置方法跟第一次配置的一样参考下配置 步骤 主数据库 1、vi /etc/my.cnf 编辑 server-id154 #基本就是用id后3为做标识 log-binmaster-bin log-bin-indexmaster-bin.index 2、因为是拷贝的所以需要修改mysql的uuid 查找mysql的位置 find / -iname “auto.cnf” vi 拷贝查出来的位置进入编辑随便改uuid中的一个字母就行保证唯一就可以 3、启动mysql mysql -uroot -p123456 如果启动不起来错误-bash: mysql: command not found输入alias mysql/usr/local/mysql/bin/mysql 4、查看主节点的状态 show master status 从数据库 1、vi /etc/my.cnf 编辑 server-id155 #基本就是用id后3为做标识 log-binmaster-bin log-bin-indexmaster-bin.index 2、因为是拷贝的所以需要修改mysql的uuid 查找mysql的位置 find / -iname “auto.cnf” vi 拷贝查出来的位置进入编辑随便改uuid中的一个字母就行保证唯一就可以 3、启动mysql mysql -uroot -p123456 如果启动不起来错误-bash: mysql: command not found输入alias mysql/usr/local/mysql/bin/mysql 4、停止节点链路 stop slave; 5、配置文件change master to master_host‘192.168.209.154’,master_user‘root’,master_password‘123456’,master_log_file‘master-bin.000001’,master_log_pos156; 通过主节点的 show master status查看master-bin 和 master_log_pos就是position是多少要保持一致master_host也是要写主节点的id 6、启动从节点链路 start slave; 7、查看链路状态 show slave status \G; 要有两个yes才行 8、重启mysql的命令 service mysqld restart 对应id创建主从数据库 3、配置MyCat 修改配置文件 schema.xml ?xml version1.0? !DOCTYPE mycat:schema SYSTEM schema.dtd mycat:schema xmlns:mycathttp://io.mycat/schema nameTESTDB checkSQLschemafalse sqlMaxLimit100table namet_order primaryKeyorderNo dataNodedn01,dn02 rulerule1/ /schemadataNode namedn01 dataHostdh01 databaseljh_test / dataNode namedn02 dataHostdh02 databaseljh_test / dataHost namedh01 maxCon1000 minCon10 balance1 writeType0 dbTypemysql dbDrivernative heartbeatselect user()/heartbeat writeHost host192.168.209.150 url192.168.209.150:3306 userroot password123456readHost host192.168.209.152 url192.168.209.152:3306 userroot password123456/readHost/writeHostwriteHost host192.168.209.152 url192.168.209.152:3306 userroot password123456/writeHost/dataHost dataHost namedh02 maxCon1000 minCon10 balance1 writeType0 dbTypemysql dbDrivernative heartbeatselect user()/heartbeat writeHost host192.168.209.154 url192.168.209.154:3306 userroot password123456readHost host192.168.209.155 url192.168.209.155:3306 userroot password123456/readHost/writeHostwriteHost host192.168.209.155 url192.168.209.155:3306 userroot password123456/writeHost/dataHost /mycat:schemarule.xml ?xml version1.0 encodingUTF-8? !DOCTYPE mycat:rule SYSTEM rule.dtd mycat:rule xmlns:mycathttp://io.mycat/tableRule namerule1rulecolumnsorderNo/columnsalgorithmmod-long/algorithm/rule/tableRulefunction namemod-long classio.mycat.route.function.PartitionByMod!-- how many data nodes --property namecount2/property/function /mycat:ruleschema.xml 编写文件vi /usr/local/mycat/conf/schema.xml 拷贝进去格式乱不用理 rule.xml vi /usr/local/mycat/conf/rule.xml 重启mycat 启动mycat /usr/local/mycat/bin/mycat start 重启mycat/usr/local/mycat/bin/mycat restart 查看mycat日志 tail -f -n 50 /usr/local/mycat/logs/wrapper.log 有successfully就是重启成功 4、测试 **测试1**把之前的数据都清空插入五条数据看是否会根据求模取余把5条数据分别插在两个主数据库中150和154 分库分表后插入成功成功把数据分两个数据库插入。 **测试2**获取所有的数据看能不能从两张数据库中把数据完整的查出来 目前是还没有排序的需要修改下sql **测试3**两个数据库两张表看查出来的数据能否正确排序 测试成功。 mysql系统架构各模块工作配合 当我们执行启动 MySQL 命令之后MySQL 的初始化模块就从系统配置文件中读取系统参数和命令行参数并按照参数来初始化整个系统如申请并分配 buffer初始化全局变量以及各种结构等。同时各个存储引擎也被启动并进行各自的初始化工作。当整个系统初始化结束后由连接管理模块接手。连接管理模块会启动处理客户端连接请求的监听程序包 括 tcp/ip 的网络监听还有 unix 的 socket。这时候MySQL Server 就基本启动完成准备好接受客户端请求了。 当连接管理模块监听到客户端的连接请求借助网络交互模块的相关功能双方通过Client Server 交互协议模块所定义的协议“寒暄”几句之后连接管理模块就会将连接请求转发给线程管理模块去请求一个连接线程。线程管理模块马上又会将控制交给连接线程模块告诉连接线程模块现在我这边有连接请求过来了需要建立连接你赶快处理一下。连接线程模块在接到连接请求后首先会检查当前连接线程池中是否有被 cache 的空闲连接线程如果有就取出一个和客户端请求连接上如果没有空闲的连接线程则建立一个新的连接线程与客户端请求连接。当然连接线程模块并不是在收到连接请求后马上就会取出一个连接线程连和客户端连接而是首先通过调用用户模块进行授权检查只有客户端请求通过了授权检查后他才会将客户端请求和负责请求的连接线程连上。 在 MySQL 中将客户端请求分为了两种类型一种是 query需要调用 Parser 也就是Query 解析和转发模块的解析才能够执行的请求一种是 command不需要调用 Parser 就可以直接执行的请求。如果我们的初始化配置中打开了 Full Query Logging 的功能那么Query 解析与转发模块会调用日志记录模块将请求计入日志不管是一个 Query 类型的请求还是一个 command 类型的请求都会被记录进入日志所以出于性能考虑一般很少打开FullQuery Logging 的功能。 当客户端请求和连接线程“互换暗号互通协议”接上头之后连接线程就开始处理客户端请求发送过来的各种命令或者 query接受相关请求。它将收到的 query 语句转给 Query 解析和转发模块Query 解析器先对 Query 进行基本的语义和语法解析然后根据命令类型的不同有些会直接处理有些会分发给其他模块来处理。 如果是一个 Query 类型的请求会将控制权交给 Query 解析器。Query 解析器首先分析看是不是一个 select 类型的 query如果是则调用查询缓存模块让它检查该 query 在query cache 中是否已经存在。如果有则直接将 cache 中的数据返回给连接线程模块然后通过与客户端的连接的线程将数据传输给客户端。如果不是一个可以被 cache 的 query类型或者 cache 中没有该 query 的数据那么 query 将被继续传回 query 解析器让 query解析器进行相应处理再通过 query 分发器分发给相关处理模块。 如果解析器解析结果是一条未被 cache 的 select 语句则将控制权交给 Optimizer也就是 Query 优化器模块如果是 DML 或者是 DDL 语句则会交给表变更管理模块如果是一些更新统计信息、检测、修复和整理类的 query 则会交给表维护模块去处理复制相关的query 则转交给复制模块去进行相应的处理请求状态的 query 则转交给了状态收集报告模块。实际上表变更管理模块根据所对应的处理请求的不同是分别由 insert 处理器、delete处理器、update 处理器、create 处理器以及 alter 处理器这些小模块来负责不同的 DML和 DDL 的。 在各个模块收到 Query 解析与分发模块分发过来的请求后首先会通过访问控制模块检查连接用户是否有访问目标表以及目标字段的权限如果有就会调用表管理模块请求相应的表并获取对应的锁。表管理模块首先会查看该表是否已经存在于 table cache 中如果已经打开则直接进行锁相关的处理如果没有在 cache 中则需要再打开表文件获取锁然后将打开的表交给表变更管理模块。 当表变更管理模块“获取”打开的表之后就会根据该表的相关 meta 信息判断表的存储引擎类型和其他相关信息。根据表的存储引擎类型提交请求给存储引擎接口模块调用对应的存储引擎实现模块进行相应处理。 不过对于表变更管理模块来说可见的仅是存储引擎接口模块所提供的一系列“标准”接口底层存储引擎实现模块的具体实现对于表变更管理模块来说是透明的。他只需要调用对应的接口并指明表类型接口模块会根据表类型调用正确的存储引擎来进行相应的处理。 当一条 query 或者一个 command 处理完成成功或者失败之后控制权都会交还给连接线程模块。如果处理成功则将处理结果可能是一个 Result set也可能是成功或者失败的标识通过连接线程反馈给客户端。如果处理过程中发生错误也会将相应的错误信息发送给客户端然后连接线程模块会进行相应的清理工作并继续等待后面的请求重复上面提到的过程或者完成客户端断开连接的请求。 当一条 query 或者一个 command 处理完成成功或者失败之后控制权都会交还给连接线程模块。如果处理成功则将处理结果可能是一个 Result set也可能是成功或者失败的标识通过连接线程反馈给客户端。如果处理过程中发生错误也会将相应的错误信息发送给客户端然后连接线程模块会进行相应的清理工作并继续等待后面的请求重复上面提到的过程或者完成客户端断开连接的请求。 schema.xml ?xml version1.0? !DOCTYPE mycat:schema SYSTEM schema.dtd mycat:schema xmlns:mycathttp://io.mycat/!-- name逻辑库的名字checkSQLschema当该值设置为 true 时如果我们执行语句**select * from TESTDB.travelrecord;**则 MyCat 会把语句修改为**select * from travelrecord;**。设置成false,要求应用程序端,SQL语句不要带数据库名,不然识别不了sqlMaxLimit当用户没有写limit语句给这个语句默认加上 limit 100如果用户写了则不会加。--schema nameTESTDB checkSQLschemafalse sqlMaxLimit100!--name逻辑表表名dataNode数据分片id对应这下面的dataNode节点的name属性执行的sql的数据被分成多片--table namet_order dataNodedn01//schema!--name数据分片的名称给table引用的dataHost数据库实例的id对应下面dataHost节点的name属性database访问对应数据库实例里面的哪个数据库--dataNode namedn01 dataHostdn01 databaseljh_test /!--name数据库实例的名称给我们dataNode标签进行引用maxCon最大连接数minCon最小连接数dbType后端关联的数据库类型是什么类型因为mycat支持多种数据这里要标明白dbDriver表示是原生的MySQL,不是被定制、改装过的是原版。balance负载均衡策略balance1全部的readHost与stand by writeHost参与select语句的负载均衡简单的说当双主双从模式(M1-S1M2-S2并且M1与 M2互为主备)正常情况下M2,S1,S2都参与select语句的负载均衡writeTypewriteType0, 所有写操作发送到配置的第一个writeHost第一个挂了切到还生存的第二个writeHost重新启动后已切换后的为准切换记录在配置文件中:dnindex.properties .--dataHost namedn01 maxCon1000 minCon10 balance1writeType0 dbTypemysql dbDrivernative switchType1 slaveThreshold100!-- 心跳机制 --heartbeatselect user()/heartbeat!-- 写节点的配置host主机名url连接的访问地址user后端数据库的用户名password后端数据库的用户密码--writeHost host192.168.209.150 url192.168.209.150:3306 userrootpassword123456!-- 读节点配置 --readHost host192.168.209.152 url192.168.209.152:3306 userroot password123456 //writeHost!-- 备用写节点 主的挂了之后这个备用的就变成主了能读能写 --writeHost host192.168.209.152 url192.168.209.152:3316 userrootpassword123456 //dataHost /mycat:schema
http://www.zqtcl.cn/news/268548/

相关文章:

  • 相亲网站做推广的照片是谁广告优化师前景
  • 营销导向的网站建设的主要流程陕煤建设集团网站
  • 电商网站销售数据分析网页美工设计实训报告
  • 百度新网站收录wordpress免刷新插件
  • 如何做好网站外链c#+开发网站开发
  • 展示型网站报价网站目录创建下载链接
  • cloudflare做侵权网站建设网站需要什么知识
  • 软装设计公司名称怎样给网站做优化
  • 如何判断网站是用什么程序做的云南网站建设公司
  • 清远市建设局官方网站软件开发工程师发展前景
  • 韩国做hh网站图片转链接生成器在线
  • 有凡客模版怎么建设网站百度网盘在线观看资源
  • 网站关键字统计龙岩龙硿洞
  • 成都哪个网站建设比较好建设工程交易服务中心
  • 怎么做好网站推广小笨鸟跨境电商平台
  • 建立一个网站需要多少钱?制作ppt模板的软件
  • 百度 手机网站 友好性青岛谷歌优化
  • 免费的200m网站空间谷歌建站哪家好
  • 哪些平台可以建立网站2345浏览器网页版入口中文版
  • 网站设计与网页制作培训页面设计实训报告
  • 网站建设团队精神深圳福田最新消息今天
  • 网站制作主要公司哪个软件购物便宜又好
  • 如何取一个大气的名字的做网站263企业邮箱登录登录入口电脑版
  • 最好的做法是百度站长seo
  • 网站建设的基础常识dw个人简历网页制作
  • 网站建设怎么样做账义乌市住房和城乡建设局网站
  • 做网站友情链接的步骤wordpress文库主题
  • 网站模板用什么软件做泉州网站建设轩奇网讯
  • 网站开发必备人员网页设计图片居中代码
  • 网站列表页怎么做的百度seo优