Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solución de problemas de Postgre Endpoint SQL
Esta sección contiene escenarios de replicación específicos de Postgre. SQL
Temas
Transacciones de larga duración en el origen
Cuando hay transacciones de larga duración en la base de datos de origen, como varios miles de inserciones en una sola transacción, los contadores de DMS CDC eventos y transacciones no aumentan hasta que se completa la transacción. Este retraso puede provocar problemas de latencia que se pueden medir con la métrica CDCLatencyTarget
.
Para revisar transacciones de larga data, realice una de las siguientes acciones:
Utilice la vista de
pg_replication_slots
. Si elrestart_lsn
valor no se actualiza, es probable que Postgre SQL no pueda publicar Write Ahead Logs (WALs) debido a que las transacciones activas llevan mucho tiempo ejecutándose. Para obtener información sobre lapg_replication_slots
vista, consulte pg_replication_slotsen la documentación de Postgre 15.4. SQL Utilice la siguiente consulta para obtener una lista de todas las consultas activas de la base de datos, junto con la información relacionada:
SELECT pid, age(clock_timestamp(), query_start), usename, query FROM pg_stat_activity WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%' ORDER BY query_start desc;
En los resultados de la consulta, el campo
age
muestra la duración activa de cada consulta, que puede utilizar para identificar las consultas de larga duración.
Carga de trabajo alta en el origen
Si su Postgre de origen SQL tiene una carga de trabajo elevada, compruebe lo siguiente para reducir la latencia:
-
Es posible que experimente una latencia alta al usar el
test_decoding
complemento al migrar un subconjunto de tablas de la base de datos de origen con un valor alto de transacciones por segundo (). TPS Esto se debe a que eltest_decoding
complemento envía todos los cambios de la base de datos a la instancia de replicación, que DMS luego los filtra en función de la asignación de tablas de la tarea. Los eventos de las tablas que no forman parte de la asignación de tablas de la tarea pueden aumentar la latencia del origen. -
Compruebe TPS el rendimiento mediante uno de los siguientes métodos.
Para las SQL fuentes de Aurora Postgre, utilice la
CommitThroughput
CloudWatch métrica.Para que Postgre SQL se ejecute en Amazon RDS o de forma local, utilice la siguiente consulta con un PSQL cliente de versión 11 o superior (presione
enter
durante la consulta para avanzar en los resultados):SELECT SUM(xact_commit)::numeric as temp_num_tx_ini FROM pg_stat_database; \gset select pg_sleep(60); SELECT SUM(xact_commit)::numeric as temp_num_tx_final FROM pg_stat_database; \gset select (:temp_num_tx_final - :temp_num_tx_ini)/ 60.0 as "Transactions Per Second";
Para reducir la latencia al usar el complemento
test_decoding
, considere usar el complementopglogical
en su lugar. A diferencia deltest_decoding
complemento, elpglogical
complemento filtra los cambios que se escriben previamente en el registro (WAL) en el origen y solo envía los cambios relevantes a la instancia de replicación. Para obtener información sobre cómo usar elpglogical
complemento con AWS DMS, consulteConfiguración del complemento pglogical.
Alto rendimiento de red
Es posible que la replicación utilice un ancho de banda de la red alto cuando utilice el complemento test_decoding
, especialmente durante transacciones de gran volumen. Esto se debe a que el complemento test_decoding
procesa los cambios y los convierte en un formato legible para las personas que es más grande que el formato binario original.
Para mejorar el rendimiento, considere usar el complemento pglogical
en su lugar, que es un complemento binario. A diferencia del test_decoding
complemento, el pglogical
complemento genera una salida en formato binario, lo que resulta en cambios de flujo comprimidos de write ahead log (WAL).
Derrame archivos en Aurora Postgre SQL
En la SQL versión 13 y posteriores de Postgre, el logical_decoding_work_mem
parámetro determina la asignación de memoria para la decodificación y la transmisión. Para obtener más información sobre el logical_decoding_work_mem
parámetro, consulte Consumo de recursos en Postgre en la documentación de Postgre SQL
La replicación lógica acumula los cambios de todas las transacciones en la memoria hasta que esas transacciones se confirmen. Si la cantidad de datos almacenados en todas las transacciones supera la cantidad especificada en el parámetro de la base de datoslogical_decoding_work_mem
, DMS los transfiere al disco para liberar memoria para nuevos datos de decodificación.
Las transacciones de larga duración, o muchas subtransacciones, pueden provocar un DMS consumo mayor de memoria de decodificación lógica. Este aumento del uso de memoria provoca la DMS creación de archivos innecesarios en el disco, lo que provoca una alta latencia de origen durante la replicación.
Para reducir el impacto de un aumento en la carga de trabajo de origen, haga lo siguiente:
Reduzca las transacciones de larga duración.
Reduzca el número de subtransacciones.
Evite realizar operaciones que generen una gran cantidad de registros, como eliminar o actualizar una tabla completa en una sola transacción. En su lugar, realice las operaciones en lotes más pequeños.
Puede utilizar las siguientes CloudWatch métricas para supervisar la carga de trabajo en la fuente:
TransactionLogsDiskUsage
: el número de bytes que ocupa actualmente la lógicaWAL. Este valor aumenta de forma monótona si las ranuras de replicación lógica no pueden seguir el ritmo de las nuevas escrituras o si alguna transacción de larga duración impide la recolección de archivos antiguos como basura.ReplicationSlotDiskUsage
: La cantidad de espacio en disco que utilizan actualmente las ranuras de replicación lógica.
Puede reducir la latencia de origen ajustando el logical_decoding_work_mem
parámetro. El valor predeterminado de este parámetro es 64 MB. Este parámetro limita la cantidad de memoria utilizada por cada conexión de replicación de streaming lógico. Se recomienda establecer el logical_decoding_work_mem
valor significativamente más alto que el work_mem
valor para reducir la cantidad de cambios decodificados que se DMS escriben en el disco.
Te recomendamos que compruebes periódicamente si hay archivos incompletos, especialmente durante los períodos de intensa actividad de migración o latencia. Si DMS está creando un número significativo de archivos indirectos, esto significa que la decodificación lógica no funciona de manera eficiente, lo que puede aumentar la latencia. Para mitigar esta situación, aumente el valor del logical_decoding_work_mem
parámetro.
Puede comprobar el desbordamiento de transacciones actual con la aurora_stat_file
función. Para obtener más información, consulte Ajustar la memoria de trabajo para la decodificación lógica en la Guía para desarrolladores de Amazon Relational Database Service.