データベースXからデータベースYに移行
あるデータベースから別のデータベース(H2からMySQLなど)に移行を行う場合、migrateDatabaseというMetaServletコマンドを使用する必要があります。
移行プロセス中にソースデータベースがアップデートされるため、移行前にバックアップすることが必要です。
MetaServlet アプリケーションは、<TomcatPath>/webapps/<TalendAdministrationCenter>/WEB-INF/classesフォルダーにあります。
このコマンド(と関連パラメーター)のヘルプを表示するには、次をMetaServletアプリケーションに入力する必要があります。
MetaServletCaller.bat --tac-url=<yourApplicationURL> -h migrateDatabase
MetaServletアプリケーションの詳細は、Non-GUI operation in metaServletをご覧ください。
下記に、データベースH2とMySQLデータベース間の移行例を示します。
このコマンドを使用できるようにするには、先頭行に記述する必要があります。
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'}"
ユースケース: MetaServletを使ってデータベースXからデータベースYに移行
ここでの例では次の規則が適用されます。
Talend Administration Center URL
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
Tomcat endorsedフォルダー
使用しているJDBCドライバーはすべて、tac\apache-tomcat\endorsedフォルダー(Tomcatによっては <TomcatPath>\webapps\org.talend.administrator\WEB-INF\libフォルダー)に保存できます。
ドライバーを追加したらTomcatを再起動してください。
たとえばLinuxで:
'jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false&allowPublicKeyRetrieval=true'
とあれば、以下のように書き直す必要があります。
'jdbc:mysql://mysql8.test.fr:3306/mysql?useSSL=false\&allowPublicKeyRetrieval=true'
MySQLからMySQLへの移行
以下のコマンドを使用します。
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}
MySQLからMSSQLへの移行
MSSQL/SQLServerに移行する場合、ソースデータベースとデスティネーションデータベースの名前をdboにする必要があります。dboソースデータベースはアクティブなTalend Administration Centerデータベースであることが必要です。
以下のコマンドを使ってデスティネーションデータベースとスキーマを作成します。
\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}
MSSQLからMySQLへの移行
以下のコマンドを使用します。
# 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}