citus实战系列之二实验环境搭建

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在进入后面的话题前,我们需要先搭建一个简单的实验环境,包含1个CN和2个Worker。

citus实战系列之二实验环境搭建

在进入后面的话题前,我们需要先搭建一个简单的实验环境,包含1个CN和2个Worker。
以下步骤基于docker,仅用于实验目的,忽视了安全,性能调优等相关的配置。

前言

在进入后面的话题前,我们需要先搭建一个简单的实验环境。

搭建citus集群需要多台机器,如果仅用于功能验证而手上又没有合适机器,使用Docker搭建是个不错的选择。

以下步骤基于docker创建一个包含1个CN和2个Worker的citus环境,仅用于实验目的,忽视了安全,性能调优等相关的配置。

环境

host环境

  • CentOS 7.3
  • Docker 17.12.1-ce

guest环境

  • CentOS 7.4
  • PostgreSQL 10
  • citus 7.4

制作citus镜像

启动centos容器

docker run -it --name citus centos bash

在容器中安装citus所需软件

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm
yum install postgresql10 postgresql10-server postgresql10-contrib
yum install pgbouncer
yum install citus_10

ln -sf /usr/pgsql-10 /usr/pgsql
cat - >~postgres/.pgsql_profile <<EOF

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PATH=/usr/pgsql/bin:$PATH
export PGDATA=/pgsql/data
EOF

创建citus镜像

docker commit citus citus:7.4v1

创建citus容器

为每一个节点创建一个volume

docker volume create cituscn
docker volume create cituswk1
docker volume create cituswk2

创建专有子网

docker network create --subnet=172.18.0.0/16 citus-net

创建并运行容器

docker run --mount source=cituscn,target=/pgsql --network citus-net --ip 172.18.0.100 --name cituscn --hostname cituscn --expose 5432 -it citus:7.4v1 bash
docker run --mount source=cituswk1,target=/pgsql --network citus-net --ip 172.18.0.201 --name cituswk1 --hostname cituswk1 --expose 5432 -it citus:7.4v1 bash
docker run --mount source=cituswk2,target=/pgsql --network citus-net --ip 172.18.0.202 --name cituswk2 --hostname cituswk2 --expose 5432 -it citus:7.4v1 bash

在每个容器上,分别执行下面的命令创建数据库

mkdir /pgsql/data
chown postgres:postgres /pgsql/data
chmod 0700 /pgsql/data

su - postgres
initdb -k -E UTF8 -D /pgsql/data

echo "listen_addresses = '*'" >> /pgsql/data/postgresql.conf
echo "wal_level = logical" >> /pgsql/data/postgresql.conf
echo "shared_preload_libraries = 'citus'" >> /pgsql/data/postgresql.conf
echo "citus.replication_model = 'streaming'" >> /pgsql/data/postgresql.conf
echo "host    all             all             172.18.0.0/16            trust">> /pgsql/data/pg_hba.conf

pg_ctl start
psql -c "CREATE EXTENSION citus;"

在cituscn容器上,执行下面的命令添加worker。

psql -c "SELECT * from master_add_node('cituswk1', 5432);"
psql -c "SELECT * from master_add_node('cituswk2', 5432);"

容器detach/attach

如果要退出容器的终端(detach),可以按CTL+pq

之后需要再次交互执行命令时再attach这个容器

docker attach cituscn

容器启停

以cituscn容器为例,worker容器类似。

停止cituscn容器

docker stop cituscn

启动cituscn容器

docker start -ai cituscn

然后在容器中启动PostgreSQL

su - postgres
pg_ctl start

测试

在cituscn容器上,测试分片表

create table tb1(id int primary key, c1 int);
select create_distributed_table('tb1','id');
insert into tb1 select id,random()*1000 from generate_series(1,100)id;

执行测试SQL

postgres=# explain select * from tb1;
                                  QUERY PLAN                                  
------------------------------------------------------------------------------
 Custom Scan (Citus Real-Time)  (cost=0.00..0.00 rows=0 width=0)
   Task Count: 32
   Tasks Shown: One of 32
   ->  Task
         Node: host=cituswk1 port=5432 dbname=postgres
         ->  Seq Scan on tb1_102008 tb1  (cost=0.00..32.60 rows=2260 width=8)
(6 rows)
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7月前
|
存储 安全 Linux
TiDB安装准备工作与基础环境搭建
【2月更文挑战第28天】TiDB安装前需满足硬件(足够CPU、内存、存储)和软件(Linux,推荐CentOS 7+)要求,确保网络稳定性。配置包括设置唯一主机名,关闭防火墙和SELinux,同步NTP,创建TiDB用户和目录。下载官方安装包并验证后,解压,配置环境变量,初始化集群,启动服务并验证运行状态。稳定的环境对发挥TiDB性能至关重要。
|
虚拟化 KVM Linux
带你读《KVM实战:原理、进阶与性能调优》之二:KVM原理简介
本书兼具实战性、系统性又不乏深度的KVM虚拟化技术指南,既能让新人快速掌握KVM的基础知识,又能满足有经验的读者进阶学习的需求。本书两位作者来自于阿里云和Intel,在云计算和KVM方面有深入的研究,他们将自己的经验倾囊相授,带你全面了解KVM的各种技术细节。
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第二篇(函数)
MySQL数据库基础第二篇(函数)
|
7月前
|
编译器 开发工具 C语言
C/C++入门001-概述环境搭建与案例
C/C++入门001-概述环境搭建与案例
|
运维 Kubernetes 监控
K8S学习-当我们部署应用的时候都发生了什么?(第一篇)
第一篇笔记定的主题是“调度-当我们部署应用的时候都发生了什么?”,先从大的框架上记录一下K8S的架构与原理;对于卷、网络、configmap等组件会放在第二篇。初学者级别的学习笔记,有问题的地方大佬们及时勘误。
31340 17
K8S学习-当我们部署应用的时候都发生了什么?(第一篇)
|
JSON Java 关系型数据库
MyCat - 环境搭建 - 基础工程搭建 | 学习笔记
快速学习 MyCat - 环境搭建 - 基础工程搭建
MyCat - 环境搭建 - 基础工程搭建 | 学习笔记
|
关系型数据库 MySQL Linux
从零开始搭建MySQL主从复制架构
MySQL CentOS7 主从复制
635 0
从零开始搭建MySQL主从复制架构
|
分布式计算 Hadoop
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(1)
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)
97 0
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(1)
|
存储 分布式计算 Hadoop
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(2)
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)
127 0
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(2)
|
SQL 关系型数据库 分布式数据库
citus实战系列之一入门篇
citus是一款基于PostgreSQL的开源分布式数据库,自动继承了PostgreSQL强大的SQL支持能力和应用生态(不仅仅是客户端协议的兼容还包括服务端扩展和管理工具的完全兼容)。 和其他类似的基于PostgreSQL的分布式方案,比如GreenPlum,PostgreSQL-XL,PostgreSQL-XC相比,citus最大的不同在于citus是一个PostgreSQL扩展而不是一个独立的代码分支。
8813 0