技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试

Chaos Mesh 实战分享丨通过混沌工程验证 GreatDB 分布式部署模式的稳定性 混沌测试是检测分布式系统不确定性、建立系统弹性信心的一种非常好的方式,因此我们采用开源工具 Chaos Mesh 来做 GreatDB 分布式集群的混沌测试。万里安全数据库软件 GreatDB 是一款关系型数据库软件,同时支持集中式和分布式的部署方式,本文涉及的是分布式部署方式。分布式部署模式采用 shared-nothing 架构;通过数据冗余与副本管理确保数据库无单点故障;数据 sharding 与分布式并行计算实现数据库系统高性能;可无限制动态扩展数据节点,满足业务需要。 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍

1.1 需求背景

混沌测试是检测分布式系统不确定性、建立系统弹性信心的一种非常好的方式,因此我们采用开源工具Chaos Mesh来做GreatDB分布式集群的混沌测试。

1.2 万里安全数据库软件GreatDB分布式部署模式介绍

万里安全数据库软件GreatDB 是一款关系型数据库软件,同时支持集中式和分布式的部署方式,本文涉及的是分布式部署方式。

分布式部署模式采用shared-nothing架构;通过数据冗余与副本管理确保数据库无单点故障;数据sharding与分布式并行计算实现数据库系统高性能;可无限制动态扩展数据节点,满足业务需要。

整体架构如下图所示:

file

2. 环境准备

2.1 Chaos Mesh安装

在安装Chaos Mesh之前请确保已经预先安装了helm,docker,并准备好了一个kubernetes环境。

1)在 Helm 仓库中添加 Chaos Mesh 仓库:

helm repo add chaos-mesh https://charts.chaos-mesh.org

2)查看可以安装的 Chaos Mesh 版本:

helm search repo chaos-mesh

3)创建安装 Chaos Mesh 的命名空间:

kubectl create ns chaos-testing

4)在docker环境下安装Chaos Mesh:

helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing

验证安装 执行以下命令查看Chaos Mesh的运行情况:

kubectl get pod -n chaos-testing

下面是预期输出:

NAME                                       READY   STATUS    RESTARTS   AGE
chaos-controller-manager-d7bc9ccb5-dbccq   1/1     Running   0          26d
chaos-daemon-pzxc7                         1/1     Running   0          26d
chaos-dashboard-5887f7559b-kgz46           1/1     Running   1          26d

如果3个pod的状态都是Running,表示 Chaos Mesh 已经成功安装。

2.2 准备测试需要的镜像

2.2.1 准备mysql镜像

一般情况下,mysql使用官方5.7版本的镜像,mysql监控采集器使用的是mysqld-exporter,也可以直接从docker hub下载:

docker pull mysql:5.7
docker pull prom/mysqld-exporter

2.2.2 准备zookeeper镜像

zookeeper使用的是官方3.5.5版本镜像,zookeeper组件涉及的监控有jmx-prometheus-exporter 和zookeeper-exporter,均从docker hub下载:

docker pull zookeeper:3.5.5
docker pull sscaling/jmx-prometheus-exporter
docker pull josdotso/zookeeper-exporter

2.2.3 准备GreatDB镜像 选择一个GreatDB的tar包,将其解压得到一个./greatdb目录,再将greatdb-service-docker.sh文件拷贝到这个解压出来的./greatdb目录里:

cp greatdb-service-docker.sh ./greatdb/

将greatdb Dockerfile放到./greatdb文件夹的同级目录下,然后执行以下命令构建GreatDB镜像:

docker build -t greatdb/greatdb:tag2021 .

2.2.4 准备GreatDB分布式集群部署/清理的镜像

下载集群部署脚本cluster-setup,集群初始化脚本init-zk 以及集群helm charts包(可咨询4.0开发/测试组获取)

将上述材料放在同一目录下,编写如下Dockerfile:

FROM debian:buster-slim as init-zk

COPY ./init-zk /root/init-zk
RUN chmod +x /root/init-zk

FROM debian:buster-slim as cluster-setup
\# Set aliyun repo for speed
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
  sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

RUN apt-get -y update && \
  apt-get -y install \
  curl \
  wget

RUN curl -L https://storage.googleapis.com/kubernetes-release/release/v1.20.1/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl && \
  chmod +x /usr/local/bin/kubectl && \
  mkdir /root/.kube && \
  wget https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz && \
  tar -zxvf helm-v3.5.3-linux-amd64.tar.gz && \
  mv linux-amd64/helm /usr/local/bin/helm

COPY ./config /root/.kube/
COPY ./helm /helm
COPY ./cluster-setup /

执行以下命令构建所需镜像:

docker build --target init-zk -t greatdb/initzk:latest .

docker build --target cluster-setup -t greatdb/cluster-setup:v1 .

2.2.5 准备测试用例的镜像 目前测试支持的用例有:bank,bank2,pbank,tpcc,flashback等,每个用例都是一个可执行文件。

以flashback测例为例构建测试用例的镜像,先将用例下载到本地,在用例的同一目录下编写如下内容的Dockerfile:

FROM debian:buster-slim
COPY ./flashback /
RUN cd / && chmod +x ./flashback

执行以下命令构建测试用例镜像:

docker build -t greatdb/testsuite-flashback:v1 .

2.3 将准备好的镜像上传到私有仓库中

创建私有仓库和上传镜像操作请参考:https://zhuanlan.zhihu.com/p/78543733

3. Chaos Mesh的使用

3.1 搭建GreatDB分布式集群

在上一章2.2.4 中cluster-setup目录下执行以下命令块去搭建测试集群:

./cluster-setup  \
-clustername=c0 \
-namespace=test \
-enable-monitor=true \
-mysql-image=mysql:5.7 \
-mysql-replica=3 \
-mysql-auth=1 \
-mysql-normal=1 \
-mysql-global=1 \
-mysql-partition=1 \
-zookeeper-repository=zookeeper \
-zookeeper-tag=3.5.5 \
-zookeeper-replica=3 \
-greatdb-repository=greatdb/greatdb \
-greatdb-tag=tag202110 \
-greatdb-replica=3 \
-greatdb-serviceHost=172.16.70.249

输出信息:

liuxinle@liuxinle-OptiPlex-5060:~/k8s/cluster-setup$ ./cluster-setup \
> -clustername=c0 \
> -namespace=test \
> -enable-monitor=true \
> -mysql-image=mysql:5.7 \
> -mysql-replica=3 \
> -mysql-auth=1 \
> -mysql-normal=1 \
> -mysql-global=1 \
> -mysql-partition=1 \
> -zookeeper-repository=zookeeper \
> -zookeeper-tag=3.5.5 \
> -zookeeper-replica=3 \
> -greatdb-repository=greatdb/greatdb \
> -greatdb-tag=tag202110 \
> -greatdb-replica=3 \
> -greatdb-serviceHost=172.16.70.249
INFO[2021-10-14T10:41:52+08:00] SetUp the cluster ...                         NameSpace=test
INFO[2021-10-14T10:41:52+08:00] create namespace ...                         
INFO[2021-10-14T10:41:57+08:00] copy helm chart templates ...                
INFO[2021-10-14T10:41:57+08:00] setup ...                                     Component=MySQL
INFO[2021-10-14T10:41:57+08:00] exec helm install and update greatdb-cfg.yaml ... 
INFO[2021-10-14T10:42:00+08:00] waiting mysql pods running ...               
INFO[2021-10-14T10:44:27+08:00] setup ...                                     Component=Zookeeper
INFO[2021-10-14T10:44:28+08:00] waiting zookeeper pods running ...           
INFO[2021-10-14T10:46:59+08:00] update greatdb-cfg.yaml                      
INFO[2021-10-14T10:46:59+08:00] setup ...                                     Component=greatdb
INFO[2021-10-14T10:47:00+08:00] waiting greatdb pods running ...             
INFO[2021-10-14T10:47:21+08:00] waiting cluster running ...                  
INFO[2021-10-14T10:47:27+08:00] waiting prometheus server running...         
INFO[2021-10-14T10:47:27+08:00] Dump Cluster Info                            
INFO[2021-10-14T10:47:27+08:00] SetUp success.                                ClusterName=c0 NameSpace=test

看到c0-zookeeper-initzk-7hbfs的状态是Completed,其他pod的状态为Running,表示集群搭建成功。

3.2 在GreatDB分布式集群中使用Chaos Mesh做混沌测试

Chaos Mesh在kubernetes环境支持注入的故障类型包括:模拟Pod故障、模拟网络故障、模拟压力场景等,这里我们以模拟Pod故障中的pod-kill为例。

将实验配置写入到文件中 pod-kill.yaml,内容示例如下:

apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos   # 要注入的故障类型
metadata:
  name: pod-failure-example
  namespace: test   # 测试集群pod所在的namespace
spec:
  action: pod-kill   # 要注入的具体故障类型
  mode: all    # 指定实验的运行方式,all(表示选出所有符合条件的 Pod)
  duration: '30s'    # 指定实验的持续时间 
  selector: 
    labelSelectors:
      "app.kubernetes.io/component": "greatdb"    # 指定注入故障目标pod的标签,通过kubectl describe pod c0-greatdb-1 -n test 命令返回结果中Labels后的内容得到

创建故障实验,命令如下:

kubectl create -n test -f pod-kill.yaml

创建完故障实验之后,执行命令 kubectl get pod -n test -o wide 结果如下:

NAME                                    READY   STATUS              RESTARTS   AGE     IP             NODE                     NOMINATED NODE   READINESS GATES
c0-auth0-mysql-0                        2/2     Running             0          14m     10.244.87.18   liuxinle-optiplex-5060   <none>           <none>
c0-auth0-mysql-1                        2/2     Running             0          14m     10.244.87.54   liuxinle-optiplex-5060   <none>           <none>
c0-auth0-mysql-2                        2/2     Running             0          13m     10.244.87.57   liuxinle-optiplex-5060   <none>           <none>
c0-greatdb-0                            0/2     ContainerCreating   0          2s      <none>         liuxinle-optiplex-5060   <none>           <none>
c0-greatdb-1                            0/2     ContainerCreating   0          2s      <none>         liuxinle-optiplex-5060   <none>           <none>
c0-glob0-mysql-0                        2/2     Running             0          14m     10.244.87.51   liuxinle-optiplex-5060   <none>           <none>
c0-glob0-mysql-1                        2/2     Running             0          14m     10.244.87.41   liuxinle-optiplex-5060   <none>           <none>
c0-glob0-mysql-2                        2/2     Running             0          13m     10.244.87.60   liuxinle-optiplex-5060   <none>           <none>
c0-nor0-mysql-0                         2/2     Running             0          14m     10.244.87.29   liuxinle-optiplex-5060   <none>           <none>
c0-nor0-mysql-1                         2/2     Running             0          14m     10.244.87.4    liuxinle-optiplex-5060   <none>           <none>
c0-nor0-mysql-2                         2/2     Running             0          13m     10.244.87.25   liuxinle-optiplex-5060   <none>           <none>
c0-par0-mysql-0                         2/2     Running             0          14m     10.244.87.55   liuxinle-optiplex-5060   <none>           <none>
c0-par0-mysql-1                         2/2     Running             0          14m     10.244.87.13   liuxinle-optiplex-5060   <none>           <none>
c0-par0-mysql-2                         2/2     Running             0          13m     10.244.87.21   liuxinle-optiplex-5060   <none>           <none>
c0-prometheus-server-6697649b76-fkvh9   2/2     Running             0          9m24s   10.244.87.37   liuxinle-optiplex-5060   <none>           <none>
c0-zookeeper-0                          1/1     Running             1          12m     10.244.87.44   liuxinle-optiplex-5060   <none>           <none>
c0-zookeeper-1                          1/1     Running             0          11m     10.244.87.30   liuxinle-optiplex-5060   <none>           <none>
c0-zookeeper-2                          1/1     Running             0          10m     10.244.87.49   liuxinle-optiplex-5060   <none>           <none>
c0-zookeeper-initzk-7hbfs               0/1     Completed           0          12m     10.244.87.17   liuxinle-optiplex-5060   <none>           <none>

4. 在argo中编排测试流程

Argo 是一个开源的容器本地工作流引擎,用于在Kubernetes上完成工作,可以将多步骤工作流建模为一系列任务,完成测试流程编排。

我们使用argo定义一个测试任务,基本的测试流程是固定的,如下所示:

file

测试流程的step1是部署测试集群,接着开启两个并行任务,step2跑测试用例,模拟业务场景,step3同时使用Chaos Mesh注入故障,step2的测试用例执行结束之后,step4终止故障注入,最后step5清理集群环境。

4.1 用argo编排一个混沌测试工作流(以flashback测试用例为例)

1)修改 cluster-setup.yaml 中的image信息,改成步骤2.2 准备测试需要的镜像中自己传上去的集群部署/清理镜像名和tag

2)修改 testsuite-flashback.yaml 中的image信息,改成步骤2.2 准备测试需要的镜像中自己传上去的测试用例镜像名和tag

3)将集群部署、测试用例和工具模板的yaml文件全部使用 kubectl apply -n argo -f xxx.yaml 命令创建资源 (这些文件定义了一些argo template,方便用户写workflow时候使用)

kubectl apply -n argo -f cluster-setup.yaml
kubectl apply -n argo -f testsuite-flashback.yaml
kubectl apply -n argo -f tools-template.yaml

4)复制一份workflow模板文件 workflow-template.yaml,将模板文件中注释提示的部分修改为自己的设置即可,然后执行以下命令创建混沌测试工作流:

kubectl apply -n argo -f workflow-template.yaml

以下是一份workflow模板文件:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: chaostest-c0-0-
  name: chaostest-c0-0
  namespace: argo
spec:
  entrypoint: test-entry #测试入口,在这里传入测试参数,填写clustername、namespace、host、greatdb镜像名和tag名等基本信息
  serviceAccountName: argo
  arguments:
    parameters:
      - name: clustername
        value: c0
      - name: namespace
        value: test
      - name: host
        value: 172.16.70.249
      - name: port
        value: 30901
      - name: password
        value: Bgview@2020
      - name: user
        value: root
      - name: run-time
        value: 10m
      - name: greatdb-repository
        value: greatdb/greatdb
      - name: greatdb-tag
        value: tag202110
      - name: nemesis
        value: kill_mysql_normal_master,kill_mysql_normal_slave,kill_mysql_partition_master,kill_mysql_partition_slave,kill_mysql_auth_master,kill_mysql_auth_slave,kill_mysql_global_master,kill_mysql_global_slave,kill_mysql_master,kill_mysql_slave,net_partition_mysql_normal,net_partition_mysql_partition,net_partition_mysql_auth,net_partition_mysql_global
      - name: mysql-partition
        value: 1
      - name: mysql-global
        value: 1
      - name: mysql-auth
        value: 1
      - name: mysql-normal
        value: 2
  templates:
    - name: test-entry
      steps:
        - - name: setup-greatdb-cluster  # step.1 集群部署. 请指定正确的参数,主要是mysql和zookeeper的镜像名、tag名
            templateRef:
              name: cluster-setup-template
              template: cluster-setup
            arguments:
              parameters:
                - name: namespace
                  value: "{{workflow.parameters.namespace}}"
                - name: clustername
                  value: "{{workflow.parameters.clustername}}"
                - name: mysql-image
                  value: mysql:5.7.34
                - name: mysql-replica
                  value: 3
                - name: mysql-auth
                  value: "{{workflow.parameters.mysql-auth}}"
                - name: mysql-normal
                  value: "{{workflow.parameters.mysql-normal}}"
                - name: mysql-partition
                  value: "{{workflow.parameters.mysql-partition}}"
                - name: mysql-global
                  value: "{{workflow.parameters.mysql-global}}"
                - name: enable-monitor
                  value: false
                - name: zookeeper-repository
                  value: zookeeper
                - name: zookeeper-tag
                  value: 3.5.5
                - name: zookeeper-replica
                  value: 3
                - name: greatdb-repository
                  value: "{{workflow.parameters.greatdb-repository}}"
                - name: greatdb-tag
                  value: "{{workflow.parameters.greatdb-tag}}"
                - name: greatdb-replica
                  value: 3
                - name: greatdb-serviceHost
                  value: "{{workflow.parameters.host}}"
                - name: greatdb-servicePort
                  value: "{{workflow.parameters.port}}"
        - - name: run-flashbacktest    # step.2 运行测试用例,请替换为你要运行的测试用例template并指定正确的参数,主要是测试使用的表个数和大小
            templateRef:
              name: flashback-test-template
              template: flashback
            arguments:
              parameters:
                - name: user
                  value: "{{workflow.parameters.user}}"
                - name: password
                  value: "{{workflow.parameters.password}}"
                - name: host
                  value: "{{workflow.parameters.host}}"
                - name: port
                  value: "{{workflow.parameters.port}}"
                - name: concurrency
                  value: 16
                - name: size
                  value: 10000
                - name: tables
                  value: 10
                - name: run-time
                  value: "{{workflow.parameters.run-time}}"
                - name: single-statement
                  value: true
                - name: manage-statement
                  value: true
          - name: invoke-chaos-for-flashabck-test    # step.3 注入故障,请指定正确的参数,这里run-time和interval分别定义了故障注入的时间和频次,因此省略掉了终止故障注入步骤
            templateRef:
              name: chaos-rto-template
              template: chaos-rto
            arguments:
              parameters:
                - name: user
                  value: "{{workflow.parameters.user}}"
                - name: host
                  value: "{{workflow.parameters.host}}"
                - name: password
                  value: "{{workflow.parameters.password}}"
                - name: port
                  value: "{{workflow.parameters.port}}"
                - name: k8s-config
                  value: /root/.kube/config
                - name: namespace
                  value: "{{workflow.parameters.namespace}}"
                - name: clustername
                  value: "{{workflow.parameters.clustername}}"
                - name: prometheus
                  value: ''
                - name: greatdb-job
                  value: greatdb-monitor-greatdb
                - name: nemesis
                  value: "{{workflow.parameters.nemesis}}"
                - name: nemesis-duration
                  value: 1m
                - name: nemesis-mode
                  value: default
                - name: wait-time
                  value: 5m
                - name: check-time
                  value: 5m
                - name: nemesis-scope
                  value: 1
                - name: nemesis-log
                  value: true
                - name: enable-monitor
                  value: false
                - name: run-time
                  value: "{{workflow.parameters.run-time}}"
                - name: interval
                  value: 1m
                - name: monitor-log
                  value: false
                - name: enable-rto
                  value: false
                - name: rto-qps
                  value: 0.1
                - name: rto-warm
                  value: 5m
                - name: rto-time
                  value: 1m
                - name: log-level
                  value: debug
        - - name: flashbacktest-output         # 输出测试用例是否通过的结果
            templateRef:
              name: tools-template
              template: output-result
            arguments:
              parameters:
                - name: info
                  value: "flashback test pass, with nemesis: {{workflow.parameters.nemesis}}"
        - - name: clean-greatdb-cluster           # step.4 清理测试集群,这里的参数和step.1的参数一致
            templateRef:
              name: cluster-setup-template
              template: cluster-setup
            arguments:
              parameters:
                - name: namespace
                  value: "{{workflow.parameters.namespace}}"
                - name: clustername
                  value: "{{workflow.parameters.clustername}}"
                - name: mysql-image
                  value: mysql:5.7
                - name: mysql-replica
                  value: 3
                - name: mysql-auth
                  value: "{{workflow.parameters.mysql-auth}}"
                - name: mysql-normal
                  value: "{{workflow.parameters.mysql-normal}}"
                - name: mysql-partition
                  value: "{{workflow.parameters.mysql-partition}}"
                - name: mysql-global
                  value: "{{workflow.parameters.mysql-global}}"
                - name: enable-monitor
                  value: false
                - name: zookeeper-repository
                  value: zookeeper
                - name: zookeeper-tag
                  value: 3.5.5
                - name: zookeeper-replica
                  value: 3
                - name: greatdb-repository
                  value: "{{workflow.parameters.greatdb-repository}}"
                - name: greatdb-tag
                  value: "{{workflow.parameters.greatdb-tag}}"
                - name: greatdb-replica
                  value: 3
                - name: greatdb-serviceHost
                  value: "{{workflow.parameters.host}}"
                - name: greatdb-servicePort
                  value: "{{workflow.parameters.port}}"
                - name: clean
                  value: true
        - - name: echo-result
            templateRef:
              name: tools-template
              template: echo
            arguments:
              parameters:
                - name: info
                  value: "{{item}}"
            withItems:
              - "{{steps.flashbacktest-output.outputs.parameters.result}}"

