Comparaison des schémas des deux bases de données

Lors du développement d'applications, il est parfois nécessaire de comparer deux bases de données (par exemple, prod et dev).

Il existe un certain nombre d'approches pour résoudre ce problème - de la création d'un fichier de vidage avec une structure de base de données à l'utilisation de diff, à l'utilisation de solutions payantes spécialisées telles que dbForge ou RedGate (il y a une grande liste ici ).

Compalex est l'une de ces solutions qui combine gratuit et facile à utiliser.

Compalex est un ensemble de scripts permettant de comparer rapidement deux schémas de base de données. Pour faciliter l'utilisation, tout cela est emballé dans un conteneur Docker qui contient à la fois les scripts eux-mêmes et l'environnement configuré pour la connexion à la base de données.

Pour démarrer le conteneur, vous devez spécifier:

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

Où:

DATABASE_DRIVER - pilote utilisé pour la connexion

  • mysql - pour MySQL

  • pgsql - pour PostgreSQL

  • dblib - pour Microsoft SQL Server

  • oci - pour Oracle

DATABASE_HOSTet DATABASE_HOST_SECONDARY est le nom d'hôte ou l'adresse IP pour se connecter au premier et au deuxième serveur.

Si les bases sont déployées localement pour localhost:

Pour les utilisateurs de macOS et Windows : utilisez host.docker.internalplutôt localhost, car le script exécuté à l'intérieur du conteneur doit se connecter à la machine hôte.

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

:

( ).

.

Projet sur GitHub .

Afficher sur DockerHub




All Articles