Shared-data
Этот раздел содержит ответы на часто задаваемые вопросы о shared-data cluster.
Почему не удаётся создать таблицу?
Проверьте журнал BE (be.INFO), чтобы определить точную причину. Распространённые причины включают:
- Неправильно настроенные параметры объектного хранилища (например,
aws_s3_path,endpoint,authentication). - Нестабильность или исключения сервиса объектного хранилища.
Другие ошибки:
Сообщение об ошибке: "Error 1064 (HY000): Unexpected exception: Failed to create shards. INVALID_ARGUMENT: shard info cannot be empty"
Причина: Это часто происходит, когда используется автоматический вывод bucket, в то время как нет живых узлов CN или BE. Эта проблема исправлена в v1.5.2.
Почему создание таблицы занимает слишком много времени?
Чрезмерное количество bucket (особенно в партиционированных таблицах) заставляет Selena создавать много tablet. Системе необходимо записать файл метаданных tablet для каждого tablet в объе ктное хранилище, высокая задержка которого может значительно увеличить общее время создания. Вы можете рассмотреть:
- Уменьшение количества bucket.
- Увеличение размера пула потоков создания tablet через конфигурацию BE
create_tablet_worker_count. - Проверку и устранение высокой задержки записи в объектное хранилище.
Почему данные в объектном хранилище не очищаются после удаления таблицы?
Selena поддерживает два режима DROP TABLE:
DROP TABLE xxx: перемещает метаданные таблицы в корзину FE (данные не удаляются).DROP TABLE xxx FORCE: немедленно удаляет метаданные таблицы и данные.
Если очистка не удаётся, проверьте:
- Использовался ли
DROP TABLE xxx FORCE. - Не установлены ли слишком высо кие параметры хранения в корзине. Параметры включают:
- Конфигурация FE
catalog_trash_expire_second - Конфигурация BE
trash_file_expire_time_sec
- Конфигурация FE
- Журналы FE на наличие ошибок удаления (например, таймаут RPC). Увеличьте таймаут RPC при необходимости.
Как найти путь хранения данных таблицы в объектном хранилище?
Выполните следующую команду, чтобы получить путь хранения.
SHOW PROC '/dbs/<database_name>';
Пример:
mysql> SHOW PROC '/dbs/load_benchmark';
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
| TableId | TableName | IndexNum | PartitionColumnName | PartitionNum | State | Type | LastConsistencyCheckTime | ReplicaCount | PartitionType | StoragePath |
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
| 17152 | store_sales | 1 | NULL | 1 | NORMAL | CLOUD_NATIVE | NULL | 64 | UNPARTITIONED | s3://selena-common/xxxxxxxxx-xxxx_load_benchmark-1699408425544/5ce4ee2c-98ba-470c-afb3-8d0bf4795e48/17152 |
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.18 sec)
В версиях ранее v1.5.2 данные таблицы рассредоточены в одном каталоге.
Начиная с версии v1.5.2 данные организованы по партициям. Та же команда отображает корневой путь таблицы, который теперь содержит подкаталоги, названные по Partition ID, и каждый каталог партиции содержит подкаталоги data/ (файлы данных сегментов) и meta/ (файлы метаданных tablet).
Почему запросы в shared-data cluster медленные?
Распространённые причины включают:
- Промах кэша.
- Недостаточная компактификация, в ызывающая слишком много мелких файлов сегментов и, следовательно, чрезмерный I/O.
- Плохой параллелизм (например, слишком мало tablet).
- Неправильные настройки
datacache.partition_duration, вызывающие сбои кэширования.
Сначала вам нужно проанализировать Query Profile, чтобы определить основную причину.
Промах кэша
В shared-data cluster данные хранятся удалённо, поэтому Data Cache имеет решающее значение. Если запросы становятся неожиданно медленными, проверьте метрики Query Profile, такие как CompressedBytesReadRemote и IOTimeRemote.
Промахи кэша могут быть вызваны:
- Отключением Data Cache при создании таблицы.
- Недостаточным локальным пространством для кэша.
- Миграцией tablet из-за эластичного масштабирования.
- Неправильными настройками
datacache.partition_duration, предотвращающими кэширование.