Настройка часового пояса и локализации
Этот раздел описывает настройку часового пояса и локализации в Greengage DB (на основе Greenplum) после установки. Настройки локализации включают локаль и наборы символов, используемые СУБД.
Настройка часового пояса
Поддержка часовых поясов в Greengage DB необходима для различных целей, таких как отображение и интерпретация временных меток. Вы можете узнать больше о часовых поясах в соответствующем разделе документации PostgreSQL: Time Zones.
Greengage DB использует базу данных часовых поясов IANA, предоставляемую операционной системой, для поддержки часовых поясов.
Например, Ubuntu и CentOS используют пакет tzdata
, который содержит правила для часовых поясов, определенные в базе данных часовых поясов.
При обновлении этого пакета Greengage DB обновляет список доступных часовых поясов.
Во время инициализации СУБД часовой пояс выбирается автоматически на основе системного окружения.
Чтобы установить часовой пояс вручную, используйте параметр конфигурации сервера TimeZone
.
Этот параметр принимает полное имя часового пояса, например, Europe/Moscow
.
Список имен часовых поясов можно найти в системном представлении pg_timezone_names
.
Параметр конфигурации TimeZone
также принимает имена часовых поясов в формате POSIX, например, MSK-3
.
Для отображения и настройки часового пояса используйте утилиту gpconfig
:
-
Определите используемый часовой пояс следующим образом:
$ gpconfig -s TimeZone
Результат зависит от часового пояса вашей операционной системы и может выглядеть следующим образом:
Values on all segments are consistent GUC : TimeZone Master value: Etc/UTC Segment value: Etc/UTC
-
Чтобы установить другой часовой пояс, укажите его полное название, используя опцию
-v
:$ gpconfig -c TimeZone -v 'Europe/Moscow'
Результат должен выглядеть следующим образом:
[INFO]:-completed successfully with parameters '-c TimeZone -v Europe/Moscow'
-
Перезагрузите конфигурацию с помощью
gpstop
:$ gpstop -u
-
Проверьте используемый часовой пояс:
$ gpconfig -s TimeZone
Вывод должен показать, что кластер использует указанный часовой пояс:
Values on all segments are consistent GUC : TimeZone Master value: Europe/Moscow Segment value: Europe/Moscow
Чтобы настроить часовой пояс для временных меток в логах, используйте параметр конфигурации log_timezone
.
Настройка параметров локализации
Greengage DB поддерживает два средства локализации:
-
Поддержка языковых стандартов, предоставляемая операционной системой сервера.
Поддержка языковых стандартов включает порядок сортировки с учетом локали, форматирование чисел и времени и другие возможности. Поддержка локали автоматически инициализируется в момент инициализации СУБД Greengage. По умолчанию утилита
gpinitsystem
инициализирует СУБД с настройками локали операционной системы. Вы можете задать требуемую локаль с помощью параметра-n
(или--locale
), предоставляемого утилитойgpinitsystem
. -
Поддержка различных наборов символов (также называемых кодировками).
Наборы символов сопоставляют символы их двоичным представлениям, что позволяет СУБД обрабатывать и представлять текстовые данные согласованно. Стандартные наборы символов включают UTF-8, LATIN-9 и другие. По умолчанию набор символов выбирается во время инициализации СУБД Greengage при помощи утилиты
gpinitsystem
. Вы можете указать требуемый набор символов в файле конфигурации базы данных с помощью параметраENCODING
. Обратите внимание, что указанный набор символов должен быть совместим с локалью, установленной с помощью параметра-n
(--locale
).
Подробнее о локализации вы можете узнать в соответствующем разделе документации PostgreSQL: Localization.
Настройка локали
Чтобы задать локаль для вашей СУБД Greengage, выполните следующие шаги:
-
Сгенерируйте необходимую локаль на всех хостах кластера. Данная команда генерирует локаль для русского языка (Россия) с кодировкой UTF-8:
$ sudo locale-gen ru_RU.UTF-8
-
Убедитесь, что созданная локаль доступна для использования:
$ localectl list-locales
Результат должен включать данную строку:
ru_RU.utf8
-
Выполните команду
gpinitsystem
с параметром-n
(или--locale
), чтобы инициализировать СУБД с заданной локалью:$ gpinitsystem -c init_config -h hostfile_segment_hosts -s smdw -n ru_RU.utf8
Убедитесь, что параметр
ENCODING
, указанный в файле init_config, совместим с выбранной локалью. -
После инициализации СУБД Greengage убедитесь, что для всех баз данных установлены корректные настройки локали:
$ psql -l
Проверьте значения в столбцах
Collate
иCtype
:List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+---------+----------+------------+------------+--------------------- postgres | gpadmin | UTF8 | ru_RU.utf8 | ru_RU.utf8 | template0 | gpadmin | UTF8 | ru_RU.utf8 | ru_RU.utf8 | =c/gpadmin + | | | | | gpadmin=CTc/gpadmin template1 | gpadmin | UTF8 | ru_RU.utf8 | ru_RU.utf8 | =c/gpadmin + | | | | | gpadmin=CTc/gpadmin (3 rows)
Столбец
Encoding
показывает кодировку, указанную в файле конфигурации базы данных.