ELMA365 On-Premises > Подготовка инфраструктуры ELMA365 On-Premises > Базы данных / Установить локаль ru_RU.UTF-8 для PosgreSQL

Установить локаль ru_RU.UTF-8 для PosgreSQL

Использование национальной локали ru_RU.UTF-8 повышает производительность PostgreSQL при работе с русскоязычными данными:

  • улучшается работа механизмов сортировки и индексирования данных; 
  • ускоряется выполнение поисковых и текстовых операций. 

Установка локали состоит из четырёх этапов:

  1. Проверить доступные локали.
  2. Остановить работу приложения ELMA365.
  3. Создать базу данных с локалью ru_RU.UTF-8.
  4. Возобновить работу приложения ELMA365.

Шаг 1. Проверить доступные локали

  1. Проверьте наличие локали ru_RU.UTF-8 в системе. Для этого выполните команду:

locale -a | grep ru_RU

Если локаль доступна, отобразится её название.

  1. Если локаль отсутствует:
  1. Установите её, выполнив команду:

sudo locale-gen ru_RU.UTF-8
sudo update-locale

  1. Перезагрузите сервис PostgreSQL для применения изменений:

sudo systemctl restart postgresql 

  1. Проверьте наличие локали ru-RU в PostgreSQL, выполнив команду:

sudo -u postgres psql -c "SELECT * FROM pg_collation WHERE collname LIKE 'ru%';"

Шаг 2. Остановить работу приложения ELMA365

Остановите все сервисы приложения ELMA365 и дождитесь их завершения. Для этого используйте команду:

kubectl scale deploy --replicas=0 --all [-n <elma365-namespace>]

Шаг 3. Создать базу данных с локалью ru_RU.UTF-8

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

sudo -u postgres psql -c "CREATE DATABASE elma365_new WITH OWNER = elma365
LOCALE_PROVIDER = icu ICU_LOCALE = 'ru-RU' ENCODING = 'UTF8' LC_COLLATE = 
'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' TEMPLATE = template0;"
sudo -u postgres psql -d elma365_new -c "CREATE EXTENSION \"uuid-ossp\"; CREATE
EXTENSION pg_trgm;"

  1. Создайте резервную копию существующей базы данных, использовав команду:

sudo -u postgres pg_dump elma365 > elma365-dump.sql

  1. Перенесите данные из резервной копии в новую базу данных с локалью ru_RU.UTF-8:

sudo -u postgres psql elma365_new < elma365-dump.sql

начало внимание

Перед выполнением следующего действия убедитесь, что все данные перенесены.

конец внимание

  1. Удалите старую базу данных и переименуйте новую:

sudo -u postgres psql -c "DROP DATABASE elma365;"
sudo -u postgres psql -c "ALTER DATABASE elma365_new RENAME TO elma365;"

Шаг 4. Возобновить работу приложения ELMA365

Запустите все сервисы приложения ELMA365, используя команду:

kubectl scale deploy --replicas=1 --all [-n <elma365-namespace>]