Estoy en la plataforma Linux con PostgreSQL 5.5. Estoy tratando de monitorear todo el tráfico relacionado con PostgreSQL entre Maestro y Esclavo. Con ese fin, utilicé Wireshark para monitorear el tráfico. Luego, inicié PostgreSQL y ejecuté tres consultas (Crear tabla Hola, Crear tabla Adiós e insertar una imagen en la base de datos PostgreSQL). Durante las consultas, ejecuté Wireshark en Master solo para capturar el tráfico entre Master y Slave.
Pero hay un problema con el tráfico de PostgreSQL capturado con Wireshark. Todo el tráfico se envía/recibe en paquetes TCP y ese tráfico está en forma codificada. No puedo leer esos datos. Quiero encontrar esas tres consultas de Wirehsark que inserté en la base de datos de PostgreSQL. ¿Cuál es la mejor manera de encontrar consultas de PostgreSQL? Por otro lado, ejecuté las mismas consultas en la base de datos MySQL y repetí el experimento mencionado anteriormente. Puedo leer fácilmente esas tres consultas en el volcado de wireshark porque no están codificadas.
El archivo Wireshark del experimento PostgreSQL está disponible en Wireshark-File . Necesito averiguar las tres consultas anteriores del archivo Wirehsark. Acerca del archivo: 192.168.50.11 es la máquina de origen desde donde inserté consultas en el servidor maestro remoto de PostgreSQL. 192.168.50.12 es la IP del servidor de Master. 192.168.50.13 es la dirección IP del esclavo. Las consultas se ejecutaron desde .11 y se insertaron en .12 y luego se replicaron en .13 utilizando el enfoque Maestro-Esclavo. Los punteros serán muy bienvenidos.
Probablemente esté utilizando la replicación basada en WAL (la predeterminada), lo que significa que no puede hacerlo.
Esto implica enviar los registros de transacciones entre máquinas. Esta es la representación real en disco de los datos.
Existen métodos alternativos de replicación basados en activadores (slony, etc.) y la nueva replicación lógica.
Tampoco le permitirá recrear la consulta original completa tal como la entiendo, pero le permitirá acercarse.
Hay sistemas que duplican las consultas en los nodos (como MySQL) pero no son lo mismo.
Si desea saber exactamente qué consultas se están ejecutando en el maestro, active el registro de consultas y supervise los registros en su lugar.
Solución a mi propio problema:
Tengo la solución de mi pregunta.
Usé el código de Python para insertar consultas en la base de datos PostgreSQL remota. Usé la siguiente línea en PostgreSQL para conectarme con la base de datos. con = psycopg2.connect(host="192.168.50.12", base de datos="postgres", usuario="postgres", contraseña="faban") Si utiliza el enfoque anterior, todos los datos se enviarán en forma cifrada. Si utiliza el enfoque que se proporciona a continuación en el código python, todos los datos se enviarán en forma descifrada. Puede leer fácilmente todas las consultas en Wireshark. con = psycopg2.connect("host=192.168.50.12 dbname=postgres user=postgres password=faban sslmode=disable") Lo mismo ocurre en C-Code. Datos descifrados sprintf(conninfo, "dbname=postgres hostaddr=192.168.50.12 user=postgres password=faban sslmode=disable"); Datos cifrados sprintf(conninfo, "dbname=postgres hostaddr=192.168.50.12 user=postgres password=faban");