DMS serverless replication stuck on single small table with LOBs

0

I'm doing a test migration (Oracle to Postgres) of a single table (9K rows, 0.01GB, has 1 BLOB field) to prove that it works. But it becomes stuck without further events for 1h+ .

Replication type: FULL_LOAD, Lob mode: Full, chunk 64kb, Max inline 1000KB. Target table has BYTEA column type for BLOBs.

In Table stats panel, I have only "Before load" state.

In CW I have: dms-serverless-replication-orchestrator 'Replication is now running in FULL_LOAD mode.'

dms-serverless-serv-res-id Table X contains LOB columns, change working mode to default mode (odbc_endpoint_imp.c:6083) Table X has Optimized Full LOB Support, inline limit = 1024000 bytes (odbc_endpoint_imp.c:6089)

In DB as running queries, I see only: 16225 00:59:13.816955 dmsuser ROLLBACK Unsure what is trying to rollback, no data was inserted yet, the target DB contains only empty tables.

  • Tested another table without BLOB/CLOB columns: it works. A 3rd table, very small, 1 CLOB with data: remains in 'Before load' for a while, last log is "Start unload loop for the table". Now I also switched all to debug level but is not helping to see why it gets stuck. The table is really small, 400 records, 3 have clob data.

asked 19 days ago107 views
2 Answers
0
Accepted Answer

Hello,

There are many possible scenarios, I would first validate if there are any warnings/errors in the Task log. Assuming, you have already validated those, in general LOB migrations are slow.

AWS DMS migrates LOB data in two phases:

1.AWS DMS creates a new row in the target table and populates the row with all data except the associated LOB value.

2.AWS DMS updates the row in the target table with the LOB data.

I would suggest you to try Limited LOB option.

Full LOB mode – In full LOB mode AWS DMS migrates all LOBs from source to target regardless of size. In this configuration, AWS DMS has no information about the maximum size of LOBs to expect. Thus, LOBs are migrated one at a time, piece by piece. Full LOB mode can be quite slow.

Limited LOB mode – In limited LOB mode, you set a maximum LOB size for DMS to accept. That enables DMS to pre-allocate memory and load the LOB data in bulk. LOBs that exceed the maximum LOB size are truncated, and a warning is issued to the log file. In limited LOB mode, you can gain significant performance over full LOB mode. We recommend that you use limited LOB mode whenever possible.

If this doesn't help, you may need to further dive deep and review all the logs to understand the source of the issue.

Thanks

AWS
Suvendu
answered 18 days ago
  • Thank you. Indeed "limited lob" mode does work, tested with a small limit for now (100Kb). I simply didn't consider it before because the default they had of '32Kb' was way too small for some of my data. I grabbed max length in bytes for all my BLOBs&CLOBs now, and while most tables have < 100Kb, I do have a couple of tables with blobs of 40-200MB, so I hope the limited mode will accept such increased limit, even if it be slow.

0

Good to know. Limited LOB helped. Usually, it's a good practice to schedule a separate Job for LOB tables and take advantage of Table level LOB settings. Also you can explore Inline LOBs. For more information, please refer below LOB best practices

https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html#CHAP_BestPractices.LOBS

AWS
Suvendu
answered 17 days ago
  • Reading now more throughly that guide, it seems target=PostgreSQL does not support Full Lob mode and that might explain why it got stuck. So I'm hoping the limited mode is able to handle 99% of my tables with a small limit like 1500Kb, and then I find a different way to cover the larger ones.

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions