猿创征文|国产数据库实战使用docker部署polardb-x云原生分布式开源数据库(代码片段)

江湖有缘 江湖有缘     2022-12-04     250

关键词:

猿创征文 | 【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库

一、PolarDB-X介绍

1.PolarDB-X简介

1.PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。
2.PolarDB-X采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。

2.PolarDB-X特点

  • 水平扩展

PolarDB-X 采用 Shared-nothing 架构进行设计,支持多种 Hash 和 Range 数据拆分算法,通过隐式主键拆分和数据分片动态调度,实现系统的透明水平扩展。

  • 分布式事务

PolarDB-X 采用 MVCC + TSO 方案及 2PC 协议实现分布式事务。事务满足 ACID 特性,支持 RC/RR 隔离级别,并通过一阶段提交、只读事务、异步提交等优化实现事务的高性能。

  • 混合负载

PolarDB-X 通过原生 MPP 能力实现对分析型查询的支持,通过 CPU quota 约束、内存池化、存储资源分离等实现了 OLTP 与 OLAP 流量的强隔离。

  • 企业级

PolarDB-X 为企业场景设计了诸多内核能力,例如 SQL 限流、SQL Advisor、TDE、三权分立、Flashback Query 等。

  • 云原生

PolarDB-X 在阿里云上有多年的云原生实践,支持通过 K8S Operator 管理集群资源,支持公有云、混合云、专有云等多种形态进行部署,并支持国产化操作系统和芯片。

  • 高可用

通过多数派 Paxos 协议实现数据强一致,支持两地三中心、三地五副本等多种容灾方式,同时通过 Table Group、Geo-locality 等提高系统可用性。

  • 兼容 MySQL 系统及生态

PolarDB-X 的目标是完全兼容 MySQL ,目前兼容的内容包括 MySQL 协议、MySQL 大部分语法、Collation、事务隔离级别、Binlog 等。

二、检查docker版本

[root@node ~]# docker  version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:05:12 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:03:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

三、检查docker配置信息

[root@node ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  compose: Docker Compose (Docker Inc., v2.6.0)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 18
  Running: 16
  Paused: 0
  Stopped: 2
 Images: 70
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc version: v1.1.2-0-ga916309
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-957.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 7.62GiB
 Name: node
 ID: EIOB:6IAO:NQTR:AJBA:O6KS:SNWP:JEDK:GXBG:55FP:IOSK:WRH3:QOAU
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://sp4mg57h.mirror.aliyuncs.com/
 Live Restore Enabled: false

四、下载PolarDB-X镜像

[root@node ~]# docker pull polardbx/polardb-x
Using default tag: latest
latest: Pulling from polardbx/polardb-x
2d473b07cdd5: Pull complete 
764f8dbcccbf: Pull complete 
802af989135a: Pull complete 
9e171b6eee06: Pull complete 
dc37b9fd8a16: Pull complete 
Digest: sha256:7a29520f6a77b7adcb0ead5ac62c0134172ffb072acc9b6e5daca81652e14aec
Status: Downloaded newer image for polardbx/polardb-x:latest

五、部署PolarDB-X

1.创建PolarDB-X容器

快速启动一个具有一个 CN、一个 DN 和一个 CDC 进程的 PolarDB-X

[root@node ~]# docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x
1b94143ae90b8d52f71b1a5bbf870d4567cfe162ff60afb0cbc0edcdae4c64ed

2.检查PolarDB-X容器状态

[root@node ~]# docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED        STATUS        PORTS                                                                                                                             NAMES
1b94143ae90b   polardbx/polardb-x                    "/bin/sh -c /home/ad…"   10 hours ago   Up 10 hours   0.0.0.0:8527->8527/tcp, :::8527->8527/tcp                                                                                         some-polardb-x

六、远程连接PolarDB-X数据库

[root@k8s-node01 ~]# mysql -h192.168.3.167 -P8527 -upolardbx_root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MySQL connection id is 9
Server version: 5.6.29 Tddl Server (ALIBABA)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

MySQL [(none)]> 

七、PolarDB-X数据库的用户管理

1.创建新用户

MySQL [(none)]>  CREATE USER 'user'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.23 sec)

2.修改用户密码

MySQL [(none)]> SET PASSWORD FOR 'user'@'%'  = PASSWORD('654321');
Query OK, 0 rows affected (0.05 sec)


3.给用户授权

