Rafael Felipe
04/15/2026, 2:00 PMkapa.ai
04/15/2026, 2:00 PMupdated_at) to avoid CTID scanning issues. [source-postgres issue]
• For very large tables in general: Full refresh syncs copy the entire dataset every time, which can be infeasible for large tables. Incremental sync modes are generally more appropriate. [Full Refresh docs]
• Check your logs for any error messages indicating rows that failed to sync.
Could you share more details about your source connector (PostgreSQL, MySQL, etc.) and the Airbyte version you're using? That would help narrow down the specific cause. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/15/2026, 2:01 PMkapa.ai
04/15/2026, 2:01 PMfetchSize (the batch size for reading rows from MySQL) in the context of MySQL sync performance.
The fetchSize parameter controls how many rows are fetched per batch from the source database. Airbyte introduced a dynamic fetchSize computation in the MySQL connector to try to maximize throughput while preventing memory issues. [MySQL performance forum]
However, testing showed that tweaking fetchSize did not produce significant performance improvements in practice — one user found virtually no difference between connector versions with and without dynamic fetchSize, with syncs taking ~8h 22m vs ~8h 23m for the same table. [MySQL performance forum]
Regarding your specific issue of missing rows on large MySQL tables, the knowledge sources do not mention that increasing chunk/batch size resolves the missing data problem. The missing rows issue on large MySQL tables (38+ GB) has been reported as an open bug, and the suggested debugging steps were: [source-mysql issue]
• Check if the missing rows contain unusually large column objects or long strings
• Review sync logs for any mention of skipped rows
• Consider using Docker or Kubernetes (kubectl) installation instead of abctl, as abctl may have limitations with large-scale data transfers
One community member also noted that splitting the sync into multiple connections (one per stream/table) can help parallelize work, though this doesn't directly address missing rows. [sync performance forum]
The knowledge sources don't provide a direct configuration option to increase rows-per-chunk that is confirmed to fix the missing data issue for MySQL. I'd recommend checking your sync logs carefully for skipped row errors and ensuring you're on a recent connector version. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:04 PM2026-04-15 10:33:07 info [initContainer] image: airbyte/workload-init-container:1.8.5 resources: ResourceRequirements(claims=[], limits={memory=4Gi, cpu=3}, requests={memory=2Gi, cpu=2}, additionalProperties={})
2026-04-15 10:33:07 info Launching replication pod: replication-job-169541-attempt-0 (selectors = {}) with containers:
2026-04-15 10:33:07 info [source] image: airbyte/source-mysql:3.1.1 resources: ResourceRequirements(claims=[], limits={memory=4Gi, cpu=3}, requests={memory=1Gi, cpu=1}, additionalProperties={})
2026-04-15 10:33:07 info [destination] image: airbyte/destination-snowflake:3.15.4 resources: ResourceRequirements(claims=[], limits={memory=4Gi, cpu=3}, requests={memory=1Gi, cpu=1}, additionalProperties={})
2026-04-15 10:33:07 info [orchestrator] image: airbyte/container-orchestrator:1.8.5 resources: ResourceRequirements(claims=[], limits={memory=4Gi, cpu=3}, requests={memory=2Gi, cpu=2}, additionalProperties={})kapa.ai
04/16/2026, 12:05 PMUPDATE connection
SET resource_requirements = '{"cpu_limit": "1.5", "cpu_request": "1.0", "memory_limit": "20Gi", "memory_request": "13Gi"}'
WHERE id = '<your-connection-id>';
[Java heapspace issue]
However, I should note that even with increased memory, the missing rows issue on large MySQL tables has been reported as an open bug that isn't solely explained by resource limits. [source-mysql issue] So increasing resources may help but might not fully resolve the problem. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:08 PMkapa.ai
04/16/2026, 12:08 PMJOB_MAIN_CONTAINER_MEMORY_LIMIT and related variables unset), the defaults are none — meaning no explicit limit is applied to the containers. [Configuring Connector Resources] This could allow the containers to use more memory if the node has it available, which may help with large table syncs. After the Database Update — Do You Need to Re-run abctl local install? The knowledge sources do not explicitly state whether a re-run of abctl local install is required after updating resource_requirements directly in the database. However, based on what's documented:
• The connection.resource_requirements database update takes effect at the connection level and is read by the workload-launcher when it spawns new replication pods. [Configuring Connector Resources]
• Users who applied the SQL update reported it worked without any reinstallation — they simply triggered a new sync. [workload resource issue]
So you likely do not need to re-run abctl local install after a database-level resource_requirements update — just trigger a new sync and the new pod should pick up the updated values.
> ⚠️ Important caveat: There is an open bug report indicating that resource configurations (including values.yaml, env vars, and connection overrides) may be ignored by abctl v2.0.1. [abctl resource limits issue] This is under investigation by the Airbyte engineering team, so results may vary. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:21 PMkapa.ai
04/16/2026, 12:21 PMUPDATE ... SET ... is a SQL statement, not a bash command.
You need to connect to the Airbyte PostgreSQL database first, then run the SQL. Here's how to do it with `abctl`:
Step 1: Connect to the Airbyte database
abctl local credentials
This will give you the database credentials. Then connect using `psql`:
psql -U airbyte -d db-airbyte
Or in one step:
psql -U airbyte -d db-airbyte -c "UPDATE connection SET resource_requirements = '{\"cpu_limit\": \"1.5\", \"cpu_request\": \"1.0\", \"memory_limit\": \"20Gi\", \"memory_request\": \"13Gi\"}' WHERE id = '<your-connection-id>';"
Step 2: Find your connection ID
Your connection ID is in the Airbyte UI URL. The format is:
<base_url>/workspaces/<workspace-id>/connections/<connection-id>/status
[Configuring Connection-Specific Requirements]
Once connected to psql, run the SQL statement as-is — it will work inside the PostgreSQL prompt, not in bash. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:22 PMkapa.ai
04/16/2026, 12:22 PMpsql but it seems the shell didn't enter the PostgreSQL interactive prompt — the UPDATE command was interpreted by bash instead of psql.
Notice in your session you ran:
psql -U airbyte db-airbyte
airbyte-db-0:/$ UPDATE connection ...
The airbyte-db-0:/$ prompt means you're still in bash, not inside psql. The psql command may have exited immediately or failed silently.
Try this instead — use the -c flag to pass the SQL directly:
psql -U airbyte db-airbyte -c "UPDATE connection SET resource_requirements = '{\"cpu_limit\": \"1.5\", \"cpu_request\": \"1.0\", \"memory_limit\": \"20Gi\", \"memory_request\": \"13Gi\"}' WHERE id = '<your-connection-id>';"
Or, to enter the interactive psql prompt properly:
psql -U airbyte db-airbyte
Wait for the airbyte=# prompt (not airbyte-db-0:/$), then paste:
UPDATE connection
SET resource_requirements = '{"cpu_limit": "1.5", "cpu_request": "1.0", "memory_limit": "20Gi", "memory_request": "13Gi"}'
WHERE id = '<your-connection-id>';
Your connection ID can be found in the Airbyte UI URL: <base_url>/workspaces/<workspace-id>/connections/<connection-id>/status [Configuring Connection-Specific Requirements] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:27 PMkapa.ai
04/16/2026, 12:27 PMactor_definition table (connector definition level) in addition to the connection table.
The answer depends on your goal:
• connection table update — applies only to this specific connection (highest precedence, overrides everything else). This is what you've been doing. [Configuring Connection-Specific Requirements]
• actor_definition table update — applies to all connectors of that type (e.g., all MySQL sources). You'd use this if you want the resource increase to apply to every MySQL sync, not just one connection. [Configuring Connector Resources]
For your case (one large MySQL table causing issues), updating just the connection table is the right approach — it's more targeted and won't affect other connections unintentionally.
If you later find that all your MySQL sources need more resources, you could also update actor_definition with:
UPDATE actor_definition
SET resource_requirements = '{"jobSpecific": [{"jobType": "sync", "resourceRequirements": {"cpu_limit": "1.5", "cpu_request": "1.0", "memory_limit": "20Gi", "memory_request": "13Gi"}}]}'
WHERE id = '<actor-definition-id>';
But for now, the connection-level update you're working on should be sufficient. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.kapa.ai
04/16/2026, 12:28 PMJOB_MAIN_CONTAINER_MEMORY_LIMIT=1Gi
• JOB_MAIN_CONTAINER_MEMORY_REQUEST=512Mi
• JOB_MAIN_CONTAINER_CPU_LIMIT=1
• JOB_MAIN_CONTAINER_CPU_REQUEST=0.5
These are the instance-wide resource settings that apply to all job containers as a baseline. [Configuring Connector Resources]
However, since you've already set resource_requirements directly on the connection table (connection-specific level), that takes highest precedence and overrides these instance-wide values. So your large MySQL sync should already be using the 20Gi/13Gi memory you set at the connection level, not the 1Gi limit from the env vars.
That said, it's still worth updating the instance-wide values to something more reasonable as a baseline, so other connections aren't unnecessarily constrained. You can do this by adding extraEnv to your values.yaml for the workload-launcher:
workloadLauncher:
extraEnv:
- name: JOB_MAIN_CONTAINER_CPU_LIMIT
value: "3"
- name: JOB_MAIN_CONTAINER_CPU_REQUEST
value: "1"
- name: JOB_MAIN_CONTAINER_MEMORY_LIMIT
value: "4Gi"
- name: JOB_MAIN_CONTAINER_MEMORY_REQUEST
value: "2Gi"
[abctl resource limits issue]
Bottom line: For your specific large MySQL connection, the database-level resource_requirements update you already made is what matters most. The env vars are the fallback for all other connections. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:29 PMkapa.ai
04/16/2026, 12:29 PMJOB_MAIN_CONTAINER_* environment variables directly on the workload-launcher deployment, bypassing values.yaml.
You can patch the deployment directly with `kubectl`:
kubectl set env -n airbyte-abctl deploy/airbyte-abctl-workload-launcher \
JOB_MAIN_CONTAINER_CPU_REQUEST=1 \
JOB_MAIN_CONTAINER_CPU_LIMIT=3 \
JOB_MAIN_CONTAINER_MEMORY_REQUEST=2Gi \
JOB_MAIN_CONTAINER_MEMORY_LIMIT=4Gi
This will trigger a rollout of the workload-launcher pod with the new env vars. You can verify it worked with the same command you used before:
kubectl exec -n airbyte-abctl deploy/airbyte-abctl-workload-launcher -- env | grep -E "JOB_MAIN|SIDECAR"
> ⚠️ Important reminder: As noted in the previous conversation, there is an open bug where these instance-wide env vars may still be ignored by abctl deployments. [abctl resource limits issue] The connection-level resource_requirements database update you already made takes highest precedence and is the most reliable workaround confirmed to work by other users. [Configuring Connector Resources] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:31 PMkapa.ai
04/16/2026, 12:31 PMJOB_MAIN_CONTAINER_MEMORY_LIMIT=4Gi
• JOB_MAIN_CONTAINER_CPU_LIMIT=3
• JOB_MAIN_CONTAINER_MEMORY_REQUEST=2Gi
• JOB_MAIN_CONTAINER_CPU_REQUEST=1
These match the values you saw in your original sync logs, which is a good baseline. [Configuring Connector Resources]
Next steps:
1. Your large MySQL connection should still be using the higher limits (20Gi memory) you set directly in the connection table — that connection-level setting takes highest precedence over these instance-wide env vars.
2. Trigger a new sync on your large MySQL connection and check the new pod logs to confirm it launches with the connection-level resource requirements (20Gi/13Gi memory), not the instance-wide 4Gi.
3. Monitor whether all rows are loaded this time.
> ⚠️ Keep in mind the open bug where resource configurations may still be ignored in some abctl deployments. [abctl resource limits issue] If the pod still shows 4Gi limits instead of your 20Gi connection-level override, that bug may be affecting you. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Rafael Felipe
04/16/2026, 12:31 PMkapa.ai
04/16/2026, 12:31 PMLaunching replication pod: replication-job-XXXXX-attempt-0 with containers...). [Configuring Connector Resources]
This means:
• Already running jobs will not be affected by the changes you just made — the pods for those jobs were already launched with the old resource values.
• New jobs triggered after your changes (both the env var update and the connection-level resource_requirements DB update) will pick up the new resource limits when their pods are created.
If you have an ongoing sync that you suspect is failing due to resource constraints, you would need to cancel it and re-trigger it so a new pod is launched with the updated resource configuration. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.