openGauss — это открытая система управления реляционными базами данных. Она обладает высокой производительностью на многоядерных процессорах, полной безопасностью на всех этапах, интеллектуальным управлением и поддержкой предприятий. openGauss интегрирует многолетний опыт Huawei в области баз данных, оптимизируя архитектуру, транзакции, хранилище, оптимизатор и архитектуру ARM. В то же время, openGauss как глобальное открытое сообщество баз данных стремится продвигать развитие и обогащение экосистемы программного и аппаратного обеспечения для баз данных.
Высокая производительность
openGauss преодолевает барьер многоядерных процессоров, достигая 1,5 миллиона TPMC на двухпроцессорной системе Kunpeng с 128 ядрами.
Разделение
Ключевые структуры данных, общие для внутренних потоков, разделяются на различные разделы для уменьшения конфликтов доступа к блокировкам. Например, CLOG использует разделение для решения проблемы бутылочного горлышка ClogControlLock.
Структура NUMA
Выделение ключевых структур данных помогает уменьшить межпроцессорный доступ. Глобальный массив PGPROC разделяется на несколько частей в зависимости от количества узлов NUMA, решая проблему бутылочного горлышка ProcArrayLock.
Привязка ядер
Привязка прерываний сетевого интерфейса к различным ядрам и привязка ядер к различным фоновым потокам предотвращает нестабильность производительности из-за миграции потоков между ядрами.
Оптимизация ARM
Оптимизация атомарных операций на основе инструкций LSE платформы ARM, обеспечивающая эффективную работу критических секций.
Обход SQL
Оптимизация процесса выполнения SQL через обход SQL, снижающая нагрузку на процессор при выполнении.
Высокая надежность
При нормальной нагрузке RTO составляет менее 10 секунд, что снижает время простоя службы из-за отказа узла.
Параллельное восстановление
При передаче Xlog на резервный узел резервный узел записывает Xlog на носитель. Одновременно Xlog отправляется в поток диспетчера восстановления redo. Диспетчер отправляет Xlog в несколько параллельных потоков восстановления для воспроизведения. Это гарантирует, что скорость воспроизведения redo резервного узла соответствует скорости генерации основного узла. Резервный узел готов к работе в реальном времени и может быть немедленно повышен до основного.
MOT Engine (бета-версия)
Хранилище таблиц с оптимизацией памяти (MOT) — это транзакционное хранилище строк, оптимизированное для многоядерных систем и больших объемов памяти, обеспечивающее экстремальную производительность OLTP и высокую эффективность использования ресурсов. С данными и индексами, полностью хранящимися в памяти, NUMA-ориентированной архитектурой, алгоритмами, исключающими конфликты блокировок и захватов, и нативной компиляцией запросов (JIT), MOT обеспечивает низкую задержку доступа к данным и более эффективное выполнение транзакций. Подробнее см. в документации MOT Engine.
Безопасность
openGauss поддерживает управление учетными записями, аутентификацию учетных записей, блокировку учетных записей, проверку сложности паролей, управление и проверку прав доступа, шифрование передачи данных и аудит операций, обеспечивая безопасность данных службы.
Легкость управления и обслуживания
openGauss интегрирует алгоритмы ИИ в базы данных, снижая нагрузку на обслуживание баз данных.
openGauss поддерживает прогнозирование времени выполнения SQL на основе собранных исторических данных производительности.
openGauss поддерживает диагностику выполнения SQL-запросов, выявляя медленные запросы заранее.
openGauss поддерживает автоматическую настройку параметров базы данных, снижая затраты времени и усилий на их настройку.
Перед установкой openGauss необходимо создать конфигурационный файл. Конфигурационный файл в формате XML содержит информацию о сервере, где будет развернут openGauss, пути установки, IP-адресе и номере порта. Этот файл используется для руководства развертыванием openGauss. Необходимо настроить конфигурационный файл в соответствии с фактическими требованиями развертывания.
Ниже описано, как создать XML-конфигурационный файл на основе решения с одним основным узлом и одним резервным узлом. Информация в жирном шрифте является только примером. Вы можете заменить ее по необходимости. Каждая строка информации закомментирована.
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<!-- Общая информация -->
<CLUSTER>
<!-- Имя базы данных -->
<PARAM name="clusterName" value="Cluster_template" />
<!-- Имя узла базы данных (hostname) -->
<PARAM name="nodeNames" value="node1_hostname,node2_hostname"/>
<!-- Путь установки базы данных -->
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<!-- Директория логов -->
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<!-- Директория временных файлов -->
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/>
<!-- Директория инструментов базы данных -->
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<!-- Директория core-файлов базы данных -->
<PARAM name="corePath" value="/opt/huawei/corefile"/>
<!-- IP-адреса узлов, соответствующие именам узлов соответственно -->
<PARAM name="backIp1s" value="192.168.0.1,192.168.0.2"/>
</CLUSTER>
<!-- Информация о развертывании узлов на каждом сервере -->
<DEVICELIST>
<!-- Информация о развертывании узла node1 -->
<DEVICE sn="node1_hostname">
<!-- Имя хоста node1 -->
<PARAM name="name" value="node1_hostname"/>
<!-- AZ, где находится node1, и приоритет AZ -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- IP-адрес node1. Если на сервере доступен только один сетевой интерфейс, установите backIP1 и sshIP1 на один и тот же IP-адрес. -->
<PARAM name="backIp1" value="192.168.0.1"/>
<PARAM name="sshIp1" value="192.168.0.1"/>
<!--DBnode-->
<PARAM name="dataNum" value="1"/>
<!-- Номер порта узла базы данных -->
<PARAM name="dataPortBase" value="15400"/>
<!-- Директория данных на основном узле базы данных и директории данных резервных узлов -->
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2_hostname,/opt/huawei/install/data/dn"/>
<!-- Количество узлов, для которых установлен режим синхронизации на узле базы данных -->
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<!-- Информация о развертывании узла node2 -->
<DEVICE sn="node2_hostname">
<!-- Имя хоста node2 -->
<PARAM name="name" value="node2_hostname"/>
<!-- AZ, где находится node2, и приоритет AZ -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- IP-адрес node2. Если на сервере доступен только один сетевой интерфейс, установите backIP1 и sshIP1 на один и тот же IP-адрес. -->
<PARAM name="backIp1" value="192.168.0.2"/>
<PARAM name="sshIp1" value="192.168.0.2"/>
</DEVICE>
</DEVICELIST>
</ROOT>
После создания конфигурационного файла openGauss необходимо запустить скрипт gs_preinstall для подготовки учетной записи и окружения, чтобы можно было выполнять операции установки и управления openGauss с минимальными правами доступа, обеспечивая безопасность системы.
Предупреждения
Процедура
Войдите в любой хост, где будет установлен openGauss, как пользователь root и создайте директорию для хранения установочного пакета по плану.
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
ПРИМЕЧАНИЕ:
- Не создавайте директорию в домашней директории или поддиректории любого пользователя openGauss, так как у вас может не быть прав доступа к таким директориям.
- Пользователь openGauss должен иметь права чтения и записи в директории /opt/software/openGauss.
В качестве примера используется релизный пакет. Загрузите установочный пакет openGauss_x.x.x_PACKAGES_RELEASE.tar.gz и конфигурационный файл clusterconfig.xml в директорию, созданную на предыдущем шаге.
Перейдите в директорию для хранения загруженного программного обеспечения и распакуйте пакет.
cd /opt/software/openGauss
tar -zxvf openGauss_x.x.x_PACKAGES_RELEASE.tar.gz
Распакуйте пакет openGauss-x.x.x-openEULER-64bit.tar.gz.
tar -zxvf openGauss-x.x.x-openEULER-64bit.tar.gz
После распаковки установочного пакета автоматически создается поддиректория script в /opt/software/openGauss. В поддиректории script создаются скрипты инструментов OM, такие как gs_preinstall.
Перейдите в директорию для хранения скриптов инструментов.
cd /opt/software/openGauss/script
Чтобы гарантировать правильную версию OpenSSL, загрузите библиотеку lib из установочного пакета перед предустановкой. Выполните следующую команду. {packagePath} указывает путь к директории с установочным пакетом. В этом примере путь — /opt/software/openGauss.
export LD_LIBRARY_PATH={packagePath}/script/gspylib/clib:$LD_LIBRARY_PATH
Чтобы гарантировать успешную установку, проверьте совпадение значений hostname и /etc/hostname. Во время предустановки проверяется имя хоста.
Выполните gs_preinstall для настройки окружения установки. Если используется общее окружение, добавьте параметр --sep-env-file=ENVFILE для разделения переменных окружения, чтобы избежать взаимного влияния с другими пользователями. Путь к файлу разделения переменных окружения указывается пользователем. Выполните gs_preinstall в интерактивном режиме. Во время выполнения автоматически устанавливается взаимное доверие между пользователями root и между пользователями кластера openGauss.
./gs_preinstall -U omm -G dbgrp -X /opt/software/ openGauss/clusterconfig.xml
omm — это администратор базы данных (также пользователь ОС, запускающий openGauss), dbgrp — это имя группы ОС пользователя, запускающего openGauss, а /opt/software/ openGauss/clusterconfig.xml — это путь к конфигурационному файлу openGauss. Во время выполнения необходимо подтвердить установку взаимного доверия по запросу и ввести пароль пользователя root или пользователя openGauss.
После подготовки окружения установки openGauss путем выполнения предустановочного скрипта разверните openGauss в соответствии с процессом установки. Предварительные условия
Процедура
(Необязательно) Проверьте наличие установочного пакета и конфигурационного файла openGauss в запланированных директориях. Если таких пакета или файла нет, выполните предустановку заново.
Войдите в любой хост openGauss и переключитесь на пользователя omm.
su - omm
ПРИМЕЧАНИЕ:
- omm указывает пользователя, заданного параметром -U в скрипте gs_preinstall.
- Необходимо выполнять скрипт gs_install как пользователь omm, заданный в скрипте gs_preinstall. В противном случае будет возникать ошибка выполнения.
Используйте gs_install для установки openGauss. Если openGauss установлен в режиме разделения переменных окружения, выполните команду source для получения файла разделения переменных окружения ENVFILE.
gs_install -X /opt/software/ openGauss/clusterconfig.xml
Пароль должен соответствовать следующим требованиям сложности:
После успешной установки вручную удалите доверие между пользователями root на хосте, то есть удалите файл взаимного доверия на каждом узле базы данных openGauss.
rm –rf ~/.ssh
Процесс удаления openGauss включает удаление самого openGauss и очистку окружения сервера openGauss.
openGauss предоставляет скрипт для удаления, который помогает пользователям удалить openGauss.
Процедура
Войдите как пользователь ОС omm на хост, где находится CN.
Выполните скрипт gs_uninstall для удаления кластера базы данных.
gs_uninstall --delete-data
Альтернативно, выполните удаление на каждом узле openGauss.
gs_uninstall --delete-data -L
После удаления openGauss выполните скрипт gs_postuninstall для удаления конфигураций со всех серверов openGauss, если вы не планируете повторно развернуть openGauss с использованием этих конфигураций. Эти конфигурации были созданы скриптом gs_preinstall. Предварительные условия
Процедура
Войдите на сервер openGauss как пользователь root.
Выполните команду ssh Hostname для проверки успешного установления взаимного доверия. Затем введите exit.
plat1:~ # ssh plat2
Last login: Tue Jan 5 10:28:18 2016 from plat1
plat2:~ # exit
logout
Connection to plat2 closed.
plat1:~ #
Перейдите по следующему пути:
cd /opt/software/openGauss/script
Выполните команду gs_postuninstall для очистки окружения. Если openGauss установлен в режиме разделения переменных окружения, выполните команду source для получения файла разделения переменных окружения ENVFILE.
./gs_postuninstall -U omm -X /opt/software/openGauss/clusterconfig.xml --delete-user --delete-group
Альтернативно, локально используйте инструмент gs_postuninstall для очистки каждого узла openGauss.
./gs_postuninstall -U omm -X /opt/software/openGauss/clusterconfig.xml --delete-user --delete-group -L
omm — это имя пользователя ОС, запускающего openGauss, а путь к конфигурационному файлу openGauss — /opt/software/openGauss/clusterconfig.xml. Если кластер установлен в режиме разделения переменных окружения, удалите параметр разделения переменных окружения ENV, полученный при выполнении команды source.
unset MPPDB_ENV_SEPARATE_PATH
Удалите взаимное доверие между пользователями root на каждом узле базы данных openGauss.
Для компиляции openGauss вам потребуются два компонента: openGauss-server и binarylibs.
openGauss-server: основной код openGauss. Его можно получить из открытого сообщества.
binarylibs: стороннее открытое программное обеспечение, от которого зависит openGauss. Его можно получить путем компиляции кода openGauss-third_party или загрузить из открытого сообщества, где мы уже скомпилировали его и загрузили его копию. Первый метод будет рассмотрен в следующей главе.
Перед компиляцией openGauss проверьте требования к ОС и программному обеспечению.
Вы можете скомпилировать openGauss с помощью build.sh — однонажатийного шелл-инструмента, который мы рассмотрим позже, или с помощью команды. Также build.sh создает установочный пакет.
Поддерживаются следующие ОС:
CentOS 7.6 (архитектура x86)
openEuler-20.03-LTS (архитектура aarch64)
openEuler-20.03-LTS (архитектура x86_64)
openEuler-22.03-LTS (архитектура aarch64)
openEuler-22.03-LTS (архитектура x86_64)
openEuler-24.03-LTS (архитектура aarch64)
openEuler-24.03-LTS (архитектура x86_64)
В следующей таблице перечислены требования к программному обеспечению для компиляции openGauss.
Рекомендуется использовать стандартные пакеты зависимого программного обеспечения из перечисленных ОС или источников установочных дисков CD-ROM. Если указанное программное обеспечение отсутствует, обратитесь к рекомендуемым версиям программного обеспечения.
Требования к зависимому программному обеспечению следующие:
Программное обеспечение | Рекомендуемая версия |
---|---|
libaio-devel | 0.3.109-13 |
flex | 2.5.31 или новее |
bison | 2.7-4 |
ncurses-devel | 5.9-13.20130511 |
glibc-devel | 2.17-111 |
patch | 2.7.1-10 |
lsb_release | 4.1 |
Вы можете загрузить openGauss-server и openGauss-third_party из открытого сообщества.
С сайта ниже вы можете получить binarylibs, которые мы уже скомпилировали. После загрузки распакуйте его и переименуйте в binarylibs.
https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/openGauss-third_party_binarylibs.tar.gz
Теперь мы завершили код openGauss, например, мы храним его в следующих директориях.
Перед компиляцией openGauss скомпилируйте и соберите открытые исходные тексты и стороннее программное обеспечение, от которого зависит openGauss. Эти открытые исходные тексты и стороннее программное обеспечение хранятся в репозитории кода openGauss-third_party и обычно требуется собирать их только один раз. Если открытые исходные тексты обновлены, пересоберите программное обеспечение.
Вы также можете напрямую получить выходной файл компиляции открытых исходных текстов из репозитория binarylibs.
Если вы хотите скомпилировать стороннее программное обеспечение самостоятельно, перейдите в репозиторий openGauss-third_party для получения подробностей.
После выполнения предшествующего скрипта результат компиляции и сборки сохраняется в директории binarylibs, находящейся на том же уровне с openGauss-third_party. Эти файлы будут использоваться во время компиляции openGauss-server.
build.sh в openGauss-server — это важный скрипт инструмент во время компиляции. Он интегрирует функции установки программного обеспечения и компиляции кода для быстрой компиляции и упаковки кода.
В следующей таблице описаны параметры.
Параметр | Значение по умолчанию | Параметр | Описание |
---|---|---|---|
-h | Не используйте этот параметр. | - | Меню справки |
-m | release | [debug | release | memcheck] | Выбор целевой версии |
-3rd | ${Code directory}/binarylibs | [binarylibs path] | Указание пути к binarylibs. Путь должен быть абсолютным путем |
-pkg | Не используйте этот параметр. | - | Сжатие результата компиляции кода в установочный пакет |
ВНИМАНИЕ:
- -m [debug | release | memcheck] указывает три целевые версии:
- release: указывает генерацию двоичной программы версии release. При компиляции этой версии используется параметр высокой оптимизации GCC для удаления отладочного кода ядра системы. Этот параметр обычно используется в среде генерации или тестирования производительности.
- debug: указывает генерацию двоичной программы версии debug. При компиляции этой версии добавляется функция отладки кода ядра системы, что обычно используется в среде самотестирования разработчиков.
- memcheck: указывает генерацию двоичной программы версии memcheck. При компиляции этой версии добавляется функция ASAN на основе версии debug для локализации проблем с памятью.
- -3rd [binarylibs path] — это путь к binarylibs. По умолчанию binarylibs существует в текущей директории с кодом. Если binarylibs перемещен в openGauss-server или создан символическая ссылка на binarylibs в openGauss-server, вам не нужно указывать этот параметр. Однако если вы сделаете это, обратите внимание, что файл легко может быть удален командой git clean.
- Каждый параметр этого скрипта имеет значение по умолчанию; количество параметров мало и зависимости просты; поэтому этот скрипт легко использовать; если требуемое значение отличается от значения по умолчанию, задайте этот параметр согласно фактическим требованиям.
Теперь вы знаете использование build.sh; поэтому вы можете скомпилировать openGauss-server одной командой с помощью build.sh.
[user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path]
Например:
[user@linux openGauss-server]$ sh build.sh # Компиляция версии release openGauss; binarylibs или его символическая ссылка должны существовать в директории с кодом; в противном случае операция завершится неудачей.
[user@linux openGauss-server]$ sh build.sh -m debug -3rd /sda/binarylibs # Компиляция версии debug openGauss с использованием binarylibs из /sda/
Путь установки программного обеспечения после компиляции — /sda/openGauss-server/dest.
Скомпилированные двоичные файлы хранятся в /sda/openGauss-server/dest/bin.
Журнал компиляции: make_compile.log
Выполните следующий скрипт для получения версии системы:
[user@linux openGauss-server]$ sh src/get_PlatForm_str.sh
ВНИМАНИЕ:
- Вывод команды указывает ОСы, поддерживаемые openGauss; поддерживаемые ОС — centos7.6_x86_64 и openeuler_aarch64.
- Если отображается Failed или другая версия, то текущая операционная система не поддерживается openGauss.
Настройте переменные окружения; добавьте ____ на основе местоположения загрузки кода; замените *** результатом из предыдущего шага.
export CODE_BASE=________ # Путь к файлу openGauss-server
export BINARYLIBS=________ # Путь к файлу binarylibs
export GAUSSHOME=$CODE_BASE/dest/
export GCC_PATH=$BINARYLIBS/buildtools/***/gcc7.3/
export CC=$GCC_PATH/gcc/bin/gcc
export CXX=$GCC_PATH/gcc/bin/g++
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH
Выберите версию и настройте ее.
debug версия:
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib
release версия:
./configure --gcc-version=7.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --without-readline --without-zlib
memcheck версия:
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib --enable-memory-check
ВНИМАНИЕ:
- [debug | release | memcheck] указывает три целевые версии.
- На платформе ARM необходимо добавить -D__USE_NUMA к CFLAGS.
- На платформе ARMv8.1 или более новой (например, Kunpeng 920) необходимо добавить -D__ARM_LSE к CFLAGS.
- Если binarylibs перемещен в openGauss-server или создан символическая ссылка на binarylibs в openGauss-server, вам не нужно указывать параметр --3rd; однако если вы сделаете это, обратите внимание, что файл легко может быть удален командой
git clean
.- Для сборки с mysql_fdw добавьте --enable-mysql-fdw при конфигурировании; перед сборкой mysql_fdw необходим клиентская библиотека C MariaDB.
- Для сборки с oracle_fdw добавьте --enable-oracle-fdw при конфигурировании; перед сборкой oracle_fdw необходим клиентская библиотека C Oracle.
Выполните следующие команды для компиляции openGauss:
[user@linux openGauss-server]$ make -sj
[user@linux openGauss-server]$ make install -sj
Если отображается следующая информация, компиляция и установка прошли успешно:
Установка openGauss завершена.
Путь установки программного обеспечения после компиляции — $GAUSSHOME.
Скомпилированные двоичные файлы хранятся в $GAUSSHOME/bin.
Прочитайте главу Компиляция с помощью build.sh, чтобы понять использование build.sh и как компилировать openGauss с помощью этого скрипта.
Теперь вы можете скомпилировать установочный пакет просто добавив параметр -pkg
.
[user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg
Например:
[user@linux openGauss-server]$ sh build.sh -pkg # Компиляция установочного пакета версии release; binarylibs или его символическая ссылка должны существовать в директории с кодом; в противном случае операция завершится неудачей.
[user@linux openGauss-server]$ sh build.sh -m debug -3rd /sda/binarylibs -pkg # Компиляция установочного пакета версии debug с использованием binarylibs из /sda/
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )