Github

Сборка Greengage DB из исходного кода

Андрей Аксенов

Этот раздел описывает сборку Greengage DB (на основе Greenplum Database) из исходного кода в операционных системах Linux и запуск тестового кластера. Исходный код Greengage DB доступен в репозитории greengage. Этот репозиторий также содержит скрипты, которые помогут вам установить зависимости, необходимые для сборки Greengage DB на требуемой платформе.

Предварительные требования

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

  • Ubuntu 22.04.

  • CentOS 7.9.

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

Настройка операционной системы

Чтобы тестовый кластер Greengage DB работал корректно, вам необходимо настроить некоторые параметры операционной системы.

Отключение SELinux (CentOS)

  1. Откройте файл /etc/selinux/config для редактирования:

    $ sudo vi /etc/selinux/config
  2. Установите для параметра SELINUX значение disabled, чтобы отключить SELinux:

    SELINUX=disabled
  3. Сохраните и закройте файл.

  4. Перезагрузите систему, чтобы применить изменения.

Редактирование sysctl.conf

  1. Откройте файл /etc/sysctl.conf для редактирования:

    $ sudo vi /etc/sysctl.conf
  2. Установите следующие параметры:

    vm.overcommit_memory = 2
    vm.overcommit_ratio = 95
    net.ipv4.ip_local_port_range = 10000 65535
    kernel.sem = 250 2048000 200 8192
  3. Сохраните и закройте файл.

  4. Чтобы применить изменения, используйте команду sysctl:

    $ sudo sysctl --system

Редактирование limits.conf

  1. Откройте файл /etc/security/limits.conf:

    $ sudo vi /etc/security/limits.conf
  2. Установите следующие параметры для пользователя gpadmin:

    gpadmin soft nofile 524288
    gpadmin hard nofile 524288
    gpadmin soft nproc 150000
    gpadmin hard nproc 150000

    gpadmin будет создан в следующем разделе.

  3. Сохраните и закройте файл.

Создание административного пользователя Greengage DB

Вам необходимо создать системную учетную запись пользователя для запуска и администрирования Greengage DB, а также сгенерировать для этой учетной записи пару SSH-ключей. Для этого выполните шаги из раздела Создание административного пользователя Greengage DB. Затем вам нужно будет включить беспарольный SSH для данного пользователя, как описано ниже.

Включение беспарольного SSH

  1. Добавьте содержимое сгенерированного публичного ключа в файл authorized_keys:

    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. Измените права доступа к файлу authorized_keys следующим образом:

    $ chmod 600 ~/.ssh/authorized_keys
ПРИМЕЧАНИЕ

Используйте команду ssh <hostname>, чтобы проверить возможность подключения к хосту по SSH без ввода пароля.

Клонирование репозитория Greengage DB

  1. Убедитесь, что вы вошли в систему как gpadmin и находитесь в домашнем каталоге.

  2. Клонируйте репозиторий greengage:

    $ git clone --recurse-submodules https://github.com/GreengageDB/greengage.git
  3. Измените текущий каталог на greengage:

    $ cd greengage

Установка зависимостей

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

  1. Выполните скрипт README.ubuntu.bash для установки зависимостей:

    $ sudo ./README.ubuntu.bash
  2. Создайте символическую ссылку от python2 к /usr/bin/python:

    $ sudo ln -s python2 /usr/bin/python
  3. Установите языковые настройки для английского языка (United States) в кодировке UTF-8:

    $ sudo locale-gen "en_US.UTF-8"
  1. Выполните скрипт README.CentOS.bash для установки зависимостей:

    $ sudo ./README.CentOS.bash
  2. Откройте файл /etc/ld.so.conf для редактирования:

    $ sudo vi /etc/ld.so.conf
  3. Добавьте в файл следующие строки, чтобы гарантировать, что динамический компоновщик сможет находить разделяемые библиотеки:

    /usr/local/lib
    /usr/local/lib64
  4. Сохраните и закройте файл.

  5. Обновите системный кеш разделяемых библиотек с помощью ldconfig:

    $ sudo ldconfig

Установка psutil

  1. Установите менеджер пакетов pip:

    $ sudo apt install python-pip
  2. Установите пакет psutil:

    $ pip2 install psutil

Дополнительных действий не требуется. Менеджер пакетов pip и пакет psutil устанавливаются с помощью скрипта README.CentOS.bash.

Сборка и установка Greengage DB

  1. Измените текущий каталог на greengage:

    $ cd ~/greengage
  2. Настройте сборку Greengage DB следующим образом:

    $ ./configure \
      --with-perl \
      --with-python \
      --with-libxml \
      --with-gssapi \
      --prefix=/usr/local/gpdb
    ПРИМЕЧАНИЕ

    Чтобы увидеть все доступные параметры сборки, запустите ./configure --help.

  3. Скомпилируйте Greengage DB с помощью make:

    $ make -j$(nproc)

    Если компиляция завершилась успешно, вывод должен содержать следующую информацию:

    ...
    All of Greengage Database successfully made. Ready to install.
  4. Установите Greengage DB, используя команду make install:

    $ sudo make -j$(nproc) install

    Если установка прошла успешно, вывод должен содержать следующую информацию:

    ...
    Greengage Database installation complete.
  5. Измените владельца и группу для установленных файлов на gpadmin:

    $ sudo chown -R gpadmin:gpadmin /usr/local/gpdb*
    $ sudo chgrp -R gpadmin /usr/local/gpdb*
  6. Установите путь к Greengage DB и переменные окружения следующим образом:

    $ source /usr/local/gpdb/greengage_path.sh
    ПРИМЕЧАНИЕ

    Добавьте указанную выше команду source в файл запуска оболочки gpadmin (например, в .bashrc). Это устанавливает путь к Greengage DB и переменные окружения при каждом входе в систему под пользователем gpadmin.

Создание тестового кластера

Этот раздел показывает, как запустить тестовый кластер.

Запуск тестового кластера

  1. Запустите тестовый кластер, выполнив данную команду:

    $ make create-demo-cluster
  2. После инициализации и запуска кластера выполните команду source для файла gpAux/gpdemo/gpdemo-env.sh, чтобы установить значения переменных окружения PGPORT и MASTER_DATA_DIRECTORY:

    $ source gpAux/gpdemo/gpdemo-env.sh
  3. Проверьте состояние кластера, чтобы убедиться, что все экземпляры запущены:

    $ gpstate

Проверка кластера

  1. Выведите список всех баз данных кластера:

    $ psql -l

    Результат должен выглядеть следующим образом:

                                   List of databases
       Name    |  Owner  | Encoding |  Collate   |   Ctype    |  Access privileges
    -----------+---------+----------+------------+------------+---------------------
     postgres  | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 |
     template0 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
               |         |          |            |            | gpadmin=CTc/gpadmin
     template1 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
               |         |          |            |            | gpadmin=CTc/gpadmin
    (3 rows)
  2. Подключитесь к базе данных postgres, созданной по умолчанию:

    $ psql postgres

    Результат должен выглядеть следующим образом:

    psql (9.4.26)
    Type "help" for help.
  3. Получите информацию об установленной версии Greengage DB:

    SELECT version();

    Вывод может выглядеть следующим образом:

PostgreSQL 9.4.26 (Greengage Database 6.28.0 build dev) on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit compiled on Jan 27 2025 09:11:47
PostgreSQL 9.4.26 (Greengage Database 6.28.0 build dev) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit compiled on Jan 28 2025 14:25:05