2つのデータベースのスキーマの比較

アプリケーションを開発するときに、2つのデータベース(たとえば、prodとdev)を比較する必要がある場合があります。

この問題を解決するには、db構造でダンプファイルを作成してからdiffを使用する方法から、dbForgeやRedGateなどの特殊な有料ソリューションを使用する方法まで、さまざまなアプローチがあります(ここに大きなリストがあります)。

Compalexは、無料で使いやすいソリューションの1つです。

Compalexは、2つのデータベーススキーマをすばやく比較するためのスクリプトのセットです。使いやすさのために、これらはすべてDockerコンテナにパッケージ化されています。このコンテナには、スクリプト自体と、DBに接続するために構成された環境の両方が含まれています。

コンテナを起動するには、以下を指定する必要があります。

docker run -it -e DATABASE_DRIVER='mysql' \
-e DATABASE_ENCODING='utf8' \
-e SAMPLE_DATA_LENGTH='100' \
-e DATABASE_HOST='host.docker.internal' \
-e DATABASE_PORT='3306' \
-e DATABASE_NAME='compalex_dev' \
-e DATABASE_USER='root' \
-e DATABASE_PASSWORD='password' \
-e DATABASE_DESCRIPTION='Developer database' \
-e DATABASE_HOST_SECONDARY='host.docker.internal' \
-e DATABASE_PORT_SECONDARY='3306' \
-e DATABASE_NAME_SECONDARY='compalex_prod' \
-e DATABASE_USER_SECONDARY='root' \
-e DATABASE_PASSWORD_SECONDARY='password' \
-e DATABASE_DESCRIPTION_SECONDARY='Production database' \
-p 8000:8000 dlevsha/compalex

どこ:

DATABASE_DRIVER -接続に使用されるドライバー

  • mysql -MySQLの場合

  • pgsql -PostgreSQLの場合

  • dblib -Microsoft SQLServerの場合

  • oci -Oracleの場合

DATABASE_HOSTそしてDATABASE_HOST_SECONDARY 第一および第二のサーバに接続するホスト名またはIPです。

拠点がローカルに展開されている場合localhost

以下のためのMacOSWindowsユーザー:使用host.docker.internalの代わりにlocalhost、コンテナ内で実行中のスクリプトは、ホストマシンに接続する必要がありますよう。

Linux: --network host ( "" ) DB localhost, ip a docker0 ip .

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500
    link/ether 02:42:e8:a9:95:58 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
DB SSH

SSH DB - SSH localhost , .

:

ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2]

1521 remote host 1 remote host 2 localhost 1522 1523 .

DB, application , DB, :

ssh -L 1522:[remote database server 1]:1521 [user name]@[remote application host 1]
ssh -L 1523:[remote database server 2]:1521 [user name]@[remote application host 2]

DATABASE_HOST and DATABASE_HOST_SECONDARY ip, , .

- IP DB ( , ).

DATABASE_PORT and DATABASE_PORT_SECONDARY - .

:

  • 3306 - Mysql

  • 5432 - PostgreSQL

  • 1433 - MSSQL

  • 1521 - Oracle

DATABASE_NAME and DATABASE_NAME_SECONDARY -

DATABASE_USER / DATABASE_PASSWORD and DATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY -

DATABASE_DESCRIPTION and DATABASE_DESCRIPTION_SECONDARY - (, ).

, http://localhost:8000. -, , .

.

eLinks, HTML- .

, ( ) :

$ elinks http://localhost:8000

:

( ).

.

GitHubのプロジェクト

DockerHubで表示




All Articles