Инициализация СУБД
Этот раздел описывает процесс инициализации СУБД Greengage (на основе Greenplum) после установки. Процесс инициализации может незначительно отличаться в зависимости от количества хостов и конфигурации оборудования, например:
-
Количество процессоров на сегмент-хосте влияет на рекомендуемое количество запущенных сегментов на данном хосте.
-
Наличие у хоста кластера нескольких несвязанных сетевых интерфейсов влияет на то, как выглядит хост-файл.
-
Наличие у хоста кластера нескольких логических дисков для хранения данных влияет на количество областей хранения данных, которые должны быть созданы.
Этот раздел предполагает, что кластер Greengage DB развернут на четырех хостах, описанных ниже.
Предварительные требования
Аппаратное обеспечение
Для демонстрации инициализации СУБД Greengage используются четыре хоста со следующими именами:
-
mdw
— мастер-хост. -
smdw
— резервный мастер-хост. -
sdw1
иsdw2
— сегмент-хосты.
Каждый хост в этой конфигурации включает четыре ядра CPU, один сетевой интерфейс и один логический диск. Учитывая количество процессоров, каждый сегмент-хост имеет два основных и два зеркальных сегмента для повышения производительности.
Программное обеспечение
Перед инициализацией СУБД Greengage необходимо подготовить все хосты кластера:
-
Установите все необходимые программные зависимости, перечисленные в этом разделе: Требования к ПО для установки Greengage DB.
-
Установите Greengage DB на все хосты. Например, чтобы установить Greengage DB, собранный из исходного кода, выполните действия, описанные в разделе: Сборка Greengage DB из исходного кода. В этом разделе описано, как:
-
настроить операционную систему;
-
создать административного пользователя Greengage DB;
-
собрать Greengage DB из исходного кода;
-
установить Greengage DB.
ПРИМЕЧАНИЕДля инициализации СУБД вам не нужно создавать тестовый кластер.
-
Файл /etc/hosts
Обновите файл /etc/hosts на каждом хосте кластера. Этот файл должен содержать все имена хостов и интерфейсов для каждого хоста в кластере. Для кластера, используемого в этом разделе, файл /etc/hosts может выглядеть следующим образом:
# ... 192.168.1.10 mdw 192.168.1.20 smdw 192.168.1.30 sdw1 192.168.1.40 sdw2
Создание хост-файлов
Различные утилиты Greengage DB используют хост-файлы для выполнения операций на нескольких хостах кластера. В данных файлах перечислены имена или IP-адреса хостов кластера. Ниже приведены примеры использования хост-файлов:
-
параллельное выполнение команд на нескольких хостах;
-
включение беспарольного SSH для подключения с любого хоста к любому другому хосту;
-
инициализация СУБД Greengage.
Вы можете проверить правильность используемых имен хостов в файле /etc/hosts.
Создание хост-файлов со всеми хостами
-
Подключитесь к мастер-хосту (
mdw
) под пользователемgpadmin
и войдите в домашний каталог. -
Создайте файл hostfile_all_hosts:
$ vi hostfile_all_hosts
-
Добавьте имена всех хостов в этот файл:
mdw smdw sdw1 sdw2
Убедитесь, что в файле нет пустых строк или лишних пробелов.
-
Сохраните и закройте файл.
Создание хост-файлов с сегмент-хостами
-
Создайте файл hostfile_segment_hosts:
$ vi hostfile_segment_hosts
-
Добавьте имена сегмент-хостов в этот файл:
sdw1 sdw2
-
Сохраните и закройте файл.
Включение беспарольного SSH
Пользователь gpadmin
должен иметь возможность подключиться по SSH с любого хоста кластера к любому другому хосту.
Для этого вам необходимо включить беспарольный SSH, как описано ниже.
Включение 1-n беспарольного SSH
Чтобы включить беспарольный SSH с мастер-хоста на любой другой хост в кластере, воспользуйтесь утилитой ssh-copy-id
:
-
Выполните команду
ssh-copy-id
, чтобы добавить публичный ключ пользователяgpadmin
в SSH-файл authorized_keys на хостеsmdw
:$ ssh-copy-id smdw
-
(Опционально) Введите
yes
и нажмитеEnter
в случае данного SSH-предупреждения:This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])?
-
Введите пароль пользователя
gpadmin
для хостаsmdw
и нажмитеEnter
, когда появится следующее приглашение:INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys gpadmin@smdw's password:
Результат должен выглядеть следующим образом:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'smdw'" and check to make sure that only the key(s) you wanted were added.
-
Повторите описанные выше действия для сегмент-хостов:
$ ssh-copy-id sdw1 $ ssh-copy-id sdw2
Включение n-n беспарольного SSH
Чтобы включить беспарольный SSH с любого хоста кластера к любому другому хосту, используйте утилиту gpssh-exkeys
.
Передайте имя хост-файла, содержащего имена всех хостов, команде gpssh-exkeys
:
$ gpssh-exkeys -f hostfile_all_hosts
Результат должен выглядеть следующим образом:
[STEP 1 of 5] create local ID and authorize on local host ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped [STEP 2 of 5] keyscan all hosts and update known_hosts file [STEP 3 of 5] retrieving credentials from remote hosts ... send to smdw ... send to sdw1 ... send to sdw2 [STEP 4 of 5] determine common authentication file content [STEP 5 of 5] copy authentication files to all remote hosts ... finished key exchange with smdw ... finished key exchange with sdw1 ... finished key exchange with sdw2 [INFO] completed successfully
Создание областей хранения данных
Область хранения данных — это каталог, в котором Greengage DB хранит данные экземпляров мастера и сегментов. Обратите внимание, что области хранения данных содержат данные для экземпляров мастера и сегментов:
-
Для мастер-хоста в области хранения данных хранятся системные данные, такие как таблицы системного каталога и метаданные.
-
Для сегмент-хостов в областях хранения данных хранятся пользовательские данные, распределенные по основным сегментам. Для зеркальных сегментов требуются отдельные области хранения.
Создание каталога для данных на мастере
-
Создайте каталог /data1/master на мастер-хосте:
$ sudo mkdir -p /data1/master
-
Измените владельца созданного каталога на
gpadmin
:$ sudo chown gpadmin:gpadmin /data1/master
Создание каталога для данных на резервном мастере
Чтобы создать каталог для данных на резервном мастере, используйте утилиту gpssh
:
-
Выполните следующую команду на мастер-хосте:
$ gpssh -h smdw -e 'sudo -n mkdir -p /data1/master'
-
Измените владельца созданного каталога на
gpadmin
:$ gpssh -h smdw -e 'sudo chown gpadmin:gpadmin /data1/master'
Создание каталогов для данных на сегмент-хостах
Чтобы создать каталоги для хранения данных сразу на всех сегмент-хостах, вам необходимо передать имя хост-файла, содержащего имена сегмент-хостов, команде gpssh
:
-
Создайте каталоги для данных основных сегментов:
$ gpssh -f hostfile_segment_hosts -e 'sudo mkdir -p /data1/primary'
-
Создайте каталоги для данных зеркальных сегментов:
$ gpssh -f hostfile_segment_hosts -e 'sudo mkdir -p /data1/mirror'
-
Измените владельца созданных каталогов на
gpadmin
:$ gpssh -f hostfile_segment_hosts -e 'sudo chown -R gpadmin /data1/*'
Инициализация СУБД Greengage
Чтобы инициализировать СУБД Greengage, вам необходимо:
-
Задать параметры конфигурации базы данных в файле.
-
Запустить утилиту инициализации Greengage DB на мастер-хосте.
-
Установить переменные окружения, специфичные для Greengage DB, для пользователя
gpadmin
.
Создание файла конфигурации базы данных
Файл конфигурации базы данных определяет, как утилита инициализации должна настраивать СУБД Greengage. Пример файла конфигурации можно найти в $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config.
-
Создайте файл init_config в домашнем каталоге пользователя
gpadmin
:$ vi init_config
-
Задайте следующие настройки:
ARRAY_NAME="Greengage DB cluster" SEG_PREFIX=gpseg PORT_BASE=10000 declare -a DATA_DIRECTORY=(/data1/primary /data1/primary ) MASTER_HOSTNAME=mdw MASTER_DIRECTORY=/data1/master MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE MIRROR_PORT_BASE=10500 declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror )
Вот некоторые из ключевых настроек в этом файле:
-
SEG_PREFIX
— префикс, используемый для присвоения имен каталогам для данных мастера и сегментов. -
PORT_BASE
— базовое значение порта, по которому вычисляются номера портов основных сегментов. Для зеркальных сегментов используетсяMIRROR_PORT_BASE
. -
DATA_DIRECTORY
— пути к областям хранения данных, по которым утилита инициализации создает каталоги для данных основных сегментов. Для зеркальных сегментов используетсяMIRROR_DATA_DIRECTORY
. -
MASTER_DIRECTORY
— путь к области хранения данных, по которому утилита инициализации создает каталог для данных мастера. -
MASTER_PORT
— номер порта мастера, используемый пользователями и клиентскими подключениями для доступа к СУБД Greengage.
-
-
Сохраните и закройте файл.
Запуск утилиты инициализации
Чтобы инициализировать СУБД Greengage, воспользуйтесь утилитой gpinitsystem
:
-
Выполните команду
gpinitsystem
со следующими параметрами:$ gpinitsystem -c init_config -h hostfile_segment_hosts -s smdw
-
Параметр
-c
используется для передачи имени файла конфигурации базы данных. -
Параметр
-h
задает имя хост-файла, содержащего имена сегмент-хостов. -
Параметр
-s
задает имя хоста резервного мастера.
-
-
Утилита
gpinitsystem
проверяет настройки конфигурации и проверяет, может ли она подключиться к каждому хосту и получить доступ к каталогам данных, указанным в конфигурации. Вывод должен отобразить применяемую конфигурацию кластера. Для кластера, используемого в этом разделе, конфигурация сегментов выглядит следующим образом:[INFO]:---------------------------------------- [INFO]:-Greengage Primary Segment Configuration [INFO]:---------------------------------------- [INFO]:-sdw1 10000 sdw1 /data1/primary/gpseg0 2 [INFO]:-sdw1 10001 sdw1 /data1/primary/gpseg1 3 [INFO]:-sdw2 10000 sdw2 /data1/primary/gpseg2 4 [INFO]:-sdw2 10001 sdw2 /data1/primary/gpseg3 5 [INFO]:--------------------------------------- [INFO]:-Greengage Mirror Segment Configuration [INFO]:--------------------------------------- [INFO]:-sdw2 10500 sdw2 /data1/mirror/gpseg0 6 [INFO]:-sdw2 10501 sdw2 /data1/mirror/gpseg1 7 [INFO]:-sdw1 10500 sdw1 /data1/mirror/gpseg2 8 [INFO]:-sdw1 10501 sdw1 /data1/mirror/gpseg3 9
-
Если все предварительные проверки прошли успешно, утилита инициализации предложит вам подтвердить настройку:
Continue with Greengage creation Yy|Nn (default=N):
Введите
y
и нажмитеEnter
, чтобы начать процесс инициализации. -
После успешной настройки утилита
gpinitsystem
запускает СУБД Greengage и показывает следующее сообщение:Greengage Database instance successfully created
-
Установите переменную окружения
MASTER_DATA_DIRECTORY
:$ export MASTER_DATA_DIRECTORY=/data1/master/gpseg-1
-
Получите информацию о запущенном кластере с помощью утилиты
gpstate
:$ gpstate
Результат должен содержать следующую информацию:
Master instance = Active Master standby = smdw Standby master state = Standby host passive Total segment instance count from metadata = 8
Устранение проблем при инициализации
Процесс инициализации завершится с ошибкой, если gpinitsystem
столкнется с какими-либо проблемами при настройке экземпляра.
Это может привести к неполной инициализации системы.
Чтобы увидеть причину сбоя, проверьте файлы журнала, которые хранятся в каталоге ~/gpAdminLogs.
В зависимости от ошибки, возникшей во время инициализации, вам может потребоваться выполнить очистку и запустить gpinitsystem
заново.
Например, если некоторые экземпляры сегментов созданы, а некоторые — нет, вам может потребоваться остановить процессы Postgres и удалить все созданные утилитой каталоги для данных из областей хранения данных.
Greengage DB создает скрипт отката, который поможет с этой очисткой.
Например, если каталог для данных /data1 отсутствует на втором сегмент-хосте (sdw2
), процесс инициализации завершится со следующей ошибкой:
[FATAL]:-Cannot write to /data1/primary on sdw2 Script Exiting! [WARN]:-Script has left Greengage Database in an incomplete state [WARN]:-Run command bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20250128_144517 on master to remove these changes
Чтобы удалить все созданные утилитой каталоги для данных, процессы Postgres и файлы журналов, запустите скрипт отката:
$ bash ~/gpAdminLogs/backout_gpinitsystem_gpadmin_20250128_144517
Результат должен выглядеть следующим образом:
Stopping segment instance on sdw1 removing directory /data1/primary/gpseg0 on sdw1 Stopping segment instance on sdw1 removing directory /data1/primary/gpseg1 on sdw1
Установка переменных окружения для Greengage DB
После инициализации СУБД Greengage необходимо установить переменные окружения в среде пользователя gpadmin
на первичном и резервном мастер-хосте.
Вы можете сделать это, отредактировав профиль пользователя gpadmin
, например, файл .bashrc:
-
Откройте файл .bashrc:
$ vi ~/.bashrc
-
Добавьте в файл следующую строку:
source /usr/local/gpdb/greengage_path.sh
Скрипт greengage_path.sh устанавливает или обновляет некоторые переменные окружения, в частности:
-
GPHOME
— указывает каталог, в котором установлен Greengage DB. -
PATH
— обновляет системный путь, добавляя в него каталоги, в которых хранятся утилиты Greengage DB. -
LD_LIBRARY_PATH
— добавляет путь к библиотекам Greengage DB в список каталогов, в которых динамический компоновщик должен выполнять поиск разделяемых библиотек.
-
-
Задайте переменную окружения
MASTER_DATA_DIRECTORY
:export MASTER_DATA_DIRECTORY=/data1/master/gpseg-1
-
(Опционально) Задайте переменные окружения
PGPORT
,PGUSER
иPGDATABASE
, чтобы настроить параметры подключения для доступа к СУБД:export PGPORT=5432 export PGUSER=gpadmin export PGDATABASE=postgres
Например, утилита
psql
использует эти значения при подключении к базе данных. -
(Опционально) Если вы используете RHEL или CentOS, добавьте следующую строку в конец файла .bashrc, чтобы разрешить использование команды
ps
в среде пользователяgpadmin
:export LD_PRELOAD=/lib64/libz.so.1 ps
-
Сохраните и закройте файл.
-
После редактирования файла профиля примените изменения с помощью команды
source
:$ source ~/.bashrc
-
Скопируйте файл .bashrc на резервный мастер-хост с помощью утилиты
gpscp
:$ gpscp -h smdw .bashrc =: