Часто задаваемые вопросы

1. Установка

Проблема 1

Симптомы

Ошибка после установки пакета yum install matrixdb: cpio read error

Причина

Среда пользователя — Windows с VMware Workstation 15. Установочный пакет был скачан на Windows и перетащен в виртуальную машину, что привело к обрезке файлов.

Решение

Используйте механизм общих папок VMware для передачи файлов. См. https://blog.csdn.net/highning/article/details/106000215.

Проблема 2

Симптомы

Ошибка при создании расширения MARS:

could not load library "/usr/local/matrixdb-4.0.0.enterprise/lib/postgresql/mars.so": /lib64/libarrow.so.300: undefined symbol: LZ4F_resetDecompressionContext

Причина

YMatrix 4 зависит от версии Arrow 300, которая требует LZ4 версии >= 1.8.

Решение

Обновите библиотеку LZ4.

Проблема 3

Симптомы

Инициализация завершается ошибкой:

could not connect to server: No route to host
 Is the server running on host "192.168.88.203" and accepting
 TCP/IP connections on port 40000?
 (seg0 192.168.88.203:40000)

Причина

Файрволл iptables был остановлен, но не отключен на хосте 203. После перезагрузки файрволл автоматически запустился снова. Неоткрытые необходимые порты препятствуют межузловой связи, что приводит к бесконечной блокировке инициализации.

Решение

Очистите правила файрволла на хосте 203, остановите службу iptables и отключите её, чтобы предотвратить автоматический запуск после перезагрузки.

Проблема 4

Симптомы

Сообщение об ошибке:

error: could not access directory \"/data/mxdata_20221104084534/master/mxseg-1\": Permission denied

Лог инициализации mxui:

"error": "execute: do execute: run: initialize_database: 7 errors occurred: * 
error execute \"/usr/local/matrixdb-4.5.0.community/bin/initdb\"\n\n STDOUT:
The files belonging to this database system will be owned by user \"mxadmin\".
This user must also own the server process.

  The database cluster will be initialized with locale \"en_US.utf8\".\n The default text search configuration will be set to \"english\".

  Data page checksums are enabled.

   STDERR:
      initdb: error: could not access directory \"/data/mxdata_20221104084534/master/mxseg-1\": Permission denied\n * error execute \"/usr/local/matrixdb-4.5.0.community/bin/initdb\"
   STDOUT:
      The files belonging to this database system will be owned by user \"mxadmin\".
      This user must also own the server process.\n\n The database cluster will be initialized with locale \"en_US.utf8\".
      The default text search configuration will be set to \"english\".
      Data page checksums are enabled.

Причина

Директория данных имеет ограничивающие права — только владелец имеет права на чтение, запись и выполнение (rwx). Пользователи группы и остальные не имеют доступа.

[root@mdw ~]# ll /
total 36
lrwxrwxrwx.   1 root    root       7 Jun  1 19:38 bin -> usr/bin
dr-xr-xr-x.   5 root    root    4096 Oct 26 18:28 boot
drwxr-xr-x   20 root    root    3200 Oct 26 14:45 dev
drwxr-xr-x.  80 root    root    8192 Oct 28 13:53 etc
drwxr-xr-x.   5 root    root    8192 Oct 26 18:17 export
drwxr-xr-x.   5 root    root     105 Oct 26 18:28 home
drwx------.   5 root    root     105 Oct 26 18:28 data

Решение

Настройте права доступа к директории данных:

sudo chmod 755 /data

Проблема 5

Симптомы

Setuptools сообщает об неподдерживаемом аргументе:

unknown distribution option: "long_description_content_type"

Причина

Устаревшая версия setuptools.

Решение

sudo python3 -m pip install --upgrade setuptools

Проблема 6

Симптомы

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

Причина

Повторная установка требует корректной очистки.

Решение

  1. Удалите файл ~/.matrixdb.env для пользователя mxadmin.
  2. Удалите /etc/matrixdb/cluster.conf.
  3. Перезапустите службу supervisor:
    • systemctl restart matrixdb.supervisor.service
  4. Обновите страницу установщика: http://:8240/installer

Проблема 7

Симптомы

Порт SSH по умолчанию не равен 22.

Решение

Добавьте конфигурацию хоста, порта и пользователя в файл .ssh/config:

Host mdw
   Hostname mdw
   Port 29022
   User mxadmin
Host sdw1
   Hostname sdw1
   Port 29022
   User mxadmin

2. Сеть

Проблема 1

Симптомы

Стресс-тест JDBC с 50 параллельными соединениями через пул соединений Druid от Alibaba. Время отклика остаётся стабильным в течение первых 2,5 минут, затем возрастает. Логи мастера показывают:

ERROR "failed to acquire resources on one or more segments", "could not connect to server: Connection timed out"

Ошибок или паник в логах сегментов нет.

Причина

