AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 292523
Accepted
Kokizzu
Kokizzu
Asked: 2021-06-01 00:52:35 +0800 CST2021-06-01 00:52:35 +0800 CST 2021-06-01 00:52:35 +0800 CST

没有分片的 Clickhouse 复制

  • 772

如何在没有分片的情况下在 ClickHouse 中进行复制(例如 1 个主设备,2 个从设备)?从示例中我可以看到总是有分片:

  • 高度演示
  • Docker 撰写示例
  • 程序员求博客
  • QuidQuid 博客
  • 致命错误博客
  • zergon321 关于 dev.to 的文章
  • Clickhouse 问题 2161但没有示例
replication clickhouse
  • 1 1 个回答
  • 730 Views

1 个回答

  • Voted
  1. Best Answer
    Kokizzu
    2021-06-01T01:17:02+08:002021-06-01T01:17:02+08:00

    没关系,在其他Altinity 博客文章中找到它

    只需创建一个docker-compose.yml文件:

    version: '3.3'
    services:
      # from rongfengliang/clickhouse-docker-compose
      # from https://github.com/abraithwaite/clickhouse-replication-example/blob/master/docker-compose.yaml
      # from http://blog.quidquid.fr/2020/06/clickhouse-multi-master-replication/
      # from https://altinity.com/blog/2017/6/5/clickhouse-data-distribution
      ch1:
        image: yandex/clickhouse-server
        restart: always
        volumes:
          - ./config.xml:/etc/clickhouse-server/config.d/local.xml
          - ./macro1.xml:/etc/clickhouse-server/config.d/macros.xml
          - ./data/1:/var/lib/clickhouse    
        ports: 
          - '18123:8123'
          - '19000:9000'
          - '19009:9009'
        ulimits:
          nproc: 65536
          nofile:
            soft: 252144
            hard: 252144
      ch2:
        image: yandex/clickhouse-server
        restart: always
        volumes:
          - ./config.xml:/etc/clickhouse-server/config.d/local.xml
          - ./macro2.xml:/etc/clickhouse-server/config.d/macros.xml
          - ./data/2:/var/lib/clickhouse
        ports: 
          - '28123:8123'
          - '29000:9000'
          - '29009:9009'
        ulimits:
          nproc: 65536
          nofile:
            soft: 252144
            hard: 252144
      ch3:
        image: yandex/clickhouse-server
        restart: always
        volumes:
          - ./config.xml:/etc/clickhouse-server/config.d/local.xml
          - ./macro3.xml:/etc/clickhouse-server/config.d/macros.xml
          - ./data/3:/var/lib/clickhouse
        ports: 
          - '38123:8123'
          - '39000:9000'
          - '39009:9009'
        ulimits:
          nproc: 65536
          nofile:
            soft: 252144
            hard: 252144
      zookeeper:
        image: zookeeper
    

    和config.xml文件:

    <yandex>
        <remote_servers>
            <replicated>
                <shard>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>ch1</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>ch2</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>ch3</host>
                        <port>9000</port>
                    </replica>
                </shard>
            </replicated>
        </remote_servers>
        <zookeeper>
            <node>
                <host>zookeeper</host>
                <port>2181</port>
            </node>
        </zookeeper>
    </yandex>
    

    和 3macroX.xml其中X=1,2,3(将 chX 替换为ch1、ch2或ch3):

    <yandex>
        <macros replace="replace">
            <cluster>cluster1</cluster>
            <replica>chX</replica>
        </macros>
    </yandex>
    

    然后创建一个data目录并启动docker-compose up.

    您可以在其中一个集群上使用此命令创建表clickhouse-client --port 19000:

    SELECT * FROM system.clusters;
    CREATE DATABASE db1 ON CLUSTER replicated;
    SHOW DATABASES;
    USE db1;
    
    CREATE TABLE IF NOT EXISTS db1.sbr2 ON CLUSTER replicated
    ( seller_id UInt64
    , recap_date Date
    , last_updated_at DateTime 
    , products_view UInt64 
    , visitor_count UInt32 
    , chat_count UInt32 
    , trx_count UInt32
    , trx_sum UInt64 
    ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/{cluster}/tables/sbr2', 
    '{replica}')
    PARTITION BY modulo( seller_id, 1000 )
    ORDER BY (seller_id, recap_date); 
    
    INSERT INTO db1.sbr2
    (seller_id, recap_date, visitor_count, products_view, chat_count, trx_count, trx_sum, last_updated_at)
    VALUES (1,'2021-05-31',1,2,3,4,5,NOW());
    

    然后尝试连接到其他副本并选择以​​前插入的行:clickhouse-client --port 29000

    SELECT * FROM db1.sbr2;
    
    ┌─seller_id─┬─recap_date─┬─────last_updated_at─┬─products_view─┬─visitor_count─┬─chat_count─┬─trx_count─┬─trx_sum─┐
    │         1 │ 2021-05-31 │ 2021-05-31 09:43:30 │             2 │             1 │          3 │         4 │       5 │
    └───────────┴────────────┴─────────────────────┴───────────────┴───────────────┴────────────┴───────────┴─────────┘
    ↘ Progress: 1.00 rows, 42.00 B (132.02 rows/s., 5.54 KB/s.)  99%
    1 rows in set. Elapsed: 0.008 sec.
    
    • 1

相关问题

  • 如何阻止 MySQL 从站将更改复制到“mysql”数据库?

  • 在同一台物理服务器上运行复制是不明智的吗?

  • 有没有办法以小于 1 秒的分辨率测量 MySQL 中的复制滞后?

  • 运行时间偏移延迟复制的最佳实践

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve