Esta guía práctica documenta el proceso completo de compilación e instalación desde el código fuente de GreatSQL 8.4.4-4 en el sistema operativo UOS V20 con arquitectura Shenwei (SW_64). Esta adaptación del software de base de datos en plataformas de hardware nacionalizado representa una práctica importante con valor de referencia real.
Preparación del entorno
Verificación del entorno base y permisos
# Cambiar a usuario root para los siguientes pasos que requieren privilegios máximos
$ sudo su -
# Verificar sistema operativo y arquitectura
cat /etc/os-release
PRETTY_NAME="UOS Server 20"
NAME="UOS Server 20"
$ uname -m
sw_64
# Verificar versión de GLIBC
$ ldd --version
ldd (GNU libc) 2.34
# Verificar versión de gcc
$ gcc --version
gcc (GCC) 10.3.1
Verificación de recursos
# Verificar memoria
$ free -h
total used free shared buff/cache available
Mem: 507Gi 19Gi 482Gi 798Mi 5.6Gi 484Gi
Swap: 31Gi 0B 31Gi
# Verificar espacio en disco
$ df -h
Sistema de archivos Tamaño Usado Disp Uso% Montado en
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 254G 0 254G 0% /dev/shm
tmpfs 102G 792M 101G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/uos-root 69G 11G 54G 17% /
tmpfs 254G 72K 254G 1% /tmp
/dev/sda2 974M 117M 790M 13% /boot
/dev/sda1 599M 22M 578M 4% /boot/efi
/dev/mapper/uos-home 778G 28K 738G 1% /home
tmpfs 51G 16K 51G 1% /run/user/0
/dev/sde 7.3T 28K 6.9T 1% /run/media/root/dfe1ed7b-7ef2-4271-9db7-c8d0bcbf85e5
Configuración del repositorio de paquetes e instalación de dependencias
Actualizar repositorio yum
$ yum clean all
$ yum makecache
$ yum update
Instalar paquetes requeridos
$ yum install -y automake bison bison-devel.sw_64 boost-devel.sw_64 bzip2 bzip2-devel clang cmake diffutils expat-devel.sw_64 file flex gcc gcc-c++ git jemalloc.sw_64 jemalloc-devel.sw_64 graphviz.sw_64 libaio-devel.sw_64 libarchive libcurl-devel.sw_64 libevent-devel.sw_64 libffi-devel libicu-devel libssh libtirpc libtirpc-devel.sw_64 libtool libxml2-devel zstd.sw_64 lz4.sw_64 make ncurses-devel.sw_64 ncurses-libs.sw_64 net-tools numactl numactl-devel.sw_64 openldap-clients.sw_64 openldap-devel.sw_64 openssl openssl-devel pam pam-devel perl perl-Env perl-JSON perl-Time-HiRes psmisc re2-devel.sw_64 readline-devel.sw_64 snappy-devel.sw_64 tar time unzip wget zlib-devel numactl-libs.sw_64 protobuf.sw_64 protobuf-lite protobuf-devel
Algunos paquetes han sido adaptados para compatibilidad con sw_64 y están marcados con la etiqueta correspondiente. Todas las operaciones de sustitución han sido completadas. Si algún paquete no se encuentra, por favor proceda con la sustitución o eliminación correspondiente.
Crear directorio de trabajo
$ mkdir -p /opt/greatsql_sw_build
$ cd /opt/greatsql_sw_build
Descargar código fuente de GreatSQL, boost y patchelf
# Descargar cada paquete de código fuente
curl -kOL -o greatsql-8.4.4-4.tar.xz https://product.greatdb.com/GreatSQL-8.4.4-4/greatsql-8.4.4-4.tar.xz
curl -kOL -o boost_1_77_0.tar.bz2 https://sourceforge.net/projects/boost/files/boost/1.77.0/boost_1_77_0.tar.bz2
curl -kOL -o patchelf-0.14.5.tar.gz https://gitee.com/GreatSQL/GreatSQL-Docker/raw/master/deppkgs/patchelf-0.14.5.tar.gz
# Descomprimir todos los paquetes
tar xf greatsql-8.4.4-4.tar.xz
tar xf patchelf-0.14.5.tar.gz
tar xf boost_1_77_0.tar.bz2
Compilar e instalar patchelf
$ cd /opt/greatsql_sw_build/patchelf-0.14.5 && ./bootstrap.sh && ./configure && make && make install
# Verificar instalación correcta
$ patchelf --version
patchelf 0.14.5
Compilar e instalar rpcgen
Utilizar yum search rpcgan para buscar; si existe el paquete rpcgen.sw_64,可以直接安装即可
Descargar código fuente y descomprimir
# Descargar código fuente
curl -kOL -o rpcsvc-proto-1.4.4.tar.xz https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.4/rpcsvc-proto-1.4.4.tar.xz
# Descomprimir
tar xf rpcsvc-proto-1.4.4.tar.xz
Entrar al directorio del código fuente
$ cd /opt/greatsql_sw_build/rpcsvc-proto-1.4.4
Dado que es una máquina Shenwei y el archivo config.sub no reconoce la arquitectura sw_64, se requiere modificarlo
$ vim config.sub
Agregar identificador sw_64 en la línea 245
# En la línea 245
case $basic_machine in
# Reconocer los tipos básicos de CPU sin nombre de empresa.
# Algunos se omiten aquí porque tienen significados especiales.
1750a | 580 \
# Agregar esta línea | sw_64 \
| sw_64 \
| a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
A continuación se puede compilar e instalar
$ ./configure --build=sw_64
$ make
$ make install
Verificar instalación exitosa
$ rpcgen --version
rpcgen (rpcsvc-proto) 1.4.4
Compilación de GreatSQL
Antes de iniciar la compilación de GreatSQL, es necesario modificar el código fuente para adaptarlo a la plataforma de arquitectura Shenwei:
Dado que GreatSQL ya está adaptado para sw_64, solo es necesario modificar un archivo
$ vim /opt/greatsql_sw_build/greatsql-8.4.4-4/storage/ndb/include/portlib/mt-asm.h +127
Alrededor de la línea 127, o buscar
defined(aarch64)para localizar la posición a modificar
Agregar el siguiente contenido y guardar
#elif defined(__aarch64__) || defined(__sw_64__)
/**
* Usar valores genéricos por defecto para mb(), rmb(), wmb() ver más abajo.
*/
// #define NDB_HAVE_XCNG
#define NDB_HAVE_CPU_PAUSE
#define cpu_pause() __asm__ __volatile__("yield")
A continuación respaldar el código fuente modificado
$ tar zcf greatsql-8.4.4-4.tar.gz greatsql-8.4.4-4
Iniciar compilación
export MAJOR_VERSION=8 && \
MINOR_VERSION=4 && \
PATCH_VERSION=4 && \
RELEASE=4 && \
REVISION=d73de75905d && \
OPT_DIR=/opt/greatsql_sw_build && \
GLIBC=`ldd --version | head -n 1 | awk '{print $NF}'` && \
ARCH=`uname -p` && \
GREATSQL=GreatSQL-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}-UOS-glibc${GLIBC}-${ARCH} && \
MAKELOG=/tmp/greatsql-make.log && \
BOOST="boost_1_77_0" && \
DEST_DIR=${OPT_DIR}/${GREATSQL} && \
cd /opt/greatsql_sw_build/greatsql-8.4.4-4/ && \
rm -fr bld && \
mkdir bld && \
cd bld && \
cmake .. \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCOMPILATION_COMMENT="GreatSQL, Release ${RELEASE}, Revision ${REVISION}" \
-DMAJOR_VERSION=${MAJOR_VERSION} -DMINOR_VERSION=${MINOR_VERSION} -DPATCH_VERSION=${PATCH_VERSION} \
-DBOOST_INCLUDE_DIR=${OPT_DIR}/${BOOST} \
-DLOCAL_BOOST_DIR=${OPT_DIR}/${BOOST} \
-DCMAKE_INSTALL_PREFIX=${DEST_DIR} \
-DWITH_ZLIB=bundled \
-DWITH_NUMA=OFF \
-DWITH_TOKUDB=OFF \
-DWITH_ROCKSDB=OFF \
-DROCKSDB_DISABLE_AVX2=1 \
-DROCKSDB_DISABLE_MARCH_NATIVE=1 \
-DGROUP_REPLICATION_WITH_ROCKSDB=OFF \
-DALLOW_NO_SSE42=ON \
-DMYSQL_MAINTAINER_MODE=OFF \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_NDB=OFF \
-DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF \
-DWITH_NDBCLUSTER=OFF \
-DWITH_UNIT_TESTS=OFF \
-DWITH_SSL=system \
-DOPENSSL_ROOT_DIR=/usr \
-DWITH_SYSTEMD=ON \
-DWITH_AUTHENTICATION_LDAP=OFF \
-DWITH_PAM=OFF \
-DWITH_LIBEVENT=bundled \
-DWITH_LDAP=system \
-DWITH_SYSTEM_LIBS=ON \
-DWITH_LZ4=bundled \
-DWITH_RAPIDJSON=bundled \
-DWITH_ICU=bundled \
-DWITH_ZSTD=bundled \
-DWITH_FIDO=bundled \
-DWITH_KEYRING_VAULT=ON \
-DWITH_PROTOBUF=system \
>> ${MAKELOG} 2>&1 && \
make -j200 >> ${MAKELOG} 2>&1 && \
make -j200 install >> ${MAKELOG} 2>&1
- La compilación requiere muchos recursos de CPU; el tiempo necesario varía según la configuración de la máquina. En una workstation PC ordinaria de 16 núcleos toma aproximadamente 10 minutos.
- Con un servidor de 16 núcleos CPU, se recomienda especificar el parámetro "make -j14" para no ocupar todos los núcleos.
Una vez completado, el paquete binario de GreatSQL se generará en el directorio /opt/greatsql_sw_build:
$ ls
GreatSQL-8.4.4-4-UOS-glibc2.34-sw_64
Esto concluye la compilación del paquete binario de GreatSQL.
Si ocurre algún error durante la compilación, todos los registros se guardarán en el archivo /tmp/greatsql-make.log; puede abrir ese archivo para analizar la causa específica y resolver el probllema.
Instalar GreatSQL
Para la instalación de GreatSQL, consulte el Manual de Usuario de GreatSQL [Instalación de GreatSQL en sistema UOS de Union Tech]
-- Primera entrada requiere cambiar contraseña
greatsql> ALTER USER USER() IDENTIFIED BY 'GreatSQL@2026';
greatsql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.4.4-4 |
+-----------+
1 row in set (0.00 sec)
Con esto se completa la instalación de GreatSQL en la máquina sw_64 :)