データベースXからデータベースYへの移行 - 7.2

Windows版Talend Big Data Platformインストールガイド

EnrichVersion
7.2
EnrichProdName
Talend Big Data Platform
task
インストールとアップグレード
EnrichPlatform
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend DQ Portal
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend Repository Manager
Talend Runtime
Talend SAP RFC Server
Talend Studio

あるデータベースから別のデータベース(H2からMySQLなど)に移行を行う場合、migrateDatabaseというMetaServletコマンドを使用する必要があります。

移行プロセス中にソースデータベースが更新されるため、移行前にバックアップすることが必要です。

MetaServlet アプリケーションは、<TomcatPath>/webapps/<TalendAdministrationCenter>/WEB-INF/classesフォルダーにあります。

このコマンド(と関連パラメーター)のヘルプを表示するには、次をMetaServletアプリケーションに入力する必要があります。

MetaServletCaller.bat --tac-url=<yourApplicationURL> -h migrateDatabase

MetaServletアプリケーションの詳細は、Talend Administration Centerユーザーガイドを参照してください。

警告: PostgresqlやMSSQL/SQLServerへ移行する場合は、データベースとスキーマ名がソースデータベース名と一致する必要があります。

下記に、データベース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/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"}'
警告: sourceURLおよびtargetURLパラメーター値の単一引用符はWindowsでは必須です。

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

Tomcat endorsedフォルダー

Tomcat endorsedフォルダーには使用中のJDBCドライバーをすべて保存できます。ドライバーを追加したらTomcatを再起動してください。

# 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
注: 一重引用符( ' )で囲まれているJDBC文字列では、特殊文字をすべてエスケープ処理する必要があります。この動作はセミコロン( ; )やその他の特殊文字を使う時も同様です。

たとえば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)
# /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}
            

MySQLからMSSQLへの移行

MSSQL/SQLServerに移行する場合、ソースデータベースとデスティネーションデータベースの名前をdboにする必要があります。dboソースデータベースはアクティブなTalend Administration Centerデータベースであることが必要です。

以下のコマンドを使ってデスティネーションデータベースとスキーマを作成します。

[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}
        

MSSQLからMySQLへの移行

以下のコマンドを使用します。

# /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}