MySQL [(none)]> grant all on *.* to 'user'@'%' with grant option;
Query OK, 0 rows affected (0.09 sec)

MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.03 sec)


4.查看数据库用户列表

MySQL [(none)]> select user,host from mysql.user;
+---------------+------+
| user          | host |
+---------------+------+
| polardbx_root | %    |
| root          | %    |
| user          | %    |
+---------------+------+
3 rows in set (0.01 sec)

5.删除用户

DROP USER 'user'@'%';

6.测试新建用户远程登录

[root@k8s-node01 ~]# mysql -h192.168.3.167 -P8527 -uuser -p654321
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MySQL connection id is 12
Server version: 5.6.29 Tddl Server (ALIBABA)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| DATABASE           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

MySQL [(none)]> 

7.查看用户权限

MySQL [(none)]> show grants for user@'%';
+-------------------------------------------------------------+
| GRANTS FOR 'USER'@'%'                                       |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.10 sec)

八、PolarDB-X数据库的基本操作

1.查看数据库

MySQL [(none)]> show databases;
+--------------------+
| DATABASE           |
+--------------------+
| information_schema |
| phpmyadmin         |
+--------------------+
2 rows in set (0.00 sec)


2.创建一个新数据库

MySQL [(none)]> create database testdata;
Query OK, 1 row affected (0.21 sec)

MySQL [(none)]> show databases;
+--------------------+
| DATABASE           |
+--------------------+
| information_schema |
| phpmyadmin         |
| testdata           |
+--------------------+
3 rows in set (0.00 sec)


3.进入数据库内

MySQL [(none)]> use testdata;
Database changed



4.查看数据表

MySQL [(none)]> use testdata;
Database changed
MySQL [testdata]> show tables;
Empty set (0.02 sec)

5.新建数据表

MySQL [testdata]> CREATE TABLE IF NOT EXISTS `student`(
    ->    `id` INT UNSIGNED AUTO_INCREMENT,
    ->    `name` VARCHAR(100) NOT NULL,
    ->    `gender` TINYINT NOT NULL,
    ->    `age` INT UNSIGNED,
    ->    `class` INT UNSIGNED,
    ->    `score` INT UNSIGNED,
    ->    PRIMARY KEY ( `id` )
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.54 sec)

MySQL [testdata]> show tables;
+--------------------+
| TABLES_IN_TESTDATA |
+--------------------+
| student            |
+--------------------+
1 row in set (0.00 sec)

6.修改数据表名称

alter table student rename aaa;

7.向数据表插入数据

MySQL [testdata]> insert into student ( name, gender, age, class,  score ) values ( "李萌萌", "0", "17", "3", "98" );
Query OK, 1 row affected (0.01 sec)

8.查看数据表内容

MySQL [testdata]> select * from student;
+------+-----------+--------+-----+-------+-------+
| id   | name      | gender | age | class | score |
+------+-----------+--------+-----+-------+-------+
|    1 | 李萌萌    |      0 |  17 |     3 |    98 |
|    2 | 王强      |      1 |  18 |     1 |    88 |
|    3 | 李萌萌    |      0 |  17 |     3 |    98 |
|    4 | 王强      |      1 |  18 |     1 |    88 |
|    5 | 李一      |      1 |  16 |     2 |    88 |
|    6 | 陈飞      |      1 |  18 |     4 |    90 |
|    7 | 张静      |      0 |  16 |     1 |    92 |
+------+-----------+--------+-----+-------+-------+
7 rows in set (0.01 sec)

九、使用phpmyadmin连接PolarDB-X

1.查看查看PolarDB-X用户

2.查看用户权限

3.查看PolarDB-X数据表

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|使用docker部署opengauss国产数据库(代码片段)

猿创征文|使用Docker部署openGauss国产数据库一、openGauss介绍1.openGauss简介2.openGauss产品定位3.支持的架构和操作系统版本二、检查宿主机环境1.检查系统版本2.检查Docker状态三、下载openGauss镜像1.进入docker官方镜像仓库2.openGauss镜像介... 查看详情

猿创征文|国产数据库之使用pxd在docker环境下部署polardb-x集群(代码片段)

猿创征文|国产数据库之使用PXD在Docker环境下部署PolarDB-X集群一、PolarDB-X介绍1.PolarDB-X简介2.PolarDB-X特点二、PolarDB-X的产品架构1.产品架构图2.PolarDB-X架构介绍三、环境规划四、Docker安装1.安装系统工具2.配置docker的yum仓库源3.安装doc... 查看详情

猿创征文|国产数据实战之docker部署mywebsql数据库管理工具(代码片段)

猿创征文|国产数据实战之docker部署MyWebSQL数据库管理工具一、MyWebSQL介绍1.MyWebSQL简介2.MyWebSQL特点二、检查本地环境1.检查docker状态2.检查docker-compose版本三、下载MyWebSQL镜像四、部署MyWebSQL工具1.编辑docker-compose.yaml2.创建MyWebSQL容器... 查看详情

猿创征文|国产数据库实战之tidb数据库快速入门(代码片段)

猿创征文|国产数据库实战之TiDB数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装TiUP工具2.声明全局环境变量3.快速部署TiDB集群三、连接TiDB数据库1.新开一个session以访问T... 查看详情

猿创征文|国产数据库之opengauss的单机主备部署及快速入门(代码片段)

猿创征文|国产数据库之openGauss的单机主备部署及快速入门一、openGauss介绍1.openGauss简介2.openGauss特点3.openGauss的逻辑架构图二、环境检查1.节点规划2.操作系统版本三、安装前环境配置1.检查admin普通用户2.给安装目录授权3.配置/etc/... 查看详情

猿创征文|国产数据库之在k8s环境下部署radondbmysql集群(代码片段)

猿创征文|国产数据库之在k8s环境下部署RadonDBMySQL集群一、RadonDBMySQL介绍1.RadonDBMySQL简介2.RadonDBMySQL的应用场景3.RadonDBMySQL核心功能4.RadonDBMySQL架构图二、检查本地k8s环境1.检查k8s节点状态2.检查helm版本三、添加helm仓库1.添加helm仓库... 查看详情

猿创征文|云原生|24docker运行数据库实战之mongodb(代码片段)

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅✒️个人主页:小鹏linux💊个人社区:小鹏linux(个人社区)欢迎您的加入!目录... 查看详情

猿创征文|云原生之docker使用docker部署flare个人导航网页(代码片段)

猿创征文|【云原生之Docker】使用Docker部署Flare个人导航网页一、卷首语二、Flare介绍1.Flare介绍2.Flare的硬件配置要求3.Flare的特点三、检查本地docker环境1.检查docker服务状态2.检查docker配置信息3.开启IPv4forwarding四、安装docker-com... 查看详情

猿创征文|云原生|25docker运行数据库实战之redis(代码片段)

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅✒️个人主页:小鹏linux💊个人社区:小鹏linux(个人社区)欢迎您的加入!为大... 查看详情

猿创征文|使用springboot整合国产数据库连接池druid(代码片段)

1前言Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。说到数据库连接池大家可能首先会想到C3P0,DBCP等相关。今天给大家介绍的是由国产(阿里)的一种连接池技术࿱... 查看详情

猿创征文|分布式国产数据库tidb从入门到实战(代码片段)

写在前面本文讲解的是目前欢迎程度最高分布式国产数据库TiDB,详细讲解了TiDB的由来、架构、SQL基本操作、SpringBoot整合TiDB等内容。目录写在前面一、概述二、与MySQL兼容性对比三、安装使用四、SQL基本操作4.1、库操作4.2、... 查看详情

猿创征文|国产数据库tidb架构特性(代码片段)

前言TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、... 查看详情

猿创征文|国产数据库新的飞跃(代码片段)

一、数据库类型首先,我们来说一下当前数据库的类型吧,当前数据库生态可以大致分类三类:一是传统商业数据库,以Oracle为代表,其在40余年时间里所创造的数据库帝国已拥有了极其完善的生态;二是开源数据库,以MySQL、Po... 查看详情

猿创征文|破世界纪录的国产数据库-oceanbase

...;不足之处请大家指正。猿创征文|破世界纪录的国产数据库-OceanBase本文关键字:VLDB、国产、数据库、OceanBase、金融文章目录猿创征文|破世界纪录的国产数据库-OceanBase一、7.07亿tpmC1.TPMC2.VLDB二、OceanBase1.数据库介绍2... 查看详情

猿创征文|云原生领域之容器日常使用工具推荐(代码片段)

猿创征文|云原生领域之容器日常使用工具推荐一、云原生介绍1.云原生定义2.容器技术简介3.云原生相关工具导航二、Docker1.Docker介绍①Docker简介②Docker特点③Docker的三个基本概念④Docker的架构图2.Docker的优势3.Docker的使用效果①... 查看详情