重磅更新|PolarDB分布式版V2.3 集中式和分布式一体化开源发布

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 深度干货解析
+关注继续查看
作者:阿里云数据库PolarDB分布式团队 七锋

image


导读1:架构简介

阿里云瑶池旗下的云原生数据库PolarDB分布式版(PolarDB for Xscale,简称PolarDB-X)采用Shared-nothing与存储分离计算架构进行设计,系统由5个核心组件组成。


image


1. 计算节点(CN, Compute Node)

计算节点是系统的入口,采用无状态设计,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务2PC协调、全局二级索引维护等,同时提供SQL 限流、三权分立等企业级特性。


2. 存储节点(DN, Data Node) 

存储节点负责数据的持久化,基于多数派Paxos 协议提供数据高可靠、强一致保障,同时通过MVCC维护分布式事务可见性。


3. 元数据服务(GMS, Global Meta Service)

元数据服务负责维护全局强一致的Table/Schema,Statistics等系统Meta信息,维护账号、权限等安全信息,同时提供全局授时服务(即TSO))。


4.日志节点(CDC, Change Data Capture)

日志节点提供完全兼容MySQL Binlog格式和协议的增量订阅能力,提供兼容MySQL Replication协议的主从复制能力。


5. 列存节点(Columnar)

列存节点负责提供列式存储数据,基于行列混存+分布式计算节点构建HTAP架构,预计24年4月份会正式开源。可参考PolarDB-X列存索引(Columnar Index)文档:


https://help.aliyun.com/zh/polardb/polardb-for-xscale/overview

开源地址:https://github.com/polardb/polardbx-sql


导读2:版本说明


梳理下PolarDB-X开源脉络:


▶︎ 2021年10月,在云栖大会上,阿里云正式对外开源了云原生分布式数据库PolarDB-X,采用全内核开源的模式,开源内容包含计算引擎、存储引擎、日志引擎、Kube等。


▶︎ 2022年1月,PolarDB-X正式发布 2.0.0 版本,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及Binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅,以及新增其他众多新特性和修复若干问题。


▶︎ 2022年3月,PolarDB-X正式发布 2.1.0 版本,包含了四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性,其中包含基于Paxos的三副本共识协议


▶︎ 2022年5月,PolarDB-X正式发布 2.1.1 版本,重点推出冷热数据新特性,可以支持业务表的数据按照数据特性分别存储在不同的存储介质上,比如将冷数据存储到Aliyun OSS对象存储上。


▶︎ 2022年10月,PolarDB-X正式发布 2.2.0 版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产ARM适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。


▶︎ 2023年3月,PolarDB-X正式发布 2.2.1 版本,在分布式数据库金融标准能力基础上,重点加强了生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性,比如:提供数据快速导入、性能测试验证、生产部署建议等。


▶︎ 2023年10月份,PolarDB-X正式发布 2.3.0 版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,可以100%兼容MySQL。同时在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。




1. 集中式与分布式


1.1 架构形态

PolarDB-X V2.3新增了标准版(集中式形态),因此后续的PolarDB-X开源形态主要分为:


image


  • PolarDB-X标准版,主打集中式架构,支持单机MySQL形态(100%兼容MySQL),基于自研分布式共识算法(X-Paxos)提供RPO=0的数据库能力。


  • PolarDB-X企业版,主打分布式架构,高度兼容MySQL生态,支持强一致分布式事务和分布式并行查询,支持分布式水平扩展,可以从最小1个节点(集中式)扩展到1024个节点(分布式),构建集中式和分布式一体化的架构能力,后续的开源版本会发布HTAP行列混存架构,支持一键构建列存副本,通过行列混合查询全面加速在线分析能力。


架构形态的特点和选型建议:


image


1.2 快速部署和体验


PolarDB-X标准版采用一主一备一日志的三节点架构,性价比高,通过多副本同步复制,确保数据的强一致性。面向具备超高并发、复杂查询及轻量分析的在线业务场景。


现在我们来快速部署一个PolarDB-X标准版集群,它仅包含1个由三副本组成的DN节点。执行以下命令创建一个这样的标准版集群:


▶︎ 基于k8s部署标准版


echo "apiVersion: polardbx.aliyun.com/v1
kind: XStore
metadata:
  name: quick-start
spec:
  config:
    controller:
      RPCProtocolVersion: 1
  topology:
    nodeSets:
    - name: cand
      replicas: 2
      role: Candidate
      template:
        spec:
          image: polardbx/polardbx-engine-2.0:latest
          resources:
            limits:
              cpu: "2"
              memory: 4Gi
    - name: log
      replicas: 1
      role: Voter
      template:
        spec:
          image: polardbx/polardbx-engine-2.0:latest
          resources:
            limits:
              cpu: "1"
              memory: 2Gi" | kubectl apply -f -


你将看到以下输出:

xstore.polardbx.aliyun.com/quick-start created


使用如下命令查看创建状态:

$ kubectl get xstore -wNAME          LEADER                    READY   PHASE     DISK      VERSION   AGEquick-start   quick-start-4dbh-cand-0   3/3     Running   3.6 GiB   8.0.18    11m


注意:生产环境部署时建议内存>=8GB,

参考:https://doc.polardbx.com/deployment/topics/environment-requirement.html

▶︎ 基于pxd部署标准版



version: v1
type: polardbx
cluster:
  name: pxc_test
  dn:
    image: polardbx/polardbx-engine-2.0:latest
    replica: 1
    nodes:
      - host_group: [172.16.201.11,172.16.201.11,172.16.201.11]
    resources:
      mem_limit: 2G


说明:replica数据节点数目,标准版中默认设置为1,分布式形态可以设置为多个。


执行如下命令,即可在集群内一键部署PolarDB-X:


pxd create -file polardbx.yaml


部署完成后,pxd会输出PolarDB-X集群的连接方式,通过MySQL命令行即可登录PolarDB-X数据库进行测试。


image


1.3 性能测试


PolarDB-X标准版集中式实例,基于Lizard分布式事务系统优化事务并发能力,采用生产级部署和参数(开启双1+多副本复制),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升。

详细性能测试情况如下:


image


▶︎ 场景1:sysbench,表16张,单张表大小1千万


image


▶︎ 场景2:TPC-C,1000仓


image


▶︎ 场景3:对比开源MySQL 8.0.34(采用相同的主机硬件部署)


image



更多性能数据可参考文档:


1)Sysbench 测试报告 · PolarDB-X产品文档https://doc.polardbx.com/performance/centralized/sysbench-performance.html


2)TPC-C 测试报告 · PolarDB-X产品文档

https://doc.polardbx.com/performance/centralized/tpcc-performance.html



2. MySQL兼容性


PolarDB-X V2.3版本在分布式形态上,继续完善MySQL兼容性,降低用户从MySQL迁移的使用门槛。


2.1 分区表

MySQL的分区表功能是指将一个大表拆分成多个较小的逻辑单元,每个单元被称为分区,并将这些分区存储在不同的物理存储介质上,这种分区机制非常贴合分布式的分区理念。因此,PolarDB-X的分区表全面兼容并扩展MySQL分区表的语法,将MySQL的多个分区扩展到了分布式节点中,基于分布式的多节点进一步提高了并发能力。PolarDB-X分区表支持常见的分区方式:

1. 范围分区(Range、Range Columns):根据列的范围将表的数据进行分区。可以根据某个列的数值范围(如日期、价格等)将数据分布到不同的分区中。

2. 列表分区(List、List Columns):根据列的值列表将表的数据进行分区。可以将特定列的值匹配到预定义的分区列表中,每个分区可以包含多个值。

3. 哈希分区(Hash、Key):根据列值的哈希结果将表的数据进行分区。哈希分区将表的数据按照哈希算法将数据均匀地分布到不同的分区中。

PolarDB-X除了可以对表进行一级分区外,还可以对分区进行二级分区。二级分区是在一级分区的基础上再次将数据进行细分,一级分区与二级分区是完全正交的关系,支持使用任意两种分区策略进行组合,组合分区的数目支持达36种。同时在PolarDB-X中,二级分区可以分为模板化分区非模板化分区两种方式。


1. 模板化分区(Template-based Partitioning)


模板化分区是指通过定义一个模板来创建二级分区。模板包含了一系列分区规则,用于指定每个一级分区的子分区数量和名称。使用模板化分区,可以快速创建具有相同结构的二级分区。以下是一个示例,展示了使用模板化分区创建二级分区的语法:


CREATE TABLE partitioned_table (
    ...
)
PARTITION BY RANGE COLUMNS(column1)
SUBPARTITION BY HASH(column2)
SUBPARTITIONS 4
SUBPARTITION TEMPLATE (
    SUBPARTITION s1,
    SUBPARTITION s2,
    SUBPARTITION s3,
    SUBPARTITION s4
) (
    PARTITION p1 VALUES LESS THAN (100),
    PARTITION p2 VALUES LESS THAN (200),
    ...
);


在上述示例中,通过SUBPARTITION TEMPLATE关键字定义了一个二级分区模板,指定了每个一级分区的四个子分区名称。然后在每个一级分区中,通过指定SUBPARTITION TEMPLATE将使用相同的子分区模板。

2. 非模板化分区(Non-template-based Partitioning)

非模板化分区是指手动为每个一级分区指定子分区的数量和名称。使用非模板化分区,可以更加灵活地为每个一级分区创建不同数量和名称的子分区。以下是一个示例,展示了使用非模板化分区创建二级分区的语法:

CREATE TABLE partitioned_table (
    ...
)
PARTITION BY RANGE COLUMNS(column1)
SUBPARTITION BY HASH(column2)
SUBPARTITIONS (
    PARTITION p1 VALUES LESS THAN (100) (
        SUBPARTITION s1,
        SUBPARTITION s2,
        SUBPARTITION s3,
        SUBPARTITION s4
    ),
    PARTITION p2 VALUES LESS THAN (200) (
        SUBPARTITION s5,
        SUBPARTITION s6,
        SUBPARTITION s7,
        SUBPARTITION s8
    ),
    ...
);


在上述示例中,通过直接为每个一级分区指定了不同数量和名称的子分区,而不使用模板来定义。


PolarDB-X模板化分区和非模板化分区都有其优势和用途。模板化分区适合创建具有相同结构的分区表,可以减少创建表的工作量。非模板化分区则更加灵活,可以根据具体需求为每个一级分区创建不同的子分区数量和名称。传统的分库分表定义方式是一个特例的模板化二级分区的定义(每个分库下有相同的分表数量),PolarDB-X新版本支持了完整的分布式分区表能力,可以结合非模板化分区更好的优化分布式热点。


结合一个实际的例子来体验下非模板分区的好处:交易订单管理系统,整个平台服务不同品牌的众多卖家,不同卖家之间订单量差异比较大,会出现比较明显的大卖家的情况,大卖家愿意成为VIP付费会员期望独享资源,小卖家使用免费共享资源。


参考文档:典型场景 | PolarDB分布式版如何支撑SaaS多租户


/* 一级分区 LIST COLUMNS + 二级分区HASH分区 的非模板化组合分区 */
CREATE TABLE t_order /* 订单表 */ (
 id bigint not null auto_increment, 
 sellerId bigint not null, 
 buyerId bigint not null,
 primary key(id)
) 
PARTITION BY LIST(sellerId/*卖家ID*/) /*  */
SUBPARTITION BY HASH(sellerId) 
(
  PARTITION pa VALUES IN (108,109) 
    SUBPARTITIONS 1 /* 一级分区 pa 之下有1个哈希分区, 保存大品牌 a 所有卖家数据 */,
  PARTITION pb VALUES IN (208,209) 
    SUBPARTITIONS 1 /* 一级分区 pb 之下有1个哈希分区, 保存大品牌 b 所有卖家数据 */,
  PARTITION pc VALUES IN (308,309,310)
    SUBPARTITIONS 2 /* 一级分区 pc 之下有2个哈希分区, 保存大品牌 c 所有卖家数据 */,
  PARTITION pDefault VALUES IN (DEFAULT)
    SUBPARTITIONS 64 /* 一级分区 pDefault 之下有64个哈希分区, 众多小品牌的卖家数据 */
);

基于上述的LIST+HASH非模板化二级分区,它能给应用直接带来的的效果是:


  • 对于大品牌的卖家(相当一个租户),可以将数据路由到单独的一组分区;


  • 对于中小品牌,可以将数据按哈希算法自动均衡到多个不同分区,从而避免访问热点,比如default默认分配64个分区,支持所有的免费用户。而付费用户结合规模量,二级分区为1或者2即可,基于非模板化分区实现精细化数据分布。


2.2 生成列


MySQL的生成列功能是指在创建表时,使用虚拟列或计算列的方式将一个或多个列添加到表中,可以在创建表时使用GENERATED ALWAYS AS关键字来定义。通过使用表达式,可以使用各种数学、逻辑和字符串函数来计算列的值。生成列可以是虚拟列(VIRTUAL)或存储列(STORED)。PolarDB-X新版本支持MySQL生成列的相关语法和功能。


参考文档:PolarDB-X 生成列语法 https://help.aliyun.com/zh/polardb/polardb-for-xscale/generate-columns


col_name data_type [GENERATED ALWAYS] AS (expr)
  [VIRTUAL | STORED | LOGICAL] [NOT NULL | NULL]
  [UNIQUE [KEY]] [[PRIMARY] KEY]
  [COMMENT 'string']


生成列有以下三种类型:


  • VITRUAL:生成列的值不存储,每次读取该列时由存储节点DN计算,不占用存储空间。说明如果不指定关键字,默认创建VITRUAL类型的生成列。


  • STORED:生成列的值在数据行插入或更新时由存储节点DN计算,并将结果储存下来,需要占用存储空间。


  • LOGICAL:与STORED类型相似,生成列的值在数据行插入或更新时计算,区别是生成列的值在计算节点CN计算,随后以普通列的形式存储到DN中。该类型的生成列可以作为分区键使用。


生成列的例子:


CREATE TABLE `t1` (
    `a` int(11) NOT NULL,
    `b` int(11) GENERATED ALWAYS AS (`a` + 1),
    PRIMARY KEY (`a`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4  partition by hash(`a`)


插入数据:


# INSERT INTO t1(a) VALUES (1);
# SELECT * FROM t1;
+---+---+
| a | b |
+---+---+
| 1 | 2 |
+---+---+


PolarDB-X兼容MySQL的生成列+索引的相关特性,支持在生成列上进一步创建索引来加速查询能力,比如针对json类型的内部key查询。在生成列上创建索引的例子:


> CREATE TABLE t4 (
    a BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    c JSON,
    g INT AS (c->"$.id") VIRTUAL
) DBPARTITION BY HASH(a);

> CREATE INDEX `i` ON `t4`(`g`);

> INSERT INTO t4 (c) VALUES
  ('{"id": "1", "name": "Fred"}'),
  ('{"id": "2", "name": "Wilma"}'),
  ('{"id": "3", "name": "Barney"}'),
  ('{"id": "4", "name": "Betty"}');

// 可以使用虚拟列g的索引进行裁剪
> EXPLAIN EXECUTE SELECT c->>"$.name" AS name FROM t4 WHERE g > 2;
+------+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+
| id   | select_type | table | partitions | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+------+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+
| 1    | SIMPLE      | t4    | NULL       | range | i             | i    | 5       | NULL | 1    | 100      | Using where |
+------+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------------+


MySQL 8.0版本开始提供了表达式索引的功能,引入了函数索引(Functional Indexes)的概念,允许在索引中使用表达式。通过在CREATE INDEX语句中指定表达式,可以创建索引以优化特定的查询,底层内部的实现原始是采用了虚拟列。PolarDB-X在V2.3版本中兼容了MySQL 8.0的函数索引,支持创建索引时如果PolarDB-X发现某个索引项不是表中的一个列,而是一个表达式,此时PolarDB-X会自动将该表达式转换为VIRTUAL类型的生成列并添加到表中。所有索引项处理完成后,PolarDB-X会按照用户定义继续创建索引,索引定义中的表达式索引项将被替换成对应的生成列。此函数索引功能为实验特性,需要打开实验室参数开关后才能使用。


SET GLOBAL ENABLE_CREATE_EXPRESSION_INDEX=TRUE;


使用例子:


1. 创建表t7
> CREATE TABLE t7 (
    a BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    c varchar(32)
) DBPARTITION BY HASH(a);

2. 创建表达式索引i
> CREATE INDEX `i` ON `t7`(substr(`c`, 2));

3. 完成表达式索引创建之后的表结构如下:
> SHOW FULL CREATE TABLE `t7`

# 返回结果
CREATE TABLE `t7` (
    `a` bigint(20) NOT NULL AUTO_INCREMENT BY GROUP,
    `c` varchar(32) DEFAULT NULL,
    `i$0` varchar(32) GENERATED ALWAYS AS (substr(`c`, 2)) VIRTUAL,
    PRIMARY KEY (`a`),
    KEY `i` (`i$0`)
) ENGINE = InnoDB dbpartition by hash(`a`)

# 由于索引i的索引项是表达式,因此在表中添加了一个生成列i$0,这个生成列的表达式就索引项的表达式。最后创建索引i,其中索引项被替换成为对应的生成列。
# 创建完表达式索引之后,以下SQL就可以利用表达式索引加快查询速度:

> EXPLAIN EXECUTE SELECT * FROM t7 WHERE substr(`c`, 2) = '11';
+------+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
| id   | select_type | table | partitions | type | possible_keys | key  | key_len | ref   | rows | filtered | Extra |
+------+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
| 1    | SIMPLE      | t7    | NULL       | ref  | i             | i    | 131     | const | 1    | 100      | NULL  |
+------+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
2.3 外键


2.3 外键


MySQL中的外键(Foreign Key)是一种关系型数据库的特性,用于建立表与表之间的关联关系。外键定义了一个表中的列与另一个表中的列之间的引用关系。通过外键,可以实现数据完整性和一致性的约束,以及数据之间的参照关系。PolarDB-X在V2.3版本中兼容了MySQL外键的常见使用,让你可以在分布式数据库中,通过外键对跨(库)表的数据建立连接,实现等同于单机数据库外键的数据一致性保证。同时,由于在分布式分区表上检查和维护外键约束的实现比单机数据库更为复杂,不合理的外键使用可能会导致较大的性能开销,导致系统吞吐显著下降。因此,外键功能会作为一项长期的实验性功能,建议你在对数据进行充分验证后谨慎使用。


SET GLOBAL ENABLE_FOREIGN_KEY = TRUE;


外键相关语法:


-- 创建外键
[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (col_name, ...)
    REFERENCES tbl_name (col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT


-- 删除外键
ALTER TABLE tbl_name DROP FOREIGN KEY CONSTRAINT_symbol;


外键例子:

> CREATE TABLE a (
  id INT PRIMARY KEY
);
> INSERT INTO a VALUES (1);

> CREATE TABLE b (
  id INT PRIMARY KEY,
  a_id INT,
  FOREIGN KEY fk(`a_id`) REFERENCES a(`id`) ON DELETE CASCADE
);
> INSERT INTO b VALUES (1,1);

> CREATE TABLE c (
  b_id INT,
  FOREIGN KEY fk(`b_id`) REFERENCES b(`id`) ON DELETE RESTRICT
);
> INSERT INTO c VALUES (1);

# 删除表A的记录,会级联检查A/B/C表的外键约束
> DELETE FROM a WHERE id = 1;
> ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`c`, CONSTRAINT `c_ibfk_1` FOREIGN KEY (`b_id`) REFERENCES `b` (`id`) ON DELETE RESTRICT)



3. frodo流量回放工具


frodo是阿里云数据库团队开源的PolarDB-X配套工具,主打数据库流量回放,主要用于解决数据库交付过程中的业务兼容性和性能评估的工作。


开源地址:https://github.com/polardb/polardbx-tools/tree/frodo-v1.0.0/frodo


大致工作原理:

image


主要包含两部分功能:


1. SQL日志采集,目前支持开源MySQL、以及Aliyun RDS的SQL审计,支持将这部分SQL日志解析为frodo内部的数据格式并持久化。


2. SQL流量回放,基于真实的业务SQL在PolarDB-X中进行流量回放,通过引入多线程技术可以实现倍数回放来模拟峰值流量的压测。


操作示例:


步骤一:从自建MySQL采集general日志


java -jar mysqlsniffer.jar --capture-method=general_log --replay-to=file --port=3306 --username=root --password=xxx --concurrency=32 --time=60 --out=logs/out.json


步骤二:将流量回放到PolarDB-X


java -Xms=2G -Xmx=4G -jar frodo.jar --file=/root/out.json --source-db=mysql --replay-to=polarx --port=3306 --host=172.25.132.163 --username=root --password=123456 --concurrency=64 --time=1000 --task=task1 --schema-map=test:test1,test2 --log-level=info --rate-factor=1 --database=test


流量回放完成后会生成一份数据报告,记录SQL运行报告吗,比如:SQL模版、成功率、RT等。


image



4. 开源生态完善


4.1 Canal开源适配


Canal是一款阿里云数据库团队开源的一款用于MySQL binlog实时数据同步和订阅的中间件。它基于数据库的日志解析技术,可以捕获数据库的增量变更,并将变更数据同步到其他系统,实现数据的实时同步和订阅。



image


Canal近期发布V1.1.7版本,支持PolarDB-X全局单流binlog、以及多流binlog的解析。


参考文档:https://github.com/alibaba/canal/issues/4657


image


如上图所示,PolarDB-X提供了两种形态的binlog日志消费订阅能力,且两种形态可同时共存。


▶︎ 单流形态:即单流binlog日志(也称为Global binlog),将所有DN的binlog归并到同一个全局队列,提供了保证事务完整性和有序性的日志流,可以提供更高强度的数据一致性保证。例如在转账场景下,基于Global binlog接入PolarDB-X的下游MySQL,可以在任何时刻查询到一致的余额。


▶︎ 多流形态:即多流binlog日志(也称为Binlog-X),并不是将所有DN的binlog归并到一个全局队列,而是将数据进行Hash打散并分发到不同的日志流,在一定程度上牺牲了事务的完整性,但大大提升了扩展性,可以解决大规模集群下单流binlog存在的单点瓶颈问题。


Canal开源地址:https://github.com/alibaba/canal


4.2 KubeBlocks开源适配


KubeBlocks是⼀个基于Kubernetes打造的、可⽀持多引擎统⼀接⼊和运维的开源项目,它可以帮助用户以BYOC(Bring-your-own-cloud)的方式轻松构建容器化和声明式的关系型、NoSQL、流计算以及向量型数据库服务。KubeBlocks专为生产目的而设计,为大多数场景提供可靠、高性能、可观察和经济高效的数据基础设施。KubeBlocks名字灵感来自乐高积木,寓意在 Kubernetes上可以像搭积木一样愉快地构建自己的数据基础设施。KubeBlocks在即将发布的0.7版本里,会原生支持PolarDB-X:


image


基于KubeBlocks快速安装PolarDB-X,只需要3步:


1. 创建集群模板

helm install polardbx ./deploy/polardbx


2. 创建PolarDB-X实例

方法一:
kbcli cluster create pxc --cluster-definition polardbx

方法二:
helm install polardbx-cluster ./deploy/polardbx-cluster


3. 端口转发 & 登录数据库

kubectl port-forward svc/pxc-cn 3306:3306
mysql -h127.0.0.1 -upolardbx_root


4.3 CloudCanal数据迁移同步适配


CloudCanal是一款数据同步、迁移工具,帮助企业构建高质量数据管道,具备实时高效、精确互联、稳定可拓展、一站式、混合部署、复杂数据转换等优点。通过CloudCanal,用户可以快速、可靠地实现云原生环境下的数据库数据同步。同时,CloudCanal相比于Canal开源支持了更多的数据源接入、以及全量+结构迁移的能力,更好的满足用户一站式数据同步和迁移的功能。CloudCanal近期发布的版本,完整支持PolarDB-X作为源端和目标端的场景。


参考文档:https://www.clougence.com/cc-doc/releaseNote/rn-cloudcanal-2-7-0-0


image


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6天前
|
存储 关系型数据库 MySQL
[重磅更新]PolarDB-X V2.3 集中式和分布式一体化开源发布
2023年云栖大会,PolarDB-X 正式发布 2.3.0版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,可以100%兼容MySQL。同时在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。
25 0
|
28天前
|
存储 关系型数据库 MySQL
PolarDB-X V2.3 集中式和分布式一体化开源发布
2023年云栖大会,PolarDB-X 正式发布 2.3.0版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,可以100%兼容MySQL。同时在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。
|
29天前
|
消息中间件 存储 分布式计算
雀氏牛逼,Alibaba分布式微服务成长手册,GitHub开源,限时免费
分布式架构和微服务架构是互联网架构的核心。我们通常理解分布式架构都是从常用的分布式软件开始的,比如Spring Cloud、Kafka、 ZooKeeper、 HBase等,这些都离不开分布式网络架构、分布式存储和分布式计算等基础理论。
|
1月前
|
存储 分布式计算 NoSQL
惊 GitHub首次开源!在国内外都被称为分布式理论+实践的巅峰之作
如果你是一位软件行业从业者,尤其是从事服务器端或者后台系统软件开发,相信近年来一定被层出不穷的商业名词所包围:NoSQL、Big Data、Web-scale、Sharding.Eventual consistency、ACID、CAP理论、云服务、MapReduce和Real-time等,所有这些其实都围绕着如何构建高效存储与数据处理这一核心主题。过去十年,在数据库领域与分布式系统方面涌现了许多引人瞩目的进展,由此深刻地影响了如何构建上层应用系统。
值得一看!阿里又杀疯了开源内部“M9”级别全彩版分布式实战笔记
系统架构大致经历了单体应用架构→垂直应用架构→分布式架构→SOA架构→微服务架构的演变
|
1月前
|
缓存 算法 架构师
阿里P9架构师终于把毕生心血而成的分布式高可用算法笔记开源了
说在前面的话 分布式系统无处不在。 一台计算机内部多个互联的处理器组成了一个分布式系统,它们通过“一致性缓存”算法使每个处理器核心看到相同的数据。近三十年来,随着互联网的发展,越来越多的互联网后台系统采用计算机集群的方式来应对海量请求和数据的需求,这个计算机集群也是分布式系统。 为了简化分布式系统的开发,出现了很多为开发者提供分布式框架的开源项目,例如Apache基金会旗下的ZooKeeper项目就是一个应用广泛的分布式框架。 同时,国内也有很多关于如何使用这些分布式框架来搭建应用的书籍,它们极大地推动了分布式系统在国内的应用。我们不仅要知道如何使用这些现成的分布式框架来搭建应用,而且应
|
4月前
|
存储 运维 Kubernetes
分布式开源存储架构Ceph概述
k8s的后端存储中ceph应用较为广泛,当前的存储市场仍然是由一些行业巨头垄断,但在开源市场还是有一些不错的分布式存储,其中包括了Ceph、Swift、sheepdog、glusterfs等
588 0
|
4月前
|
消息中间件 弹性计算 数据可视化
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
|
4月前
|
前端开发 安全 Java
分布式实战 | 第一篇 :ELK在开源全栈项目【有来商城】的应用,不仅仅是分布式日志收集(二)
分布式实战 | 第一篇 :ELK在开源全栈项目【有来商城】的应用,不仅仅是分布式日志收集(二)
|
开发工具 git C++
Git - 简介之集中式vs分布式
Git - 简介之集中式vs分布式
59 0
Git - 简介之集中式vs分布式
相关产品
云原生数据库 PolarDB
推荐文章
更多