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

oss做网站迁移郑州市中标公示网

oss做网站迁移,郑州市中标公示网,创建全国文明城市我们在行动绘画,江西网站做的好的企业文化接上一篇#xff1a;企业实战_11_MyCat垂直拆分相关配置 https://gblfy.blog.csdn.net/article/details/100055838 文章目录一、概念理论理解1. 垂直拆分理解2. 水平扩展理解3. 水平扩展案例4. 水平扩展场景5. 水平拆分原则6. 水平扩展架构图二、关键问题解决方案2.1. 分片后如… 接上一篇企业实战_11_MyCat垂直拆分相关配置 https://gblfy.blog.csdn.net/article/details/100055838 文章目录一、概念理论理解1. 垂直拆分理解2. 水平扩展理解3. 水平扩展案例4. 水平扩展场景5. 水平拆分原则6. 水平扩展架构图二、关键问题解决方案2.1. 分片后如何查询2.2. 分片规则2.3. 数据分片步骤2.4. 如何选择分片键2.5. 分析业务模型选择分片及算法三、使用Mycat部署分片集群3.1. 使用schema.xml配置逻辑库及逻辑表3.2. 使用rule.xml配置分片表的分片规则3.3. 使用server.xml配置访问用户及权限四、环境节点配置分布五、创建4个分片数据库节点5.1. 导出和同步5.2. 创建4个数据库5.3. 导入表结构5.4. node2验证5.5. node3验证六、实战mycat6.1. 添加数据节点6.2. 添加数据节点6.3. 数据分片名称6.4. 编辑rule.xml添加规则算法七、数据测试验证7.1. 实现思路7.2. 重新启动mycat7.3. 登录mycat7.4. 批量插入数据7.5. 逻辑库查询八、 数据分片验证8.1. node2节点order_db01验证8.2. node2节点order_db02验证8.3. node3节点order_db03验证8.4. node3节点order_db04验证8.5. 数据分片结论一、概念理论理解 1. 垂直拆分理解 把表按照业务模块分离到不同的mysql数据库中这样就可以缓解请求压力。 例如订单模块的表在order_db数据库中产品模块的表在product_db数据库中客户模块的表在customer_db数据库中。 2. 水平扩展理解 水平扩展是在垂直拆分的基础上进行的水平扩展是将单张表拆分成了多张表分别放到不同的库中或者一个库中的不同表中。 3. 水平扩展案例 案例简介1 电商平台订单会比较多一般先会对数据按照业务模块进行垂直拆分在此基础上然后针对大流量的数据库表例如订单表进行水平扩展也叫作分库分表也减轻数据库压力。案例简介2 保险行业场景同上 实际案例实战 order_master订单主表 ①可以创建分别创建order_db01、order_db02、order_db03、order_db04四个数据库。②在以上4个数据库中分别创建将order_master这张表。③ 将order_master这张表的数据按照数据分片规则分别插入到order_db01、order_db02、order_db03、order_db04四个数据库中。 4. 水平扩展场景 把数据按照模块划分成了多个单独的模块当大流量和并发请求一起冲击某个模块达到一定量级时垂直拆分不能解决这种现象。因此需要针对数据量很大的表进行水平拆分。 5. 水平拆分原则 1.水平拆分只是把某张数据量很大的表 水平拆分成几片术词叫做数据库分片 2. 这几片数据库表结构都一样 3. 按照一定的规则算法对数据进行分流* 6. 水平扩展架构图 如下图说是把订单表进行了水平扩展分库分表处理 二、关键问题解决方案 2.1. 分片后如何查询 2.2. 分片规则 2.3. 数据分片步骤 一、水平分片的步骤 第一步根据业务状态确定要进行水平切分的表第二步根据业务模型选择分片键及分片算法第三步使用Mycat部署分片集群第四步测试分片几群第五步业务数据迁移 2.4. 如何选择分片键 如何选择分片键 尽可能比较均匀分布数据到各个节点该业务字段是最频繁的挥着最重要的查询条件 2.5. 分析业务模型选择分片及算法 对订单相关表进行水平拆分 以订单号作为分片键 采用简单取模分片算法 注分片键非常重要这里以订单号作为演示最合理应该以客户id作为分片键 三、使用Mycat部署分片集群 3.1. 使用schema.xml配置逻辑库及逻辑表 3.2. 使用rule.xml配置分片表的分片规则 3.3. 使用server.xml配置访问用户及权限 四、环境节点配置分布 以前 主机名IP地址角色数据库node1192.168.92.101MYSQL、mycatimooc_db(主机物理)node2192.168.92.102MYSQLorder_db(从机物理)node3192.168.92.103MYSQLproduct_db(主机物理)node4192.168.92.104MYSQLcustomer_db(从机物理) 现在 主机名IP地址角色数据库node1192.168.92.101MYCAT 、MYSQLimooc_db(逻辑库)node2192.168.92.102MYSQLorder_db(从机物理)order_db01和order_db01node3192.168.92.103MYSQLproduct_db(主机物理)order_db03和order_db04node4192.168.92.104MYSQLcustomer_db 五、创建4个分片数据库节点 5.1. 导出和同步 导出order_master表结构 # 登录node2节点将order_db 数据库中的order_master表结构导出为order_master.sql mysqldump -uroot -p order_db order_master order_master.sql# 将order_master.sql同步node03 scp order_master.sql root192.168.92.103:/root5.2. 创建4个数据库 # 登录node2创建数据库分片节点 # 分片数据库名order_db01/order_db02 mysql -uroot -p -ecreate database order_db01 mysql -uroot -p -ecreate database order_db02# 登录node3创建数据库分片节点 # 分片数据库名order_db03/order_db04 mysql -uroot -p -ecreate database order_db03 mysql -uroot -p -ecreate database order_db04 5.3. 导入表结构 # 登录node2将order_master.sql分别导入orderdb_01、order_db02 mysql -uroot -p order_db01 order_master.sql mysql -uroot -p order_db02 order_master.sql # 登录node3将order_master.sql分别导入order_db03、order_db04 mysql -uroot -p order_db03 order_master.sql mysql -uroot -p order_db04 order_master.sql 5.4. node2验证 # 登录node2登录mysql物理库mysql -uroot -p# 查询数据库列表 mysql show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | order_db | | order_db01 | | order_db02 | | performance_schema | | sys | -------------------- mysql use order_db01; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql show tables; ---------------------- | Tables_in_order_db01 | ---------------------- | order_master | ---------------------- mysql use order_db02; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql show tables; ---------------------- | Tables_in_order_db02 | ---------------------- | order_master | ----------------------5.5. node3验证 # 登录node3登录mysql物理库mysql -uroot -p# 查询数据库列表 mysql show databases;mysql show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | order_db03 | | order_db04 | | performance_schema | | product_db | | sys | --------------------mysql use order_db03; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql show tables; ---------------------- | Tables_in_order_db03 | ---------------------- | order_master | ---------------------- mysql use order_db04; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql show tables; ---------------------- | Tables_in_order_db04 | ---------------------- | order_master | ----------------------六、实战mycat 6.1. 添加数据节点 编辑schema.xml添加数据节点dataNode # 登录mycat服务器# 进入到mycat配置目录 cd /app/mycat/conf# 编辑schema.xml vim schema.xml# 添加4个数据节点dataNode dataNode nameordb01 dataHostmysql92102 databaseorder_db01 /dataNode nameordb02 dataHostmysql92102 databaseorder_db02 /dataNode nameordb03 dataHostmysql92103 databaseorder_db03 /dataNode nameordb04 dataHostmysql92103 databaseorder_db04 /6.2. 添加数据节点 由于我们对订单表进行了数据分片因此需要修改schema标签添加数据节点ordb01,ordb02,ordb03,ordb04 # 编辑schema.xml修改数据节点dataNode 将table nameorder_master primaryKeyorder_id dataNodeordb / 调整为 table nameorder_master primaryKeyorder_id dataNodeordb01,ordb02,ordb03,ordb04 /6.3. 数据分片名称 将table nameorder_key primaryKeyid dataNodeordb01,ordb02,ordb03,ordb04 / 调整为 table nameorder_master primaryKeyorder_id dataNodeordb01,ordb02,ordb03,ordb04 ruleorder_master/ 6.4. 编辑rule.xml添加规则算法 既然使用了数据分片因此需要配置分片算法 ?xml version1.0 encodingUTF-8? !DOCTYPE mycat:rule SYSTEM rule.dtd mycat:rule xmlns:mycathttp://io.mycat/tableRule nameorder_masterrulecolumnscustomer_id/columnsalgorithmmod-long/algorithm/rule/tableRulefunction namemod-long classio.mycat.route.function.PartitionByMod property namecount4/property/function /mycat:rule 七、数据测试验证 登录mycat 批量插入数据测试验证 7.1. 实现思路 1 新建一个order_master表 2. 把order_master表分别同步到order_db01、order_db02、order_db03、order_db04 3. 准备一个批量插入的脚本例如insert into10条数据进行测试 4. 分别登录order_db01、order_db02、order_db03、order_db04查看数据的分布情况 5. 对数据的分片键进行取模验证 6. 判断插入的数据是否按照取模的算法正确插入到数据库中需要思考的问题 这对电商项目应该拿订单号来作为分片主键还是下订单的order_id 来作为分片主键 如果拿订单号来作为分片主键的话数据会分布均匀 如果拿客户号customer_id 来作为分片主键的话数据会分布不均匀 想想哪个更合理 7.2. 重新启动mycat 由于刚才修改了mycat的配置文件重新启动mycat才会生效。 # 停止mycat服务 mycat stop# 启动mycat服务 mycat start# 查看mycat启动日志 tail -f /app/mycat/logs/wrapper.logMyCAT Server startup successfully. see logs in logs/mycat.log7.3. 登录mycat # 使用mysql客户端连接mycat并登录mycat mysql -uapp_imooc -p123456 -h192.168.92.101 -P8066 # 使用imooc_db数据库 use imooc_db;7.4. 批量插入数据 到order_master表中 INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 1, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (2, 2, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 3, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 4, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 5, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 6, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 7, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 8, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES (1, 9, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25); INSERT INTO order_master (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time) VALUES ( 1,10, 雨昕, 1, 1, 1, 北京, 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, 2021-07-11 20:20:25, NULL, 2021-07-11 20:18:55, 2021-07-11 20:18:59, 0, 0, NULL, 2021-07-11 20:20:25);7.5. 逻辑库查询 mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ------------------------------------------------------ | customer_id | order_sn | order_id | mod(customer_id, 4) | ------------------------------------------------------ | 2 | 2 | 1 | 2 | | 6 | 1 | 2 | 2 | | 10 | 1 | 3 | 2 | | 4 | 1 | 1 | 0 | | 8 | 1 | 2 | 0 | | 3 | 1 | 1 | 3 | | 7 | 1 | 2 | 3 | | 1 | 1 | 1 | 1 | | 5 | 1 | 2 | 1 | | 9 | 1 | 3 | 1 | ------------------------------------------------------ 10 rows in set (0.00 sec)八、 数据分片验证 8.1. node2节点order_db01验证 # 连接node2服务器登录物理mysql mysql -uroot -p123456order_db01数据库 # 使用指定数据库 use order_db01;# 查询order_master表中取模数据 SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;mysql use order_db01; Database changed mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ----------------------------------------------------- | customer_id | order_sn | order_id | mod(customer_id,4) | ----------------------------------------------------- | 4 | 1 | 1 | 0 | | 8 | 1 | 2 | 0 | ----------------------------------------------------- 2 rows in set (0.00 sec) order_db01分片数据库节点插入数据2条 8.2. node2节点order_db02验证 order_db02数据库 # 使用指定数据库 use order_db02;# 查询order_master表中取模数据 SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;mysql use order_db02; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ----------------------------------------------------- | customer_id | order_sn | order_id | mod(customer_id,4) | ----------------------------------------------------- | 1 | 1 | 1 | 1 | | 5 | 1 | 2 | 1 | | 9 | 1 | 3 | 1 | ----------------------------------------------------- 3 rows in set (0.00 sec) order_db02分片数据库节点插入数据3条 8.3. node3节点order_db03验证 # 连接node3服务器登录物理mysql mysql -uroot -p123456mysql use order_db03; Database changed mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ----------------------------------------------------- | customer_id | order_sn | order_id | mod(customer_id,4) | ----------------------------------------------------- | 2 | 2 | 1 | 2 | | 6 | 1 | 2 | 2 | | 10 | 1 | 3 | 2 | ----------------------------------------------------- 3 rows in set (0.00 sec) order_db03分片数据库节点插入数据3条 8.4. node3节点order_db04验证 mysql use order_db04; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ----------------------------------------------------- | customer_id | order_sn | order_id | mod(customer_id,4) | ----------------------------------------------------- | 3 | 1 | 1 | 3 | | 7 | 1 | 2 | 3 | ----------------------------------------------------- 2 rows in set (0.00 sec)order_db04分片数据库节点插入数据2条 8.5. 数据分片结论 mysql SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master; ------------------------------------------------------ | customer_id | order_sn | order_id | mod(customer_id, 4) | ------------------------------------------------------ | 2 | 2 | 1 | 2 | | 6 | 1 | 2 | 2 | | 10 | 1 | 3 | 2 | | 4 | 1 | 1 | 0 | | 8 | 1 | 2 | 0 | | 3 | 1 | 1 | 3 | | 7 | 1 | 2 | 3 | | 1 | 1 | 1 | 1 | | 5 | 1 | 2 | 1 | | 9 | 1 | 3 | 1 | ------------------------------------------------------ 10 rows in set (0.00 sec)从上面数据分片的数据来看 1.10条数据按照数据分片规则简单取模分别插入到了4个数据库中。 2.order_master表中的主键是order_id主键有自增约束。虽然主键是唯一的不可重复的但是是相对于一个表而言的。 3.这些重复的order_id的数据插入到了不同的数据库中。 以上会造成一个现象就是在imooc_db逻辑库中的order_master表获取order_id为1的场景会出现什么问题呢 order_id数据为1的有3条数据那最后回去哪一条呢 答案是不能取任何一条。 那应该如何解决上述问题呢请大家继续阅读下一章全局自增ID。 下一篇企业实战_13_MyCat清除冗余数据 https://gblfy.blog.csdn.net/article/details/100057317
http://www.zqtcl.cn/news/187641/