Распределённые базы данных генерируют большой объём трафика TCP/UDP. Каждая передача использует другой порт, который ОС воспринимает как отдельное соединение (запись conntrack). Параметр ядра nf_conntrack_max ограничивает общее количество отслеживаемых параллельных соединений. В данной конфигурации несколько виртуальных машин работают на одном физическом хосте с использованием NAT-сети. При высокой параллельности количество виртуальных соединений резко возрастает, превышая nf_conntrack_max. Это приводит к потере пакетов из-за перегрузки сетевой обработки.

Решение

Настройте параметры ядра:

sudo sysctl net.netfilter.nf_conntrack_buckets=262144
sudo sysctl net.netfilter.nf_conntrack_max=1048576

Проблема 2

Симптомы

Высокая нагрузка наблюдается при операциях движения во время запросов.

Причина

  1. Облачная среда неэффективно обрабатывает UDP-трафик, увеличивая задержку UDF или потерю пакетов, что продлевает передачу данных.
  2. Уровень логирования установлен на debug5, что приводит к избыточному логированию и снижению эффективности передачи UDP.

Решение

  1. Переключитесь на TCP-соединение.
  2. Включите прокси IC.
  3. Настройте уровень логирования.

3. Запросы

Проблема 1

Симптомы

При использовании клиентского интерфейса для подключения к удалённой базе данных долгие запросы или запросы после длительного простоя иногда возвращают:

server closed the connection unexpectedly

Причина

Настройки таймаута на стороне клиента могут отменять запросы или закрывать неактивные соединения.

Решение

Измените настройки таймаута клиента, отключив таймауты для запросов и неактивных соединений.

Проблема 2

Симптомы

Для партиционированных таблиц запрос UNION ALL с простыми условиями фильтрации выполняется медленнее, чем эквивалентный запрос IN.

Причина

В запросе IN фильтрация партиций приводит к сканированию только стандартной партиции. Однако в запросе UNION ALL каждое подзапрос независимо фильтрует до стандартной партиции, что приводит к многократному сканированию одной и той же партиции и значительному падению производительности.

Решение

Для партиционированных таблиц:

  1. По возможности избегайте использования стандартной партиции.
  2. Предпочитайте конструкции IN конструкциям UNION ALL.

Проблема 3

Симптомы

INSERT в целочисленный столбец с последующим SELECT работает быстро при отдельном выполнении, но медленно выполняется внутри функции PL/pgSQL.

Причина

Запросы внутри функций PL/pgSQL используют SPI (Server Programming Interface). План SPI показывает соединение двух таблиц с использованием вложенных циклов. Оценённое количество строк — 1, и ANALYZE не выполнялся.

Решение

Выполните ANALYZE для соответствующих таблиц.

Проблема 4

Симптомы

Два параллельных сеанса, выполняющие обновления в партиционированной таблице, вызывают взаимную блокировку.

Причина

Распределённая мёртвая блокировка.

Решение

Включите обнаружение распределённых мёртвых блокировок:

gpconfig -c gp_enable_global_deadlock_detector -v on

4. Хранение

Проблема 1

Симптомы

Низкая производительность загрузки данных.

Причина

gpcheckperf показывает производительность диска всего 80 МБ/с.

Решение

Используйте несколько дисков для повышения производительности ввода-вывода. Разделите диски WAL и данных для снижения конкуренции ввода-вывода.

Проблема 2

Симптомы

При одновременной загрузке 30 таблиц с помощью mxgate возникает ошибка:

failed to acquire resources on one or more segments, fatal out of memory

Причина

PostgreSQL/Greenplum использует многопроцессную архитектуру. Высокая параллельность приводит к избыточному количеству соединений, исчерпывающему доступную память на запрос.

Решение

Настройте /etc/sysctl.conf:

vm.overcommit_memory = 2

Измените mxgate prepared=10 на prepared=5.

5. PXF

Проблема 1

Симптомы

После развертывания PXF доступ к HDFS завершается ошибкой:

remote component error, Failed connect to localhost:5888; Connection refused (libchurl.c:950)

Решение

  1. Службы PXF должны запускаться на узле Master, но файлы данных должны находиться на узлах Segment.
  2. Убедитесь, что pxf/servers/core-site.xml и hdfs-site.xml точно соответствуют файлам конфигурации Hadoop.
  3. Настройте права доступа пользователей в pxf/servers/core-site.xml.
  4. Имя пользователя и группа файлов на Hadoop должны совпадать с указанными в pxf/core-site.xml.

Проблема 2

Симптомы

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

Решение

  1. Добавьте escape 'off' в параметры.
  2. Используйте FORMAT 'text:multi'.

6. Мониторинг

Проблема 1

Симптомы

Необходимо установить мониторинг Grafana в офлайн-режиме.

Решение

Скачайте пакет репозитория Grafana. Создайте локальный репозиторий и установите.

# ls
create_repo.sh  grafana-7.3.6-1.x86_64.rpm  grafana_repo

# sh create_repo.sh
Create ymatrix-grafana repo successfully!

# yum install --disablerepo=* --enablerepo=ymatrix_grafana grafana-7.3.6-1.x86_64.rpm