Guía de compilación e instalación de GreatSQL en arquitectura Shenwei (SW_64)

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


  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.
  2. 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 :)

Etiquetas: GreatSQL MySQL shenwei sw64 uos

Publicado el 7-14 03:30