相关文章:

  • 做网站卖东西赚钱吗凡科互动官网登陆
  • 免费写作网站通道一通道二通道三免费
  • 腾讯云做网站选哪个网络广告推广员
  • 昆明网站开发哪家好做网站怎么做小图标
  • 泉州做外贸网站成都idc机房托管
  • 南京林业大学实验与建设网站宁波软件开发制作
  • 北京专业网站制作服务郑州有学网站制作
  • 搭建wordpress需要什么样的环境专注软件优化分享的网站
  • 网站备案后 如何建设下载免费ppt模板
  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做
  • 远程医疗型网站开发三合一网站有必要吗
  • 什么网站是用html做的网站制作成本多少钱
  • 邢台企业网站制作建设wordpress多站点配置教程
  • 湖北省建设厅网站a群诸城网站价格
  • 江苏网站设计如何设置wordpress不自动更新
  • 已经有网站怎么做淘宝客网站建设 国外
  • 百度新闻源网站株洲在线论坛二手市场
  • 招聘做微信公众号网站维护推广网上国网的好处
  • php企业网站通讯录管理系统查找企业资料的网站
  • 专门做娱乐场所的设计网站有虚拟主机wordpress
  • 在线制作书封网站建德建设局官方网站
  • 广州建设手机网站wordpress 外部链接跳转
  • 传播公司可以做门户网站吗深圳常平网站建设制作公司
  • 最好的网站设计公司源码 php多平台网站建设
  • 下载了网站源码施工企业质量管理体系应按照我国
  • 有关网站建设国内外现状的文献英文谷歌seo