fondo
Anteriormente, me encontré con la necesidad SQLServer
de migrar una base de datos en línea de conversión a MySQL
.Hay más de 70 tablas de datos y la cantidad total de datos no es grande. Desde Internet hay muchos usos recomendados SQLyog
, y los hay Oracle MySQL Server
oficiales Workbench
para la migración, pero los pasos son un poco engorrosos, más adelante encontré DB2DB
esta herramienta en un rincón de un artículo, que viene de Misoft Technology.
Introducción oficial: DB2DB
se utiliza para la conversión de datos entre varias bases de datos principales. La primera versión se desarrolló en 2015. Después de muchos años de iteraciones del producto, ha pasado la verificación de más de 400 clientes. Es un producto maduro y práctico. En términos de funciones de software, la versión actual 1.30.107
admite la migración y conversión mutua de 6 bases de datos, como SQLServer
, MySQL
, SQLite
, Access
, SQLServer CE
, , etc., lo cual es suficiente. PostgreSQL
Para el proceso de migración específico, consulte: Experiencia de la herramienta de conversión de base de datos heterogénea: conversión de datos de SQLServer y migración a MySQL
Sin embargo, se debe tener en cuenta que después de la descarga, la herramienta de DB2DB
esta CS
arquitectura es una versión no autorizada (versión de prueba) por defecto, con un límite de 50,000 registros , en este caso, si la base de datos de origen tiene una gran cantidad de datos, debe pagar para comprar la licencia.
Primero, presentemos al protagonista de este proceso de migración: ETLCloud , que reconstruye la arquitectura de fusión de datos empresariales, resuelve varias necesidades de integración de datos complejas, instantáneas y altamente compatibles, y cubre una cobertura integral: desarrollo de tareas, programación de tareas, análisis de relaciones consanguíneas, gestión de calidad de datos, desarrollo de servicios de datos y monitoreo de tareas. Hoy, el mismo trabajo de migración que el anterior se puede completar a través de la versión de la herramienta de integración de datos basada en la arquitectura de microservicio BS
: ETLCloud Community Edition .
práctica de migración
A continuación, ingrese a nuestra práctica de migración: todo el proceso es de código cero, visualizado, arrastrar y soltar, y la migración por lotes de tablas de datos heterogéneos se puede completar con un clic del mouse. ¡Lo más importante es que la versión comunitaria es gratuita!
Nota: Aquí se selecciona la versión de la comunidad y Docker
el método de implementación es liviano y de inicio rápido: docker pull ccr.ccs.tencentyun.com/restcloud/restcloud-etl:V2.2
.
Configuración de la fuente de datos
SQLServer
y MySQL
son ETLCloud
fuentes de datos integradas compatibles con la edición de la comunidad, simplemente cree una nueva fuente de datos directamente.
- Configurar origen: SQL Server
Cree una nueva fuente de datos, selecciónela SQLServer
y complete la información de IP: puerto y contraseña de usuario.
La conexión de prueba es exitosa ~
- Configurar sumidero: MySQL
Cree una nueva fuente de datos, selecciónela MySQL
y complete la información de IP: puerto y contraseña de usuario.
La conexión de prueba es exitosa ~
Crear aplicaciones y procesos
Cree una aplicación y complete la información de configuración básica de la aplicación. Luego, cree un flujo de datos y complete la información.
Después de crear el proceso, puede hacer clic en el botón "Diseño del proceso" para ingresar a la página de configuración de visualización del proceso.
Proceso de configuración visual
Antes de configurar el proceso, presente brevemente las distintas áreas de esta página de configuración: el lado izquierdo es el área de componentes, la parte superior central es el área funcional y la mayor parte del medio es el área de dibujo del proceso. Haga doble clic en el componente en el área de dibujo y podrá ver el área de elementos de configuración detallada del componente que aparece en un estilo de cajón.
- Entrada por lotes de tabla de base de datos: SQLServer
En el componente de sincronización de la tabla de biblioteca a la izquierda, seleccione "Tabla de biblioteca de entrada por lotes", arrástrelo al área de dibujo del proceso central y haga doble clic para ingresar a la etapa de configuración.
SQLServer
Paso 1: Seleccione la fuente de datos que hemos configurado , aquí seleccione el método de lectura página por página, y el usuario puede estar vacío.
Paso 2: puede cargar SQLServer
tablas y vistas existentes en , hay 74 tablas y 4 vistas en total.
De acuerdo con las necesidades, seleccione la tabla de datos que desea migrar, seleccione todas las tablas y vistas aquí y guarde.
- Salida por lotes de la tabla de la base de datos: MySQL
En el componente de sincronización de la tabla de la biblioteca a la izquierda, seleccione "Salida por lotes de la tabla de la biblioteca", arrástrelo al área de dibujo del proceso central y haga doble clic para ingresar a la etapa de configuración.
Paso 1: seleccione la fuente de datos MySQL que configuramos.
Paso 2: Opciones de salida configurables: si borrar los datos de la tabla, si construir automáticamente la tabla, cómo actualizar los datos, etc.
- Mejorar el proceso
Finalmente, al 流程线
conectar el inicio , la entrada por lotes de la tabla de la base de datos , la salida por lotes de la tabla de la biblioteca y los componentes finales respectivamente, se completa la configuración visual de la migración de datos de la tabla de la base de datos por lotes.
ejecutar proceso
Guarde el proceso y ejecútelo; luego puede ver el registro del proceso correspondiente y monitorear visualmente el progreso de la migración.
registro de problemas
Por supuesto, todo el proceso de migración no es un proceso único, se encontraron varios problemas en la configuración de la fuente de datos y los enlaces de migración, que se registran a continuación.
SQLServer
La fuente de datos informó un error de conexión debido a unJDK
problema con la versión del cliente
Descripción del problema: la conexión falló (el controlador no pudo establecer una conexión segura con SQL Server mediante el uso de cifrado de Capa de sockets seguros (SSL). Error: " La versión de protocolo TLS10 seleccionada por el servidor no es aceptada por las preferencias del cliente [TLS12]". es demasiado bajo, y la versión del cliente debe
reducirse para adaptarse . Primero ingrese al contenedor y navegue hasta el archivo.TLS12
TLS10
jdk/jre/lib/security/java.security
jdk.tls.disabledAlgorithms
java.security
# 进入容器
[root@etl ~]# docker exec -it de63b29c71d0 /bin/bash
# 查看ETLCloud容器中自带的jdk版本信息
root@de63b29c71d0:/usr# java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
# 定位到java.security文件
root@de63b29c71d0:/usr# which java
/usr/jdk/bin/java
root@de63b29c71d0:/usr# ls
bin games include jdk lib local sbin share src start.sh tomcat velocity.log
root@de63b29c71d0:/usr# cd jdk/jre/lib/security/
root@de63b29c71d0:/usr/jdk/jre/lib/security# ls
blacklist blacklisted.certs cacerts java.policy java.security javaws.policy policy public_suffix_list.dat trusted.libraries
root@de63b29c71d0:/usr/jdk/jre/lib/security# vi java.security
bash: vi: command not found
Sin embargo, dado que el contenedor no proporciona vi
el comando, el archivo del contenedor primero se /usr/jdk/jre/lib/security/java.security
copia en el host y luego se vuelve a copiar en el contenedor después de la modificación.
# 从容器中复制文件到宿主机
[root@etl opt]# docker cp de63b29c71d0://usr/jdk/jre/lib/security/java.security /opt/
Successfully copied 58.9kB to /opt/
# 修改配置文件
[root@etl opt]# vi java.security
删除jdk.tls.disabledAlgorithms中的TLS1.*算法配置
# 从宿主机复制文件到容器中
[root@etl opt]# docker cp /opt/java.security de63b29c71d0://usr/jdk/jre/lib/security/
Successfully copied 58.9kB to de63b29c71d0://usr/jdk/jre/lib/security/
MySQL
La fuente de datos informa de un error de conexión debido a problemas de permisos de la tabla de la base de datos
Descripción del problema: Access denied for user 'root'@'%' to database qwert
.
Solución: habilite el acceso remoto a la base de datos de destino y configure permisos, como la creación de tablas.
grant create,alter,drop,index,select,insert,update,delete on qwert.* to root@'%' identified by 'root';
flush PRIVILEGES;
ELTCloud
Al leerSQLServer
la tabla,DateTime
el campo del tipo será reconocido comoTimeStamp
el tipo, dando como resultadoMySQL
un error al escribir datos de fecha en
Descripción del problema: Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1753-01-01 12:00:00' for column 'ErrorTime' at row 1
.
Solución: Modifique el proceso de migración. En la configuración del componente de entrada por lotes de la tabla de la biblioteca, primero configure solo la estructura de la tabla para sincronizarla; después de que el proceso de ejecución complete la sincronización de la estructura de la tabla, cambie manualmente el tipo al tipo en el MySQL
terminal .TimeStamp
DateTime
Resumir
Lo anterior se basa en ETLCloud
el componente de sincronización de la tabla de la base de datos para realizar la migración por lotes de tablas de datos heterogéneas y completar la práctica de migración de datos desde SQLServer
la MySQL
tabla de la base de datos, que es simple, directa y efectiva; además, también registra varios problemas y soluciones relacionados con la configuración durante el proceso de migración. CS
En comparación con el tipo de herramientas de migración utilizadas anteriormente , ETLCloud
la interfaz es más amigable y fácil de usar, y las funciones de la versión comunitaria son lo suficientemente potentes.
Referencia
Si tiene alguna pregunta o se encuentra algún error, no dude en ponerse en contacto conmigo.
¡Tus comentarios y sugerencias son bienvenidos!