15天学习MySQL计划(运维篇)分库分表-监控-第十四天(中)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 15天学习MySQL计划(运维篇)分库分表-监控-第十四天(中)

3.server.xml

server.xml配置文件包含了mycat的系统配置信息,主要有两个重要的标签:system,user、

1.system标签

对应的系统配置项及其含义,参考资料

2.user标签

priviege权限设置字段:
​ dml='0000'=增 改 查 删
​ 0为关闭,1为开启

5.mycat分片

1.垂直分表

场景:

在业务系统中,涉及以下表结构,但是由于用户与订单每天都会产生大量的数据,单台服务器的数据存储及处理能力是有限的,可以对数据库进行拆分,原有的数据库表如下。

流程:

  1. 分别在三台MySQL中创建数据库(shopping)
  2. 修改schema.xml
  3. 修改server.xml
  4. 测试:创建表,插入数据
  5. schema.xml内容:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
  <schema name="SHOPPING" checkSQLschema="true" sqlMaxLimit="100">
   <table name="tb_goods_base" dataNode="dn1" primaryKey="id"/>
   <table name="tb_goods_brand" dataNode="dn1" primaryKey="id"/>
   <table name="tb_goods_cat" dataNode="dn1" primaryKey="id"/>
   <table name="tb_goods_desc" dataNode="dn1" primaryKey="goods_id"/>
   <table name="tb_goods_item" dataNode="dn1" primaryKey="id"/>
   <table name="tb_order_item" dataNode="dn1,dn2,dn3" primaryKey="id" type="global"/>
   <table name="tb_order_master" dataNode="dn1,dn2,dn3" primaryKey="order_id" type="global"/>
   <table name="tb_order_pay_log" dataNode="dn2" primaryKey="out_trade_no"/>
   <table name="tb_user" dataNode="dn3" primaryKey="id"/>
   <table name="tb_user_address" dataNode="dn3" primaryKey="id"/>
   <table name="tb_areas_provinces" dataNode="dn3" primaryKey="id"/>
   <table name="tb_areas_city" dataNode="dn3" primaryKey="id"/>
   <table name="tb_areas_region" dataNode="dn3" primaryKey="id"/>
  </schema>
  <dataNode name="dn1" dataHost="dhost1" database="shopping" />
  <dataNode name="dn2" dataHost="dhost2" database="shopping" />
  <dataNode name="dn3" dataHost="dhost3" database="shopping" />
  <dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="master" url="jdbc:mysql://192.168.2.1:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="1234.Com" />
  </dataHost>
  <dataHost name="dhost2" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="master" url="jdbc:mysql://192.168.2.2:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="1234.Com" />
  </dataHost>
  <dataHost name="dhost3" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="master" url="jdbc:mysql://192.168.2.3:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="1234.Com" />
  </dataHost>
</mycat:schema>

server.xml内容

<user name="root" defaultAccount="true">
    <property name="password">123456</property>
    <property name="schemas">SHOPPING</property>
</user>

2.水平分表

在业务系统中,有一张(日志表),业务系统每天都会产生大量的日志数据,单台服务器的数据存储及处理能力是有限的,可以对数据库表进行拆分。

对tb_log表进行拆分

1.schema.xml配置
<schema name="ITCAST" checkSQLschema="true" sqlMaxLimit="100">
    <table name="tb_log" dataNode="dn4,dn5,dn6" primaryKey="id" rule="mod-long"/>
</schema>
  <dataNode name="dn4" dataHost="dhost1" database="itcast" />
  <dataNode name="dn5" dataHost="dhost2" database="itcast" />
  <dataNode name="dn6" dataHost="dhost3" database="itcast" />
2.server.xml的配置
<user name="root" defaultAccount="true">
    <property name="password">123456</property>
    <property name="schemas">SHOPPING,ITCAST</property>
</user>

6.分片规则

1.范围分片

根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片

自定义分片范围

2.取模分片

根据指定的字段值与节点数量进行求模运算,根据运算结构,来决定该数据属于哪个分片。

取模分片配置

3.一致性hash

所谓一致性哈希,相同的哈希因子计算值总是被划分到相同的分区表中,不会因为分区节点的增加而改变原来的数据的分区位置。

一致性hash配置

通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,本规则适用于按照省份,性别,状态拆分数据等业务。

枚举分片配置

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全方位实践
本文深入探讨了构建高效运维体系的关键要素,从监控、日志管理、自动化工具、容器化与微服务架构、持续集成与持续部署(CI/CD)、虚拟化与云计算以及安全与合规等方面进行了全面阐述。通过引入先进的技术和方法,结合实际案例和项目经验,为读者提供了一套完整的运维解决方案,旨在帮助企业提升运维效率,降低运营成本,确保业务稳定运行。
|
14天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
25天前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
29 2
zabbix agent集成percona监控MySQL的插件实战案例
|
19天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
12天前
|
存储 运维 监控
构建高效运维体系:从监控到自动化的全方位实践指南
在当今数字化时代,企业对运维(Operations)的需求日益增长。运维不仅仅是保持系统运行那么简单,它涉及到监控、日志管理、故障排除、性能优化和自动化等多个层面。本文将从实际操作的角度出发,详细探讨如何构建一个高效的运维体系。通过具体案例,我们将了解不同运维工具和方法的应用,以及它们是如何帮助企业提高生产效率和降低运营风险的。无论你是刚接触运维的新手,还是经验丰富的专家,这篇文章都将为你提供宝贵的参考和启示。
|
23天前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
32 3
|
23天前
|
SQL 关系型数据库 MySQL
如何学习 MySQL?
如何学习 MySQL?
26 3
|
13天前
|
存储 运维 监控
构建高效运维体系:从监控到自动化的全方位实践
在当今信息技术飞速发展的时代,运维作为保障信息系统稳定运行的关键环节,其重要性不言而喻。本文将围绕如何构建一个高效的运维体系进行深入探讨,内容涵盖从监控、日志分析到自动化运维工具的选择与应用,以及在实际工作中的经验和案例分享。通过本文的介绍,读者将能够了解到如何在复杂多变的技术环境中,确保系统的高可用性、高性能和安全性,为业务连续性提供坚实保障。
|
28天前
|
数据采集 运维 监控
自动化运维:用Python打造简易监控系统
【8月更文挑战第31天】在追求高效的IT世界里,自动化运维不再是奢侈品而是必需品。本文将通过一个Python示例,展示如何构建一个简单的系统监控工具。从数据采集到警报触发,我们将一步步解锁自动化的秘密,让你的服务器管理变得轻松而高效。
|
11天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。

热门文章

最新文章