Gestión de seguridad y usuarios de la base de datos gaussdb [configurar el entorno del sistema operativo] [06]

1. Usuarios del sistema de planificación

Modifique el nombre de usuario y cambie el nombre de usuario "gaussdba" a "gauss".

usermod -l gauss gaussdba

Bloquea al usuario "gauss" para que no pueda iniciar sesión.

usermod -L gauss

Desbloquee la cuenta de usuario "gauss" para que pueda iniciar sesión.

usermod -U gauss

Comprueba si la cuenta ha caducado

chage -l gauss

Configurar la cuenta para que nunca caduque

chage -M 99999 gauss

eliminar usuarios

userdel  -r gauss

Descripción:

  • El comando userdel puede eliminar cuentas de usuario y archivos relacionados. Si no se agrega ningún parámetro, solo se eliminará la cuenta de usuario y los archivos relacionados no se eliminarán.
  • Antes de eliminar una cuenta de usuario, asegúrese de que se haya desinstalado GaussDB.

2. Configure la memoria compartida y los semáforos

Información de contexto

  • GaussDB usa un semáforo max_connections para cada conexión permitida . Tiene un conjunto de 16, y cada conjunto también contiene el semáforo 17, que almacena un "número mágico" para detectar si entra en conflicto con otros conjuntos de semáforos.
  • Si falta este mecanismo, se producirá un error de llamada ilegal al sistema cuando se inicie el servidor, y el kernel solo se puede volver a configurar en este momento.
  • GaussDB se negará a iniciarse si excede uno de los límites estrictos de los recursos de IPC y deja un mensaje de error que le indica qué problemas encontró y qué se debe hacer al respecto.
  • Necesita reiniciar la máquina o recompilar el kernel para modificar esta configuración.
Nombre del parámetro Descripción de parámetros Valor razonable
SHMMAX Tamaño máximo del segmento de memoria compartida (bytes) Consulte la descripción del parámetro en este artículo.
SHMMIN Tamaño mínimo del segmento de memoria compartida (bytes) 1
SHMALL La cantidad total de memoria compartida disponible (bytes o páginas) Si es un byte, el valor es el mismo que SHMMAX, si es una página, el valor es ceil (SHMMAX / PAGESIZE).

Descripción:
puede utilizar el comando getconf PAGESIZE para ver el número de bytes en una página.
SHMSEG Número máximo de segmentos de memoria compartida por proceso Solo se requiere 1 segmento.
SHMMNI Número máximo de segmentos de memoria compartida en todo el sistema Similar a SHMSEG más espacio para otras aplicaciones.
SEÑALES Número máximo de conjuntos de señales techo (máx_conexiones / 16)。
SEMMNS Número máximo de semáforos en todo el sistema ceil (max_connections / 16) * 17 más espacio para otras aplicaciones.
SEMMSL Número máximo de semáforos por juego de semáforos 17。
SEMMAP Número de registros en el mapa de semáforos Consulte la descripción del parámetro en este artículo.
SEMVMX Valor máximo del semáforo El valor predeterminado es 32767.

Descripción de parámetros :

  • SHMMAX
    es el tamaño del segmento máximo de memoria compartida registrado en bytes. Si recibe un mensaje de error como Argumento no válido de shmget, es probable que supere el límite de este parámetro.

  • SHMALL
    Este valor es igual a la combinación de GaussDB más otras aplicaciones que utilizan segmentos de memoria compartida.

  • Nota:
    SHMALL usa el número de páginas en muchos sistemas, no el número de bytes.


  • El parámetro SHMMIN es de aproximadamente 500 KB para GaussDB.


  • El parámetro SEMMNS establece el número máximo de semáforos en el sistema, este valor debe ser al menos tan grande como el parámetro max_connections y debe agregarse uno por cada 16 conexiones (ver Tabla de parámetros del Sistema V IPC).


  • El parámetro SEMMNI determina el número de conjuntos de semáforos que pueden existir en el sistema al mismo tiempo. Debe ser al menos ceil (max_connections / 16).

  • El
    parámetro SEMMA determina el tamaño del espacio para almacenar el mapeo del semáforo. Cada semáforo tiene un mapeo en este espacio. Si este espacio está lleno de fragmentos, el semáforo disponible será menor de lo que debería ser.


  • El parámetro SEMMSL determina cuántas señales luminosas puede haber en un conjunto de señales luminosas y es 17 en GaussDB.

Problema : la configuración predeterminada solo es adecuada para instalaciones pequeñas (la memoria compartida máxima predeterminada es 1024 MB). El segmento máximo de memoria compartida se puede configurar de dos formas. Por ejemplo, para establecer el segmento máximo de memoria compartida en 4G o 1048576 páginas, existen dos métodos de la siguiente manera.

Método 1: use la interfaz sysctl para configurar, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Utilice la interfaz sysctl para modificar.

sysctl -w kernel.shmmax=4294967296
sysctl -w kernel.shmall=1048576

Método 2: Modifique el archivo sysctl.conf, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Abra sysctl.conf con el editor vi y agregue los siguientes parámetros del kernel.

 vi  /etc/sysctl.conf
 kernel.shmmax = 4294967296
 kernel.shmall = 1048576

Ejecute el siguiente comando para leer automáticamente los parámetros del kernel cuando se inicia Linux.

 /sbin/chkconfig boot.sysctl on

Ejecute los siguientes comandos para que los parámetros del kernel surtan efecto.

 /sbin/sysctl -p

3. Establecer límites de recursos

El kernel de Linux generalmente tiene algunas restricciones de recursos en todo el sistema, que pueden interferir con el funcionamiento del servidor GaussDB.

Información de contexto

  • Algunos sistemas permiten que procesos independientes abran muchos archivos, pero si muchos procesos abren muchos archivos al mismo tiempo, pronto se alcanzará el límite superior especificado por el sistema. En este momento, puede establecer el parámetro de configuración max_files_per_process de GaussDB para limitar el número máximo de archivos abiertos por proceso.
  • El número máximo de archivos que el sistema puede abrir es fijo al compilar el kernel de Linux. Cada conexión al servidor GaussDB usa un proceso, por lo que el número máximo de archivos que se pueden abrir debe ser igual al número de procesos más el número requerido por otras partes del sistema.

Problema : hay dos formas de establecer el número máximo de archivos que puede abrir el sistema.

Método 1: Modifique el archivo file-max, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Modifique el archivo file-max.

 vi /proc/sys/fs/file-max 

Método 2: agregue el parámetro fs.file-max en /etc/sysctl.conf, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Agregue este parámetro en el archivo de configuración del kernel "/etc/sysctl.conf".

vi /etc/sysctl.conf
fs.file-max = 4866970

Ejecute el siguiente comando para leer automáticamente los parámetros del kernel cuando se inicia Linux.

 /sbin/chkconfig boot.sysctl on

Ejecute los siguientes comandos para que los parámetros del kernel surtan efecto.

 /sbin/sysctl -p

4. Configure Overcommit para la memoria de Linux

Para evitar quedarse sin memoria virtual y causar la finalización del proceso del servidor GaussDB, debe configurar la sobrecomisión de memoria de Linux.

Información de fondo
Si el kernel termina el proceso del servidor GaussDB debido a la presión de la memoria, verá información del kernel como la siguiente:Memoria insuficiente: proceso eliminado 12345 (gaussdb)En este momento, la conexión de datos existente funcionará normalmente, pero la nueva conexión no se puede establecer. Reiniciar GaussDB puede resolver el problema. Sin embargo, para evitar este problema, debe ejecutar GaussDB en una máquina con memoria suficiente o modificar el comportamiento de la memoria para resolverlo.

Problema : hay dos formas de modificar el comportamiento de la memoria.

Método 1: use sysctl para seleccionar un modo de sobreasignación estricta, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Configure el modo de envío, el comando es el siguiente.

 /sbin/sysctl  -w vm.overcommit_memory=2

Método 2: establezca el parámetro vm.overcommit_memory en /etc/sysctl.conf, los pasos de operación son los siguientes.

Inicie sesión en el sistema operativo Linux como usuario root. Utilice el editor vi para escribir el parámetro de configuración vm.overcommit_memory en sysctl.conf, el comando es el siguiente:

vi /etc/sysctl.conf
vm.overcommit_memory = 2

Ejecute el siguiente comando para leer automáticamente los parámetros del kernel cuando se inicia Linux.

 /sbin/chkconfig boot.sysctl on

Ejecute los siguientes comandos para que los parámetros del kernel surtan efecto.

 /sbin/sysctl -p

5. Ejemplos

No se puede iniciar la base de datos, el error es el siguiente

**FATAL**: could not create semaphores: 设备上没有空间(pg_sema.c:123)
**DETAIL**: Failed system call was semget (5432129.17.03600)
**HINT**: This error does "not" mean that you have run out of disk...(SEMMNS)...(SEMMIN)...

Solución

vim  /etc/sysctl.conf  
# 追加或修改
kernel.sem = 250 256000 32 1024

# 加载生效
sysctl -p

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/109599388
Recomendado
Clasificación