当前位置: 首页 > news >正文

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

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

  • 一、PolarDB-X介绍
    • 1.PolarDB-X简介
    • 2.PolarDB-X特点
  • 二、检查docker版本
  • 三、检查docker配置信息
  • 四、下载PolarDB-X镜像
  • 五、部署PolarDB-X
    • 1.创建PolarDB-X容器
    • 2.检查PolarDB-X容器状态
  • 六、远程连接PolarDB-X数据库
  • 七、PolarDB-X数据库的用户管理
    • 1.创建新用户
    • 2.修改用户密码
    • 3.给用户授权
    • 4.查看数据库用户列表
    • 5.删除用户
    • 6.测试新建用户远程登录
    • 7.查看用户权限
  • 八、PolarDB-X数据库的基本操作
    • 1.查看数据库
    • 2.创建一个新数据库
    • 3.进入数据库内
    • 4.查看数据表
    • 5.新建数据表
    • 6.修改数据表名称
    • 7.向数据表插入数据
    • 8.查看数据表内容
  • 九、使用phpmyadmin连接PolarDB-X
    • 1.查看查看PolarDB-X用户
    • 2.查看用户权限
    • 3.查看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数据表

在这里插入图片描述

相关文章:

  • 为什么Mysql底层采用B+树做索引?
  • 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第三章 网络工程-原始套接字与嗅探(1)主机发现工具与包嗅探
  • 如何在Spring JDBC 中获取自动生成的 ID
  • C语言—《动态版通讯录》
  • JSP+Servlet + Tomcat实现用户登录(五)使用listener实现在线(游客)人数统计【JavaWeb、无数据库】
  • 【SpringBoot】抽取公共页面方法
  • 应急响应(个人总结,非专业
  • memcpy内存比较函数;memset内存设置函数
  • 【0基础学习mysql】之DQL-聚合函数、分组查询及排序查询
  • 【Redis】回顾下Redis基础知识点,还记得哪些?
  • redis五种数据类型内部构造
  • 基于Vue+Element UI+SSM+SpringCloud的员工管理系统
  • LeetCode刷题---二分查找巩固
  • 简单概述理解vue的MVVM模型
  • 24、Java——银行存款取款系统(对象+集合)
  • Angularjs之国际化
  • canvas绘制圆角头像
  • Django 博客开发教程 8 - 博客文章详情页
  • Git学习与使用心得(1)—— 初始化
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java深入 - 深入理解Java集合
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Linux快速复制或删除大量小文件
  • Redux 中间件分析
  • ViewService——一种保证客户端与服务端同步的方法
  • 前端自动化解决方案
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 王永庆:技术创新改变教育未来
  • 我与Jetbrains的这些年
  • 一起参Ember.js讨论、问答社区。
  • 在Unity中实现一个简单的消息管理器
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #ifdef 的技巧用法
  • (C语言)fgets与fputs函数详解
  • (python)数据结构---字典
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net Web项目创建比较不错的参考文章
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET的微型Web框架 Nancy
  • .net和php怎么连接,php和apache之间如何连接
  • @Autowired和@Resource装配
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ linux ] linux 命令英文全称及解释
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [BZOJ 3282] Tree 【LCT】