当前位置: 首页 > 科技观察

十分钟搭建分布式数据库实验环境

时间:2023-03-13 18:48:32 科技观察

划了好久,今天给大家分享一下如何用笔记本搭建分布式数据库实验环境。我们使用docker和postgresxl来完成它。亲爱的读者们,系好安全带上车,Let'sGo!!!!PostgresXL简介WhatisPostgres-XLXL的意思是:eXtensibleLattice,可扩展的晶格,是PostgreSQL应用于多机分布式数据库的一种可视化表达。Postgres-XL是一种符合ACID标准、开源、可水平扩展、多租户安全、基于PostgreSQL的数据库解决方案。Postgres-XL可以非常灵活地应对各种负载,例如:OLAP(通过MPP并行化)OLTPOLAP&OLTP操作数据存储Key-value存储,包括JSON格式不同的应用场景:支持商业智能应用(数据仓库&数据setCity),因为PGXL支持MPP(MassivelyParallelProcessing)Web2.0,数据库扩展的解决方案。对于遗留系统的数据库扩展解决方案的新应用,可以先使用PostgreSQL,然后随着数据库的增长使用PGXL进行扩容。PGXL的底层是PostgreSQL,这意味着它支持所有支持PostgresSQL类型的驱动程序,包括:JDBC、ODBC、OLEDB、Python、Ruby、perlDBI、Tcl,以及Erlang.PostgreSQL和Postgres-XL1994年,Postgre95已发布并开源。1996年,PostgreSQL继承了Postgre95并发布。2010年,Postgres-XC发布。2012年,前PGXC核心开发人员创立了StormDB,它进行了一些改进,包括针对MPP并行化的性能改进和多租户安全性。2013年,TransLattice收购了StormDB。2014年,该项目开源并命名为Postgres-XL。许多Postgres-XC和Postgres-XLPGXL的架构师和开发人员曾经在PGXC上工作,PGXL的部分代码是从PGXC移植过来的。与功能性相比,PGXL更强调稳定性、正确性和性能。PGXL添加了一些重要的性能改进,例如数据节点上的MPP和避免重新计划,这是PGXC所没有的。PGXC目前专注于OLTP服务,而PGXL更灵活,可以应用于许多不同类型的服务,比如在大数据处理领域。此外,PGXL在多租户环境中也更加安全。PGXL的社区非常开放。ArchitectureGXL有3个主要组件,分别是GTM、Coordinator(CN)和Datanode(DN)。GTM(GloableTransactionManager)负责提供事务的ACID属性;Datanode负责存储表数据,本地执行Coordinator调度的SQL任务;Coordinator负责处理来自Application的每条SQL任务,并决定执行哪个Datanode,然后将任务分配计划分发给相应的Datanode,并根据需要将收集到的结果返回给Application;我们为Docker上的PostgresXL使用一个GTM、两个CN和两个DN。结构如下图所示:docker-compose.yml配置文件如下,执行docker-composeup,启动集群版本:"3"services:db_gtm_1:environment:-PG_HOST=0.0.0.0-PG_NODE=gtm_1-PG_PORT=6666#-PG_PASSWORD=dafei1288build:.#image:z_db_gtm_1command:docker-cmd-gtmentrypoint:docker-entrypoint-gtmvolumes:-db_gtm_1:/var/lib/postgresqlnetworks:-db_ahealthcheck:测试:[“CMD”,“docker-healthcheck-gtm”]db_coord_1:端口:-“25432:5432”环境:-PG_GTM_HOST=db_gtm_1-PG_GTM_PORT=6666-PG_HOST=0.0.0.0-PG_NODE=coord_1-PG_PORT=5432#-PG_PASSWORD=dafei1288build:.#privileged:true#image:z_db_coord_1命令-cm-docker入口点:docker-entrypoint-coord卷:-db_coord_1:/var/lib/postgresqldepends_on:-db_gtm_1网络:-db_a-db_b健康检查:测试:[“CMD”,“docker-healthcheck-coord”]db_coord_2:端口:-“25433:5432”环境:-PG_GTM_HOST=db_gtm_1-PG_GTM_PORT=6666-PG_HOST=0.0.0.0-PG_NODE=coord_2-PG_PORT=5432#-PG_PASSWORD=dafei1288build:.#privileged:true#image:z_db_coord_2command:docker-cmd-coord入口点:docker-entrypoint-coord卷:-db_coord_2:/var/lib/postgresqldepends_on:-db_gtm_1网络:-db_a-db_b健康检查:测试:[“CMD”,“docker-healthcheck-coord”]db_data_1:端口:-"25434:5432"环境:-PG_GTM_HOST=db_gtm_1-PG_GTM_PORT=6666-PG_HOST=0.0.0.0-PG_NODE=data_1-PG_PORT=5432#-PG_PASSWORD=dafei1288build:.#image:z_db_data_1命令:docker-cmd-data入口点:docker-entrypoint-datadepends_on:-db_gtm_1volumes:-db_data_1:/var/lib/postgresqlnetworks:-db_ahealthcheck:test:["CMD","docker-healthcheck-data"]db_data_2:端口:-“25435:5432”环境:-PG_GTM_HOST=db_gtm_1-PG_GTM_PORT=6666-PG_HOST=0.0.0.0-PG_NODE=data_2-PG_PORT=5432#-PG_PASSWORD=dafei1288build:.#image:z_db_data_2command:docker-cmd-data入口点:docker-entrypoint-datadepends_on:-db_gtm_1卷:-db_data_2:/var/lib/postgresql网络:-db_a健康检查:测试:[“CMD”,“docker-healthcheck-data”]pgpool:#图片:smirart/pgpool:latest图片:postdock/pgpool:latestports:-"8686:8686"-"8687:5432"-"8688:9898"#environment:#-PG_PASSWORD=dafei1288volumes:-./pgpool.conf:/var/pgpool_configs/pgpool.confrestart:alwaysnetworks:-db_bvolumes:db_gtm_1:{}db_coord_1:{}db_coord_2:{}db_data_1:{}db_data_2:{}networks:db_a:internal:truedb_b:internal:true如果需要,可以打开gppool,也可以注解掉,不影响使用pgpool.conflisten_addresses='*'port=5432#pool_passwd='dafei1288'socket_dir='/tmp'pcp_listen_addresses='*'pcp_port=9898pcp_socket_dir='/tmp'listen_backlog_socket_multiplier=2onload_balance_mode=onbackend_hostname0='db_coord_1'backend_port0=5432backend_weight0=1backend_data_directory0='/data0'backend_flag0='ALWAYS_MASTER'backend_hostname1='db_coord_2'backend_port1=5432backend_weight1=1backend_data_directory1='/data1'backend_flag1='ALLOW_TO_FAILOVER'health_check_period0=0health_check_timeout0=20health_check_user0='_healthcheck'health_check_password0=''health_check_database0=''health_check_max_retries0=0health_check_retry_delay0=1connect_timeout0=10000ExperimentalResults这个实验项目是从https://github.com/tiredpixel/z.2020-10-22.postgres-xl-dockerfork出来的,因为原图已经设置为只读,有些奇怪thingswillhappenduringexecution是一个奇怪的错误,所以我整理了一下。该项目已托管在全球最大的同事网站gayhub上。网址如下:https://github.com/dafei1288/postgres-xl-docker参考列表https://blog.csdn。net/yeruby/article/details/49004329https://github.com/tiredpixel/z.2020-10-22.postgres-xl-docker

猜你喜欢