Enjoy GreatSQL :)

文章推荐:

GreatSQL MGR FAQ https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预 https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》 https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析 https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动 https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

Bilibili: https://space.bilibili.com/1363850082/video

微信&QQ群: 可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697 微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

Chaos Mesh 混沌工程平台介绍、安装及使用指南 Chaos Mesh 是 PingCAP 开源的云原生混沌工程平台,支持在 Kubernetes 环境中模拟各种故障场景,帮助提升系统的容错性和可恢复性。 阅读详情

相关推荐

从开源到商业:GreatSQL与GreatDB的技术演进与生态构建之路

本文深入解析了GreatSQL与GreatDB的技术演进与生态构建之路,重点对比了两者在开源与商业模式下的核心差异与适用场景。GreatSQL作为开源MySQL增强版,适合轻量级应用;GreatDB则提供企业级全栈方案,支持超大规模扩展与金融级特性。文章为技术决策者提供了详细的选型参考,助力企业实现数据库国产化替代。

weixin_28308325的博客 349

技术干货 | GreatDB新一代读写分离架构,如何炼就近乎0损耗的性能?

方法2:对于LD_LIBRARY_PATH:可以把非系统目录下的动态库添加软链接到系统库,或在/etc/ld.so.conf.d/ 下添加greatdb.conf文件,并添加非系统库路径,一般是/path/to/greatdb/bin/../lib/private, 可以通过ldd bin/greatdbd查看。1、当greatdb_ha_mgr_read_vip_floating_type=TO_PRIMARY时,实例B的读浮动IP将不受影响,因为它当前就是故障后集群的primary主节点;

GreatDB的博客 1004

解读 | GreatDB如何进行数据分布?

另外,GreatDB的分片在计算节点上,相对业内采用“元数据管理节点”或者“K-VALUES”更新表的元数据分片信息,其优势在于能将数据相对均匀地分散在后端存储节点上,更易发挥分布式数据库多点多实例计算的性能。如网站商品的标签表、类别表。目的是优化分布式的下推和后端存储数据的内部计算,减少跨节点的数据交互和分布式事务开销,提升SQL的查询效率和性能。为了提升分布式表跨节点关联查询的性能,而创建的业务配置表,静态表,或极少更新的表,不建议大表使用全局表,其副本冗余较多,磁盘空间占用较大大,更新性能代价大。..

GreatDB的博客 813

一文看懂混沌网格(Chaos Mesh)工作原理

Chaos Mesh是一个可在Kubernetes环境中编排混沌实验的云原生混沌工程平台。它允许你通过模拟网络故障、文件系统故障和Pod故障等问题来测试系统的恢复能力。每次混沌实验后,可以通过查看日志来了解测试结果。

m0_46700908的博客 3154

混沌工程之Chaos Mesh(一)

Chaos Mesh是什么?它是一个云原生的混沌测试平台,它提供在 Kubernetes 平台上进行混沌测试的能力,最近在逛github的时候看见了混沌测试技术,自己本身也是一名测试工作者,好奇中就研究了一下混沌工程相关知识。 我个人习惯学习新知识首先要知道它的工作原理,那么 接下来我们首先看一下Chaos Mesh 的工作原理 1.Controller-manager 目前 controller-manager 可以分为两部分,一部分 controllers 用...

wfw123123的博客 628

当LightGBM推理遇上GPU:3种替代方案性能对比(含ONNX实战代码)

本文针对LightGBM官方不支持GPU推理的性能瓶颈,深度评测了RAPIDS cuML、ONNX Runtime GPU和Triton Inference Server三种GPU加速推理替代方案。通过详尽的性能对比和实战代码,为高并发、低延迟的在线预测场景提供了清晰的选型指南,帮助工程师打破推理性能枷锁,实现显著的吞吐量提升。

salt9的博客 813

MySQL 数据库国产化替代方案 GreatDB:替代过程中的难点、坑及解决方案

《MySQL到GreatDB迁移的挑战与应对策略》摘要: 在国产数据库替代浪潮中,GreatDB作为MySQL替代方案面临四大核心挑战:1)SQL语法、数据类型和存储引擎的兼容性问题,如ENUM类型截断和JSON嵌套限制;2)TB级数据迁移效率低、增量同步延迟等数据迁移难题;3)监控工具、连接池等生态工具链适配不足;4)分布式架构下的性能波动与容灾策略差异。解决方案包括建立语法映射表、分层迁移策略、业务层数据校验,以及调整事务隔离级别等参数优化。实践表明,通过兼容性改造、分布式调优和运维体系重构,可实现平稳

七夜zippoe的博客 2665

fluent二维叶型仿真_Fluent案例4【自然对流】

自然对流来了!!江苏的高校好多开学了,我啥时候才能开学另外,刚才看了何同学的Mac Pro深度体验视频,我好酸/(ㄒoㄒ)/~~好想拥有一台跑仿真那种sou~sou~sou~的机器。废话不多说了,进入正题!案例题目:一个矩形空腔内有500K恒温小球,矩形空腔充斥空气,边界条件绝热,模型尺寸如下,试模拟空腔内空气流动状态做出温度变化图。(尺寸大小懒得写了,在建模部分里有)操作平台:workbench...

weixin_39724469的博客 3670

万里开源数据库GreatSQL-8.0.25-16-Linux-glibc2.28安装及问题记录

GreatSQL开源数据库是适用于金融级应用的国内自主MySQL版本。采用。

qq_26375455的博客 2908

Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程

本文主要介绍了Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程,希望能对使用Codex的同学们有所帮助。 文章目录 1. 背景 2. 实战教程

weixin_43178406的博客 6万+

目前固态激光雷达在机器人领域的应用难点汇总

固态激光雷达在机器人领域面临性能与成本的双重挑战:探测性能上,动态范围不足(60-80dB)导致高/低反射物体识别困难,近距盲区(30-50cm)与长距精度(±3cm)矛盾突出;结构上视场角与点云密度难以平衡,多雷达拼接又带来同步误差。成本方面,核心元件(SPAD/OPA芯片)良率低(<50%)、校准工序复杂,单机成本超200美元。环境适应性上,粉尘附着、振动偏移(±2°)和光衰(1万小时衰减15%)制约可靠性。

start_up_go的博客 481

项目纪实 | 版本升级操作get!GreatDB分布式升级过程详解

确认客户的C#驱动版本为MySQL 6.9.8,需升级驱动到MySQL 8.0.32,数据库中连接串可以添加 OldGuids=true,然后数据库连接正常,汉字写入正常;从日志中发现,实例启动期间进行了redo恢复。不升级C#驱动,将vscode工具升级到2013以上版本,数据库中连接串可以添加 OldGuids=true,之后数据库连接正常,汉字写入正常。在升级之前,万里数据库项目团队帮助客户在本地测试环境构造了相同的基础版本,导入部分生产数据,尽量复刻生产环境进行升级,显示测试升级正常。

GreatDB的博客 1821

【AI智能体】Docker 部署 Coze应用服务实战操作详解

Docker 部署 Coze应用服务实战操作详解

congge 4874

GreatDB 与 MySQL 的适配性对比

例如,某大型电商企业在业务高峰期,MySQL 数据库面临着巨大的并发访问压力,而引入 GreatDB 后,通过其分布式架构将数据分散到多个节点,有效分担了压力,提升了系统的响应速度。另外,某企业的一个业务系统中,存在大量的大事务处理,迁移到 GreatDB 后,由于大事务在分片节点间的同步成本较高,容易引发锁等待,导致系统性能不稳定。某电商平台在进行在线迁移时,由于 DDL 操作频繁,同步工具经常出现异常,导致增量数据同步延迟,最长延迟时间达到了数小时,期间有部分订单数据丢失,给企业造成了一定的损失。

fengtangjiang的博客 374

Autosar 下电过程-基于ETAS工具

本文介绍基于ETAS工具对应的BIP包的下电过程,仅供参考。在最后调用SBC下电时,需要理清楚SBC的休眠流程,否则可能会出现休眠又唤醒情况。后面有空会介绍9471的休眠流程。

赞的博客 811

OSG三维渲染引擎编程学习之一百:“第十一章:OSG粒子” 之 “11.1 粒子的主要模块”

OSG;三维渲染引擎编程学习;第十一章:OSG粒子;11.1 粒子的主要模块

LuckyHanMo的博客 799

【亲测免费】 Chaos Mesh安装与配置完全指南:搭建你的云原生混沌工程平台

**Chaos Mesh** 是一款由 PingCAP 开发并维护的开源混沌工程平台,专门设计用于在 Kubernetes 环境中实施故障注入。它帮助开发者和运维人员通过模拟各类异常情况来提升系统的健壮性,从而确保在真实的开发、测试及生产环境中系统的稳定性。Chaos Mesh 基于 **Apache 2.0** 许可证发布,目前是 Cloud Native Computing Foundatio...

gitblog_01215的博客 1249

ESP32-C3入门教程 蓝牙篇①——基于Blufi 的 WiFi 智能配网

文章目录一、前言二、WiFi配网方式三、快速运行四、运行效果五、ESP32-C3程序流程5.1 主程序5.2 回调函数5.3 SmartConfig线程5.4 流程图六、关键函数6.1 设置SmartConfig的协议类型6.2 启动SmartConfig6.3 停止SmartConfig七、其他八、参考 一、前言 本文基于VS Code IDE进行编程、编译、下载、运行等操作 基础知识点请查阅:ESP32-C3入门教程 基础篇①——基于VS Code构建Hello World 二、WiFi配网方式 W

7765

万里(挑一)开源GreatDB及其他介绍

万里开源不断丰富着自身的产品线,先后推出单机数据库管理系统系列产品(简称“GreatDB”)、分布式数据库管理系统系列产品(简称“GreatDB Cluster”)、安全数据库系列产品(简称“GreatDBSE”)、云数据库服务平台(简称“GreatDB RDS”)、时序数据库管理系统(简称“GreatTS”)、企业级服务器操作系统软件(简称“TLES”)等多类数据库、操作系统核心产品,万里开源全线产品兼容X86、龙芯、飞腾、鲲鹏、海光等国内外主流芯片,具有产品生态能力及广泛的市场应用前景。 万里开源单机数

weixin_42452519的博客 1602

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Fabric Carpet扩展开发教程:从零开始创建自定义功能模组

想要为Minecraft服务器添加强大自定义功能?Fabric Carpet扩展开发让你轻松实现!Fabric Carpet是一个功能强大的Minecraft技术模组,它提供了完整的扩展开发框架,让你能够创建自己的游戏规则、命令和功能。本教程将带你从零开始学习如何开发Fabric Carpet扩展模组,掌握创建自定义功能的核心技能。🚀 ## 📦 为什么选择Fabric Carpet扩展开发?

gitblog_00036的博客 794

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

国产数据库清单 - 万里开源GreatDB

GreatDB 创意信息技术股份有限公司 关键词:开源,分布式,关系型,OLTP 应用场景:国网、电信、金融、能源、政府、教育等 GreatDB基于开源社区版本衍生而来,遵循GPL开源协议。GreatDB在开源社区版本的基础上,深度优化内核,大幅提高了多处理器架构硬件环境中的性能和可扩展性。此外针对企业级应用对稳定性、高性能、高可靠等方面的要求,GreatDB提供查询优化策略和数据缓存机制,支持数据分区和海量数据管理能力,支持分布式集群架构。 针对企业级使用场景,提供图形化管理界面、系统监控工具、数据库安全

Sophiawhy的博客 2398

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Chaos Mesh 安装与使用教程

Chaos Mesh 的源代码仓库包含了多个关键组件和配置文件,以下是主要目录结构及其简介: ### `./` - `OWNERS_ALIASES`: GitHub 组织成员和审核者列表。 - `README.md`: 项目的基本信息和概述。 - `ROADMAP.md`: 项目的发展路线图。 - `SECURITY.md`: 报告安全问题的相关指南。 - 其他构建和测试相关的脚本(如 `.m

gitblog_00534的博客 663

docker安装华为gaussdb数据库

docker镜像:这里我们使用docker hub镜像下载,该镜像下载较慢,可能有时访问不同,可以使用阿里云镜像下载,阿里云镜像配置参考《

奋斗的小鸟专栏 7504

混沌工程三剑客:Chaos Mesh vs Litmus Chaos vs Gremlin,谁是系统韧性的终极守护者?

选择适合您的工具,定期进行混沌实验,可显著提升系统的弹性和可靠性,为您的云原生应用保驾护航。通过上述实战示例,希望能激发您对混沌工程的兴趣,开启您的韧性测试之旅。注释:此YAML配置了ChaosEngine,执行针对"default"命名空间中带有"app=nginx"标签的Pod的删除实验,持续时间为60秒,间隔10秒执行一次。Chaos Mesh是一款专为Kubernetes设计的混沌工程平台,支持广泛的故障注入场景,如网络延迟、分区、CPU压力等,帮助验证系统的极限承受能力。

java专栏 1176

GreatDB源码分析之表空间加密

GreatDB(或mysql)服务端支持对表内数据进行加密存储,称之为表空间(table space)加密。

louObaichu的专栏 1284
上一篇: 技术分享 | 将GreatSQL添加到系统systemd服务
下一篇: 万答#7,如何批量删数据和调整系统表空间
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值