{"id":30874461,"url":"https://github.com/altinity/cross-db-docker-compose","last_synced_at":"2026-02-15T01:01:51.959Z","repository":{"id":310612595,"uuid":"894227869","full_name":"Altinity/cross-DB-docker-compose","owner":"Altinity","description":"cross DB setup with docker-compose for Clickhouse with Clickhouse Keeper","archived":false,"fork":false,"pushed_at":"2025-08-19T06:00:32.000Z","size":33,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-08T00:48:20.426Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Altinity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-26T01:31:53.000Z","updated_at":"2025-08-28T06:44:31.000Z","dependencies_parsed_at":"2025-08-19T08:19:24.513Z","dependency_job_id":"867d8561-0eb6-4ba8-b316-0f65d22a4a8f","html_url":"https://github.com/Altinity/cross-DB-docker-compose","commit_stats":null,"previous_names":["altinity/cross-db-docker-compose"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Altinity/cross-DB-docker-compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinity%2Fcross-DB-docker-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinity%2Fcross-DB-docker-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinity%2Fcross-DB-docker-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinity%2Fcross-DB-docker-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Altinity","download_url":"https://codeload.github.com/Altinity/cross-DB-docker-compose/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinity%2Fcross-DB-docker-compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29463474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T22:42:09.113Z","status":"ssl_error","status_checked_at":"2026-02-14T22:42:05.053Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-08T00:47:51.742Z","updated_at":"2026-02-15T01:01:51.929Z","avatar_url":"https://github.com/Altinity.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# cross-DB-docker-compose\n\n# ClickHouse Multi-Region Cluster Setup with Disaster Recovery\n\nThis repository contains the configuration and instructions for setting up a multi-region ClickHouse cluster with disaster recovery capabilities using ClickHouse Keeper.\n\n## Architecture Overview\n\n### Region One (172.25.0.0/16)\n- 3 ClickHouse servers (172.25.0.12-14)\n- 3 ClickHouse keepers (172.25.0.2-4)\n\n### Region Two (172.26.0.0/16)\n- 3 ClickHouse servers (172.26.0.12-14)\n- 3 ClickHouse keepers (172.26.0.2-4)\n\n## Prerequisites\n\n- Docker and Docker Compose installed\n- Basic understanding of ClickHouse and distributed systems\n- Sufficient resources to run multiple Docker containers\n- Network connectivity between regions\n\n## Detailed Setup Steps\n\n### 0. Clear everything\n\n#### Delete containers and volumes\n\n```bash\ndocker compose -f region_one/docker-compose-clickhouse.yaml down\ndocker compose -f region_two/docker-compose-clickhouse.yaml down\ndocker compose -f region_one/docker-compose-keeper.yaml down\ndocker compose -f region_two/docker-compose-keeper.yaml down\ndocker compose -f region_two/docker-compose-keeper-fail.yaml down\ndocker compose -f region_two/docker-compose-keeper-fail-step2.yaml down\ndocker volume rm $(docker volume ls -q | grep -E '^region_one_clickhouse[0-9]+-keeper-(data|logs)$')\ndocker volume rm $(docker volume ls -q | grep -E '^region_two_clickhouse[0-9]+-keeper-(data|logs)$')\n```\n\n#### Revert configuration changes\n\n```bash\nsed -E -i 's/server_id=\"1\"\u003e(true|false)\u003c/server_id=\"1\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"2\"\u003e(true|false)\u003c/server_id=\"2\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"3\"\u003e(true|false)\u003c/server_id=\"3\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"4\"\u003e(true|false)\u003c/server_id=\"4\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"5\"\u003e(true|false)\u003c/server_id=\"5\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"6\"\u003e(true|false)\u003c/server_id=\"6\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n```\n\n### 1. Create networks\n\n```bash\n# Create the external network:\ndocker network create --subnet=172.25.0.0/16 clickhouse_network_region_one\ndocker network create --subnet=172.26.0.0/16 clickhouse_network_region_two\n```\n\n### 2. Start Keeper Services\n\nFirst, launch the Keeper services in both regions and attach them to pre-created networks:\n\n```bash\n# Region One\ndocker compose -f region_one/docker-compose-keeper.yaml up -d\n\n# Region Two\ndocker compose -f region_two/docker-compose-keeper.yaml up -d\n```\n\n### 3. Start ClickHouse Servers\n\nAfter Keeper services are up, start the ClickHouse servers:\n\n```bash\n# Region One\ndocker compose -f region_one/docker-compose-clickhouse.yaml up -d\n\n# Region Two\ndocker compose -f region_two/docker-compose-clickhouse.yaml up -d\n```\n\n### 4. Configure Cross-Region Networking\n\nConnect containers across regions:\n\n```bash\n# Connect region two containers to region one network\ndocker network connect clickhouse_network_region_one clickhouse04-keeper\ndocker network connect clickhouse_network_region_one clickhouse05-keeper\ndocker network connect clickhouse_network_region_one clickhouse06-keeper\ndocker network connect clickhouse_network_region_one clickhouse04-server\ndocker network connect clickhouse_network_region_one clickhouse05-server\ndocker network connect clickhouse_network_region_one clickhouse06-server\n\n# Connect region one containers to region two network\ndocker network connect clickhouse_network_region_two clickhouse01-keeper\ndocker network connect clickhouse_network_region_two clickhouse02-keeper\ndocker network connect clickhouse_network_region_two clickhouse03-keeper\ndocker network connect clickhouse_network_region_two clickhouse01-server\ndocker network connect clickhouse_network_region_two clickhouse02-server\ndocker network connect clickhouse_network_region_two clickhouse03-server\n```\n\n### 5. Keeper setup monitoring \n\nConstantly check the Keeper configuration and status in separate shell (shell 2):\n\n```bash\nwatch -x bash -c 'for i in {01..06}; do     echo -e \"\\nServer State for clickhouse${i}-keeper:\";     docker exec -i clickhouse${i}-keeper clickhouse-keeper-client -q mntr | grep \"zk_server_state\" ; done'\n```\n\n\n### 6. Enable ingestion of data \n\nStart inserting sample data to verify the setup in separate shell (shell 3):\n\n```bash\nwatch -x bash -c 'for i in {01..03}; do     echo -e \"\\nInsert statement for clickhouse${i}-server:\";     docker exec -i clickhouse${i}-server clickhouse-client -q \"INSERT INTO track_status SELECT rand()\" ; done'\n```\n\n## Disaster Recovery Procedures\n\n### A. Emergency Failover\n\n1. Initial Configuration Check:\n   - One Region Two keepers should start with `can_be_leader: true`\n   - Two Region Two keepers should start with `can_be_leader: false`\n\n2. Start quorum in Region Two with only one node:\n   - Restart keeper node with `--force-restore` flag\n   - Restart keeper node as normal \n\n3. Clear state for two keeper nodes in Region Two\n   - Remove content of log and data dirs for keeper node\n\n4. Connect two nodes as learners in Region Two\n   - Restart two nodes with `can_be_leader: false` configuration\n\n5. Promote two nodes in Region Two to participants\n   - For two nodes in Region Two update keeper configuration to set `can_be_leader: true` and restart node\n\n\nCurrent Keeper Configuration:\n\n```plaintext\nserver.1=172.25.0.2:9234;participant;1\nserver.2=172.25.0.3:9234;participant;1\nserver.3=172.25.0.4:9234;participant;1\nserver.4=172.26.0.2:9234;learner;1\nserver.5=172.26.0.3:9234;learner;1\nserver.6=172.26.0.4:9234;learner;1\n```\n\nTarget Keeper Configuration:\n\n```plaintext\nserver.1=172.25.0.2:9234;learner;1\nserver.2=172.25.0.3:9234;learner;1\nserver.3=172.25.0.4:9234;learner;1\nserver.4=172.26.0.2:9234;participant;1\nserver.5=172.26.0.3:9234;participant;1\nserver.6=172.26.0.4:9234;participant;1\n```\n\n\n#### 1. Stop keeper ensemble in Region One:\n\n```bash\ndocker stop clickhouse01-keeper\ndocker stop clickhouse02-keeper\ndocker stop clickhouse03-keeper\n```\n\n#### 2. Change configuration for keeper servers\n\nWe will make single node quorum cluster using keeper server 4 (or whatever you like from Region Two):\n\n```bash\nsed -E -i 's/server_id=\"1\"\u003e(true|false)\u003c/server_id=\"1\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"2\"\u003e(true|false)\u003c/server_id=\"2\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"3\"\u003e(true|false)\u003c/server_id=\"3\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"4\"\u003e(true|false)\u003c/server_id=\"4\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"5\"\u003e(true|false)\u003c/server_id=\"5\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"6\"\u003e(true|false)\u003c/server_id=\"6\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n```\n\n#### 3. Start one keeper with force restore and two nodes with empty state \n\nRestart keeper server 4 with --force-restore flag.\nRestart keeper server 5, 6 with new volumes.\n\n```bash\ndocker compose -f region_two/docker-compose-keeper-fail.yaml up -d\n```\n\n#### 4. Restart keeper as normal\n\n```bash\ndocker compose -f region_two/docker-compose-keeper-fail-step2.yaml up -d\n```\n\n#### 5. Switch ingestion to Region Two\n\nSwitch ingestion of sample data to use servers in Region Two, in separate shell (shell 3):\n\n```bash\nwatch -x bash -c 'for i in {04..06}; do     echo -e \"\\nServer State for clickhouse${i}-server:\";     docker exec -i clickhouse${i}-server clickhouse-client -q \"INSERT INTO track_status SELECT rand()\" ; done'\n```\n\n#### 6. Promote keeper 5 node to participant\n\n```bash\n### Stop CH05\ndocker stop clickhouse05-keeper\n\n### Change config for CH05\nsed -E -i 's/server_id=\"5\"\u003e(true|false)\u003c/server_id=\"5\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH05 from config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig remove \"5\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH05\ndocker start clickhouse05-keeper\n\n### Add CH05 to config back as participant\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig add \"server.5=172.26.0.3:9234;participant;1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 7. Promote keeper 6 node to participant\n\n```bash\n### Stop CH06\ndocker stop clickhouse06-keeper\n\n### Change config for CH06\nsed -E -i 's/server_id=\"6\"\u003e(true|false)\u003c/server_id=\"6\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH06 from config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig remove \"6\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH06\ndocker start clickhouse06-keeper\n\n### Add CH06 to config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig add \"server.6=172.26.0.4:9234;participant;1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n### B. Resync Region One:\n\n#### 1. Stop running keeper in Region One\n\n```bash\ndocker compose -f region_one/docker-compose-keeper.yaml down\n```\n\n#### 2. Connect network back\n\n```bash\n# Connect region two containers to region one network\ndocker network connect clickhouse_network_region_one clickhouse04-keeper\ndocker network connect clickhouse_network_region_one clickhouse05-keeper\ndocker network connect clickhouse_network_region_one clickhouse06-keeper\ndocker network connect clickhouse_network_region_one clickhouse04-server\ndocker network connect clickhouse_network_region_one clickhouse05-server\ndocker network connect clickhouse_network_region_one clickhouse06-server\n\n# Connect region one containers to region two network\ndocker network connect clickhouse_network_region_two clickhouse01-keeper\ndocker network connect clickhouse_network_region_two clickhouse02-keeper\ndocker network connect clickhouse_network_region_two clickhouse03-keeper\ndocker network connect clickhouse_network_region_two clickhouse01-server\ndocker network connect clickhouse_network_region_two clickhouse02-server\ndocker network connect clickhouse_network_region_two clickhouse03-server\n```\n\n#### 3. Clear volumes for keeper in Region One\n\n```bash\ndocker volume rm $(docker volume ls -q | grep -E '^region_one_clickhouse[0-9]+-keeper-(data|logs)$')\n```\n\n#### 4. Demote keepers in Region One to learners\n\n```bash\nsed -E -i 's/server_id=\"1\"\u003e(true|false)\u003c/server_id=\"1\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"2\"\u003e(true|false)\u003c/server_id=\"2\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\nsed -E -i 's/server_id=\"3\"\u003e(true|false)\u003c/server_id=\"3\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n```\n\n#### 5. Start keeper in Region One\n\n```bash\ndocker compose -f region_one/docker-compose-keeper.yaml up -d\n```\n\n### C. Planned Switchover\n\n1. Initial Configuration Check:\n   - All Region One keepers should start with `can_be_leader: false`\n\n2. Enable Leadership in Region One:\n   - For each node in Region One update keeper configuration to set `can_be_leader: true` and restart node\n\n3. Move leadership to Region One\n   - Execute `rqld` on one of keeper node from Region One, check that leader was changed\n\nCurrent Keeper Configuration:\n\n```plaintext\nserver.1=172.25.0.2:9234;learner;1\nserver.2=172.25.0.3:9234;learner;1\nserver.3=172.25.0.4:9234;learner;1\nserver.4=172.26.0.2:9234;participant;1\nserver.5=172.26.0.3:9234;participant;1\nserver.6=172.26.0.4:9234;participant;1\n```\n\nTarget Keeper Configuration:\n\n```plaintext\nserver.1=172.25.0.2:9234;learner;1\nserver.2=172.25.0.3:9234;participant;1\nserver.3=172.25.0.4:9234;participant;1\nserver.4=172.26.0.2:9234;learner;1\nserver.5=172.26.0.3:9234;learner;1\nserver.6=172.26.0.4:9234;learner;1\n```\n\n#### 1. Promote keeper 1 node to participant\n\n```bash\n### Stop CH01\ndocker stop clickhouse01-keeper\n\n### Change config for CH01\nsed -E -i 's/server_id=\"1\"\u003e(true|false)\u003c/server_id=\"1\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH01 from config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig remove \"1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH01\ndocker start clickhouse01-keeper\n\n### Add CH01 to config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig add \"server.1=172.25.0.2:9234;participant;1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 2. Promote keeper 2 node to participant\n\n```bash\n### Stop CH02\ndocker stop clickhouse02-keeper\n\n### Change config for CH02\nsed -E -i 's/server_id=\"2\"\u003e(true|false)\u003c/server_id=\"2\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH02 from config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig remove \"2\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH02\ndocker start clickhouse02-keeper\n\n### Add CH02 to config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig add \"server.2=172.25.0.3:9234;participant;1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 3. Promote keeper 3 node to participant\n\n```bash\n### Stop CH03\ndocker stop clickhouse03-keeper\n\n### Change config for CH03\nsed -E -i 's/server_id=\"3\"\u003e(true|false)\u003c/server_id=\"3\"\u003etrue\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH03 from config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig remove \"3\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH03\ndocker start clickhouse03-keeper\n\n### Add CH03 to config\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='reconfig add \"server.3=172.25.0.4:9234;participant;1\"'\ndocker exec -it clickhouse04-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 4. Move leader to Region One\n\n```bash\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='rqld'\n# Sent leadership request to leader.\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='mntr'\n# zk_server_state leader repeat rqld command if needed\n```\n\n#### 5. Switch ingestion to Region One\n\nSwitch ingestion of sample data to use servers in Region One, in separate shell (shell 3):\n\n```bash\nwatch -x bash -c 'for i in {01..03}; do     echo -e \"\\nServer State for clickhouse${i}-server:\";     docker exec -i clickhouse${i}-server clickhouse-client -q \"INSERT INTO track_status SELECT rand()\" ; done'\n```\n\n#### 5. Demote keeper 4 node to learner\n\n```bash\n### Stop CH04\ndocker stop clickhouse04-keeper\n\n### Change config for CH04\nsed -E -i 's/server_id=\"4\"\u003e(true|false)\u003c/server_id=\"4\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH04 from config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig remove \"4\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH04\ndocker start clickhouse04-keeper\n\n### Add CH04 to config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig add \"server.4=172.26.0.2:9234;learner;1\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 6. Demote keeper 5 node to learner\n\n```bash\n### Stop CH05\ndocker stop clickhouse05-keeper\n\n### Change config for CH05\nsed -E -i 's/server_id=\"5\"\u003e(true|false)\u003c/server_id=\"5\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH05 from config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig remove \"5\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH05\ndocker start clickhouse05-keeper\n\n### Add CH05 to config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig add \"server.5=172.26.0.3:9234;learner;1\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n\n#### 7. Demote keeper 6 node to learner\n\n```bash\n### Stop CH06\ndocker stop clickhouse06-keeper\n\n### Change config for CH06\nsed -E -i 's/server_id=\"6\"\u003e(true|false)\u003c/server_id=\"6\"\u003efalse\u003c/g' ./region_*/keeper_config/keeper_config_common.xml\n\n### Remove CH06 from config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig remove \"6\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n\n### Start CH06\ndocker start clickhouse06-keeper\n\n### Add CH06 to config\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='reconfig add \"server.6=172.26.0.4:9234;learner;1\"'\ndocker exec -it clickhouse01-keeper clickhouse-keeper-client -q='get \"/keeper/config\"'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltinity%2Fcross-db-docker-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faltinity%2Fcross-db-docker-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltinity%2Fcross-db-docker-compose/lists"}