Accéder au contenu principal Passer au contenu complémentaire

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

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 la MetaServlet, consultez Opérations sans interface graphique dans la MetaServlet.

Note InformationsAvertissement : 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\<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'}"
Note InformationsAvertissement : 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: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.

Note InformationsConseil : Dans la chaîne de caractères JDBC, les caractères spéciaux entre guillemets simples ( ' ) doivent être échappés. C'est également le cas 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)
# Talend\tac\apache-tomcat\webapps\org.talend.administrator\WEB-INF\classes\MetaServletCaller.bat 
--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 :

\mssql-tools\bin\sqlcmd -S localhost -U SA -P MSSQLpass2017
1> CREATE DATABASE dbo;
2> go 
# Talend\tac\apache-tomcat\webapps\org.talend.administrator\WEB-INF\classes\MetaServletCaller.bat 
--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 :

# Talend\tac\apache-tomcat\webapps\org.talend.administrator\WEB-INF\classes\MetaServletCaller.bat 
--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}

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.