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

Guide d'installation de Talend Big Data pour Windows

EnrichVersion
7.0
EnrichProdName
Talend Big Data
task
Installation et mise à niveau
EnrichPlatform
Studio Talend
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend Runtime

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.bat --tac-url=<yourApplicationURL> -h migrateDatabase

Pour plus d'informations concernant l'application MetaServlet, consultez le Guide utilisateur 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.bat --tac-url http://localhost:8080/org.talend.administrator --json-params='{"actionName":"migrateDatabase","dbConfigPassword":"admin","mode":"synchronous","sourcePasswd":"tisadmin","sourceUrl":"'jdbc:h2:C:/Talend/6.4.1/tac/apache-tomcat-8.0.20/webapps/org.talend.administrator/WEB-INF/database/talend_administrator'","sourceUser":"tisadmin","targetPasswd":"root","targetUrl":"'jdbc:mysql://localhost:3306/base'","targetUser":"root"}'
Avertissement : L'utilisation des guillemets simples dans la valeur des paramètres sourceURL et targetURL est requise sous Windows.

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:jtds:sqlserver://mssql2017.test.fr:1433/MSSQL_DEST

Dossier Tomcat recommandé

Dans le dossier Tomcat recommandé, vous pouvez stocker tous les pilotes JDBC que vous utilisez. Redémarrez Tomcat si vous ajoutez un pilote.

# pwd
/opt/Talend/tac/apache-tomcat/endorsed

# ls -al
total 2588
drwxr-xr-x 2 root root 67 Dec 14 16:02 .
drwxr-xr-x 16 usertest 1001 300 Dec 14 14:11 ..
-rw-r--r-- 1 root root 317816 Jun 8 2013 jtds-1.3.1.jar
-rw-r--r-- 1 root root 2330539 Sep 8 02:09 mysql-connector-java-8.0.18.jar
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://tac721.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 :

[dbuser@mssql2017 ~]$ /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}