Clickhouse ошибка DB::Exception: Replica already exists..

Дата: 19.03.2019 Автор Admin

При моргании сети или при длительной недоступности одной из реплик clickhouse — возможно ее повреждение.

В таком случае сервер может не стартовать службу clickhouse и при попытке пересоздания реплицируемой таблицы вы получите ошибку 253 Replica already exists..

Чтобы исправить эту ошибку и восстановить реплику clickhouse выполните следующее:

Cкопируйте sql файл с доступной живой реплики по пути

/var/lib/clickhouse/metadata/default

где default для БД, файл будет иметь название имя_таблицы.sql

Этот фай поместите на сломанную реплику, по аналогичному пути.

Далее выполните следующие команды:

chown clickhouse:clickhouse <table_name>.sql
chmod 0640 <table_name>.sql

Инициируйте процесс принудительного восстановления

sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data

Запустите службу clickhouse

service clickhouse-server start

Если при создании реплицируемой таблицы вы все еще получаете данную ошибку — удалите данные о таблице из zookeeper

Для этого откройте консоль zookeeper (расположена в директории с установленным zookeeper)

zkCli.sh

При возникновении ошибки Replica  already exists.. обычно указан путь в zookeeper, в котором хранится информация о реплике, например:

/clickhouse/tables/tx/replicas/srv1

Выполните команду на удаление этого пути в запущенной ранее консоли zookeeper

 rmr /clickhouse/tables/tx/replicas/srv1

Теперь выполните команду

get /clickhouse/tables/tx/replicas/srv1

Если вы получили ошибку Node does not exist — значит информация о реплике удалена.

Теперь перезапустите clickhouse

service clickhouse-server restart

После этих действий вы сможете создать реплицируемую таблицу, данные автоматически синхронизируются с доступных реплик.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *