Recuerde una migración de la base de datos del entorno TEST

antecedentes

La empresa ha construido su propia plataforma PAAS, que puede soportar el proceso de CI / CD. Nuestro proceso de lanzamiento es mit-> test-> uat-> prod. Correspondientes a los entornos de desarrollo, pruebas, aceptación y producción, respectivamente, y los entornos están aislados entre sí.

Existe una base de datos histórica solo disponible en el entorno TEST. Para facilitar la depuración, es necesario copiar una copia al entorno MIT. A continuación se muestra un registro de los problemas encontrados.
Inserte la descripción de la imagen aquí

Método de migración de datos seguro y confiable

herramienta

Artículos recomendados: https://www.cnblogs.com/swtjavaspace/p/9698167.html

navicat usando Herramientas -> La transmisión de datos puede poner fácilmente una máquina en otra sincronización de la base de datos de la máquina (e incluyendo estructuras de datos)
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Problemas de encuentro

Obtuve un paquete más grande que 'max_allowed_packet' bytes Con declaración

Si el contenido de una tabla de base de datos es demasiado grande, fallará. En este momento, puede modificar la configuración de la base de datos.

vim /etc/my.conf  # windows下是my.ini

# [mysqld]下加入一行 注意是mysqld
max_allowed_packet=16M

systemctl restart mariadb # 然后重启mysql

Reiniciar mysql

systemctl restart mariadb

Ejecute la declaración para ver si surte efecto:

MariaDB [(none)]> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 16777216   |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.00 sec)

16777216 representa 16M y el valor predeterminado es 1024.

Valor predeterminado no válido para la solución de error "CREATE_TIME"

Inserte la descripción de la imagen aquí
Un campo en la tabla de origen es del tipo de fecha y hora y el valor predeterminado usa CURRENT_TIMESTAMP para generar la hora predeterminada. Se informó un error durante la importación. Según la información en línea, esta función debe ser compatible con mysql5.7 o superior:

Ver la versión de mysql

[root@10-0-59-117 ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 253
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Opción 1: actualice mysql 5.7 y superior.
Solución 2: modifique el valor predeterminado CURRENT_TIMESTAMP a NULL.
Opción tres: omitir.

Debido a que algunas tablas no son prácticas, elegí la opción 3 y omití las tablas de informes de errores al transferir datos. Si es necesario más adelante, exporte e importe manualmente para realizar correcciones.

Referencia:
https://www.jianshu.com/p/2f30786a5a6a
https://www.cnblogs.com/han-1034683568/p/11418264.html

Ignorar mayúsculas y minúsculas en los nombres de las tablas

dos't not exist bi_sqa.sys_log

Una vez completada la migración, inicie el servicio y pregunte si el nombre de la tabla no existe. Después de verificar el código que se encuentra dentro usando el nombre de la tabla en mayúsculas , y en Linux, mysql no está habilitado de forma predeterminada, ignora la función de distinción entre mayúsculas y minúsculas del nombre de la tabla.

En mysql.conf, el mysqld agrega la siguiente configuración, luego puede reiniciar mysql.

[mysqld]
lower_case_table_names=1

Comprueba si funciona

MariaDB [(none)]>  show variables like "%case%";
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

Si se muestra 1 , significa que está bien.

Se recomienda utilizar nombres de tablas en minúsculas.

Si habilita lower_case_table_names , el sistema utilizando todos los nombres de tabla en minúsculas, si aparece en mayúsculas nombre de la tabla, se le solicitará un problema inexistente.

Por lo tanto, si hay muchos módulos del sistema, que involucran múltiples lenguajes de desarrollo (C ++ / JAVA), etc., se recomienda usar los nombres de las tablas en minúsculas para evitar algunos problemas de antemano.

Supongo que te gusta

Origin blog.csdn.net/xmcy001122/article/details/105585374
Recomendado
Clasificación