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 MySQLpgsql
- para PostgreSQLdblib
- para Microsoft SQL Serveroci
- para Oracle
DATABASE_HOST
y 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.internal
en 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
- Mysql5432
- PostgreSQL1433
- MSSQL1521
- 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
:
( ).