Migrer d'une base de données X à une base de données Y en ligne de commandes - 7.3

Guide d'installation Talend

Version
7.3
Language
Français
Operating system
Linux
Subscription type
Souscription
Product
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Studio Talend
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend DQ Portal
Talend ESB
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend MDM Server
Talend MDM Web UI
Talend Repository Manager
Talend Runtime
Talend SAP RFC Server
Content
Installation et mise à niveau
Last publication date
2022-10-30

Vous pouvez vouloir migrer d'une base de données, par exemple H2, vers une autre base de données, par exemple MySQL. Pour ce faire, vous devez utiliser la commande de la MetaServlet nommée migrateDatabase.

Comme la base de données source est mise à jour pendant le processus de migration, il est obligatoire de la sauvegarder avant de la migrer.

L'application MetaServlet se trouve dans le dossier <TomcatPath>/webapps/<TalendAdministrationCenter>/WEB-INF/classes.

Pour afficher l'aide de cette commande (avec les paramètres associés), vous devez saisir ce qui suit dans l'application MetaServlet :

./MetaServletCaller.sh --tac-url=<yourApplicationURL> -h migrateDatabase

Pour plus d'informations concernant l'application MetaServlet, consultez le Guide d'utilisation de Talend Administration Center.

Avertissement : Lorsque vous migrez depuis PostgreSQL ou MSSQL/SQLServer, le nom de la base de données et du schéma doit correspondre à celui d'une base de données source.

Ci-dessous, un exemple de migration entre une base données H2 et une base de données MySQL.

Pour pouvoir utiliser cette commande, vous devez au préalable la mettre sur une seule ligne.

./MetaServletCaller.sh --tac-url http://localhost:8080/org.talend.administrator --json-params='{"actionName":"migrateDatabase","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"tisadmin","sourceUrl":"jdbc:h2:/home/Talend/<version>/tac/apache-tomcat/webapps/org.talend.administrator/WEB-INF/database/talend_administrator","sourceUser":"tisadmin","targetPasswd":"root","targetUrl":"jdbc:mysql://localhost:3306/base","targetUser":"root"}'
Avertissement :
  • Encode des caractères spéciaux dans l'URL de la base de données source/cible. Par exemple, encodez & comme %26 et ; comme %3B.
  • Utilisez les guillemets simples pour *json-params, par exemple :
    ./MetaServletCaller.sh --tac-url http://192.168.30.36:8080/org.talend.administrator-7.3.1/ -v --json-params='{"actionName":"migrateDatabase","skipBackup":"true","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"root","sourceUrl":"jdbc:mysql://mysql-8:3306/tac?useSSL=false%26serverTimezone=UTC%26allowPublicKeyRetrieval=true","sourceUser":"root","targetPasswd":"Root1234!","targetUrl":"jdbc:sqlserver://mssql-2017:1433%3BdatabaseName=tac","targetUser":"sa"}'

Cas d'utilisation : Migrer d'une base de données X à une base de données Y à l'aide de la MetaServlet

Les exemples utilisent les conventions suivantes :

URL de Talend Administration Center

http://tac.test.fr:8081/org.talend.administrator/
DB config password: admin 

MySQL

user: mysql8
password: mysqlpass
database: mysql
database server: mysql8.test.fr
jdbc:mysql://mysql8.test.fr:3306/mysql_source?useSSL=false&allowPublicKeyRetrieval=true

MSSQL2017

user: SA
password: MSSQLpass2017
database: MSSQL
database server: mssql2017.test.fr
jdbc:sqlserver://mssql2017.test.fr:1433;databaseName=MSSQL_DEST

Dossier Tomcat recommandé

Vous pouvez stocker tous les pilotes JDBC que vous utilisez dans le dossier suivant : tac/apache-tomcat/endorsed ou, selon Tomcat, <TomcatPath>/webapps/org.talend.administrator/WEB-INF/lib.

Redémarrez Tomcat si vous ajoutez un pilote.

Remarque : Dans la chaîne de caractères JDBC (entre guillemets simples '), les caractères spéciaux doivent être échappés. Le comportement est similaire lors de l'utilisation d'un point-virgule (;) ou d'autres caractères spéciaux.

Par exemple, sous Linux :

'jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false&allowPublicKeyRetrieval=true'

Cela doit être saisi comme ceci :

'jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false\&allowPublicKeyRetrieval=true'

Migration de MySQL à MySQL

Exécutez la commande suivante :

mysql> drop database mysql_dest;
Query OK, 12 rows affected (0.10 sec)
                
mysql> create database mysql_dest;
Query OK, 1 row affected (0.00 sec)
                
mysql> grant ALL PRIVILEGES on *.* to 'mysql8'@'%';
Query OK, 0 rows affected (0.01 sec)
# /opt/Talend/tac/apache-tomcat/webapps/org.talend.administrator/WEB-INF/classes/MetaServletCaller.sh 
--tac-url http://tac.test.fr:8081/org.talend.administrator/ -v 
--json-params='{"actionName":"migrateDatabase","skipBackup":"true","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"mysqlpass","sourceUrl":"jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false\&allowPublicKeyRetrieval=true","sourceUser":"mysql8","targetPasswd":"mysqlpass","targetUrl":"jdbc:mysql://mysql8.test.fr:3306/mysql_dest?useSSL=false\&allowPublicKeyRetrieval=true","targetUser":"mysql8"}'
                
                
-> URL: http://tac.test.fr:8081/org.talend.administrator/
-> Json parameters:
                
{
"actionName": "migrateDatabase",
"dbConfigPassword": "admin",
"mode": "synchronous",
"skipBackup": "true",
"sourcePasswd": "mysqlpass",
"sourceUrl": "jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false&allowPublicKeyRetrieval=true",
"sourceUser": "mysql8",
"targetPasswd": "mysqlpass",
"targetUrl": "jdbc:mysql://mysql8.test.fr:3306/mysql_dest?useSSL=false&allowPublicKeyRetrieval=true",
"targetUser": "mysql8"
}
-> Complete request: http://tac.test.fr:8081/org.talend.administrator//metaServlet?eyJhY3Rpb25OYW1lIjoibWlncmF0ZURhdGF...
{"executionTime":{"millis":20052,"seconds":20},"returnCode":0}
          

Migration de MySQL à MSSQL

Si vous migrez vers MSSQL/SQLServer, le nom de la base de données source et de la base de données cible doit être dbo. La base de données source dbo doit être la base de données active de Talend Administration Center.

Utilisez la commande suivante pour créer une base de données et un schéma de destination :

$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P MSSQLpass2017
1> CREATE DATABASE dbo;
2> go   
# /opt/Talend/tac/apache-tomcat/webapps/org.talend.administrator/WEB-INF/classes/MetaServletCaller.sh 
--tac-url http://tac.test.fr:8081/org.talend.administrator/ -v 
--json-params='{"actionName":"migrateDatabase","skipBackup":"true","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"mysqlpass","sourceUrl":"jdbc:mysql://mysql8.test.fr:3306/dbo?useSSL=false\&allowPublicKeyRetrieval=true","sourceUser":"mysql8","targetPasswd":"MSSQLpass2017","targetUrl":"jdbc:jtds:sqlserver://mssql2017.test.fr:1433/dbo","targetUser":"SA"}'
            
            
-> URL: http://tac.test.fr:8081/org.talend.administrator/
-> Json parameters:
{
"actionName": "migrateDatabase",
"dbConfigPassword": "admin",
"mode": "synchronous",
"skipBackup": "true",
"sourcePasswd": "mysqlpass",
"sourceUrl": "jdbc:mysql://mysql8.test.fr:3306/dbo?useSSL=false&allowPublicKeyRetrieval=true",
"sourceUser": "mysql8",
"targetPasswd": "MSSQLpass2017",
"targetUrl": "jdbc:jtds:sqlserver://mssql2017.test.fr:1433/dbo",
"targetUser": "SA"
}
-> Complete request: http://tac.test.fr:8081/org.talend.administrator//metaServlet?eyJhY3Rpb25OYW1lIjoibWlncmF0ZURhdGF...
{"executionTime":{"millis":20062,"seconds":20},"returnCode":0}
        

Migration de MySQL à MySQL

Exécutez la commande suivante :

# /opt/Talend/tac/apache-tomcat/webapps/org.talend.administrator/WEB-INF/classes/MetaServletCaller.sh 
--tac-url http://tac.test.fr:8081/org.talend.administrator/ -v 
--json-params='{"actionName":"migrateDatabase","skipBackup":"true","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"MSSQLpass2017","sourceUrl":"jdbc:jtds:sqlserver://mssql2017.test.fr:1433/mssql_test","sourceUser":"SA","targetPasswd":"mysqlpass","targetUrl":"jdbc:mysql://mysql8.test.fr:3306/mysql_dest?useSSL=false\&allowPublicKeyRetrieval=true","targetUser":"mysql8"}'
                
                
-> URL: http://tac.test.fr:8081/org.talend.administrator/
-> Json parameters:
{
"actionName": "migrateDatabase",
"dbConfigPassword": "admin",
"mode": "synchronous",
"skipBackup": "true",
"sourcePasswd": "MSSQLpass2017",
"sourceUrl": "jdbc:jtds:sqlserver://mssql2017.test.fr:1433/mssql_test",
"sourceUser": "SA",
"targetPasswd": "mysqlpass",
"targetUrl": "jdbc:mysql://mysql8.test.fr:3306/mysql_dest?useSSL=false&allowPublicKeyRetrieval=true",
"targetUser": "mysql8"
}
-> Complete request: http://tac.test.fr:8081/org.talend.administrator//metaServlet?eyJhY3Rpb25OYW1lIjoibWlncmF0ZURhdGF...
{"executionTime":{"millis":28108,"seconds":28},"returnCode":0}