Comparando los esquemas de las dos bases de datos

Al desarrollar aplicaciones, a veces es necesario comparar dos bases de datos (por ejemplo, prod y dev).

Hay varios enfoques para resolver este problema, desde crear un archivo de volcado con una estructura db y luego usar diff, hasta usar soluciones pagas especializadas como dbForge o RedGate (hay una lista grande aqu铆 ).

Compalex es una de esas soluciones que combina gratis y f谩cil de usar.

Compalex es un conjunto de scripts para comparar r谩pidamente dos esquemas de bases de datos. Para facilitar su uso, todo esto est谩 empaquetado en un contenedor Docker, que contiene tanto los scripts como el entorno configurado para conectarse a la base de datos.

Para iniciar el contenedor, debe especificar:

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

D贸nde:

DATABASE_DRIVER - controlador usado para la conexi贸n

  • mysql - para MySQL

  • pgsql - para PostgreSQL

  • dblib - para Microsoft SQL Server

  • oci - para Oracle

DATABASE_HOSTy DATABASE_HOST_SECONDARY es el nombre de host o IP para conectarse al primer y segundo servidor.

Si las bases se despliegan localmente para localhost:

Para usuarios de macOS y Windows : util铆celo host.docker.internalen su lugar localhost, ya que el script que se ejecuta dentro del contenedor debe conectarse a la m谩quina host.

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

:

( ).

.

Proyecto en GitHub .

Ver en DockerHub




All Articles