TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
дата инженеретта

25 Aug, 15:17

Telegram'da ochish Ulashish Shikoyat qilish

Как забытый ON CLUSTER поставил меня в тупик

Я создала таблицу ReplicatedReplacingMergeTree, потом переделала на обычный ReplicatedMergeTree. Дропнула таблицы, но тупо забыла ON CLUSTER, и вот что из этого вышло

🫤 Запускаю загрузку, она падает, я чищу табличку и гружу заново. Казалось бы, проблемы больше нет? Сверяюсь по каунтам - сильно отличается. Снова перезагружаю - вообще другие каунты стали. Что происходит? Смотрю инфу по репликам:


SELECT hostName(), pid, count()
FROM clusterAllReplicas('default', schema.table)
GROUP BY hostName(), pid
ORDER BY pid, hostName();


На двух хостах сходится, на третьем сильно меньше данных и вообще нет большого куска, при этом все цифры разъезжаются с источником…

Я делаю truncate - а с третьего хоста данные вообще не удаляются. Делаю truncate sync - снова ничего не происходит. SYSTEM SYNC REPLICA schema.table - то же самое

🤔 Иишка советует заглянуть в system.distributed_ddl_queue - но там все Finished. Потом смотрю zookeeper_path:


SELECT
hostName(),
zookeeper_path,
total_replicas,
active_replicas,
last_queue_update_exception
FROM clusterAllReplicas('default', system.replicas)
WHERE database = 'schema'
AND table = 'table';


Первые 2 хоста в одной репликационной группе:

/clickhouse/tables/9e0fe594-04f6-41ad-8137-385f08c2fbe5/shard1
total_replicas = 2

А третья живет отдельно:

/clickhouse/tables/faee8477-d2a6-47c9-8cc9-8a3f44972612/shard1
total_replicas = 1

Дальше смотрю DDL на разных хостах:


SELECT hostName(), create_table_query
FROM clusterAllReplicas('default', system.tables)
WHERE database = 'schema'
AND name = 'table';


Первые две - ReplicatedReplacingMergeTree
Третья - ReplicatedMergeTree

Поверх этих таблиц еще была Distributed, а она читает табличку на основе параметра load_balancing:


SELECT value
FROM system.settings
WHERE name = 'load_balancing';


В моем случае там был random, и он постоянно возвращал данные с третьей реплики (кроме random, есть еще несколько)

А почему данных на третьей реплике было меньше? Все еще помните про самый первый процесс, который упал? Так вот он записал кусок данных, но почистить их кх уже не смог. А при следующем запуске запись пошла в другую реплику

В общем, два забытых слова привели к тотальной смеси двух миров

@data_engineerette

2.5k 0 15 14 23
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot