polardbxoperatordocs/ops/lifecycle/1-create-readonly-pxc.md

2.8 KiB

只读实例创建

对于PolarDB-X Operator 1.3.0及以上的版本,您可以创建只读实例,并指定其所属的 PolarDB-X 主实例。

只读实例的存储节点通过增加 Learner 副本的方式来保证物理资源隔离,提供了读写分离的特性,同时能够基于全局时钟来确保只读查询的强一致性。

您可以通过以下两种方法创建只读实例:

1. 为已有主实例添加只读实例

创建独立的 PolarDBXCluster yaml 配置文件,令spec.readonlytrue,并指定spec.primaryCluster为其所属的主实例名,示例如下:

# readonly.yaml
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: pxc-readonly
spec:
  readonly: true
  primaryCluster: pxc-master # 主实例名
  topology:
    nodes:
      cn:
        replicas: 1
        template:
          resources:
            limits:
              cpu: 2
              memory: 4Gi
          image: polardbx/polardbx-sql:latest
          imagePullPolicy: Always
      dn:
        # DN replicas 会自动与主实例的 DN replicas 保持同步,无需显式指定
        template:
          resources:
            limits:
              cpu: 2
              memory: 4Gi
          image: polardbx/polardbx-engine:latest
          imagePullPolicy: IfNotPresent
  config:
    cn:
      static:
        AttendHtap: true # 是否支持 HTAP

2. 同时创建主实例与只读实例

在创建主实例时,在主实例 PolarDBXCluster yaml 配置文件的spec.initReadonly字段中添加附属只读实例的信息。这种方法创建出的只读实例规格和参数与主实例相同,示例如下:

# pxc-with-readonly.yaml
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: pxc
spec:
  initReadonly:
    - cnReplicas: 1 # 只读实例 CN 数
      name: readonly # 只读实例后缀名,本例中将生成名为 "pxc-readonly" 的只读实例,不填则会生成随机后缀
      extraParams:
        AttendHtap: "true" # 是否支持 HTAP
  topology:
    nodes:
      cn:
        replicas: 1
        template:
          resources:
            limits:
              cpu: 2
              memory: 4Gi
          image: polardbx/polardbx-sql:latest
          imagePullPolicy: Always
      dn:
        replicas: 1
        template:
          resources:
            limits:
              cpu: 2
              memory: 4Gi
          image: polardbx/polardbx-engine:latest
          imagePullPolicy: IfNotPresent

3. 连接只读实例

您可以直接连接只读实例,连接方法同主实例,见连接 PolarDB-X 数据库,对应的集群实例名称填入只读实例名即可。