Airtable to MySQL: How to Move Your Data

Move Airtable into MySQL with Airbyte. Why renaming a table stops the sync, the per-base rate limit, and what changes when an application reads the result.

Summarize with AI:

Moving Airtable into MySQL takes data a person maintains by hand and puts it where an application can read it. That is a slightly different job from analytics: the destination here is usually a database already serving an internal tool, an admin panel or a legacy product that speaks MySQL and nothing else.

This guide covers the managed path with Airbyte. The technical setup is short. The thing that makes or breaks it is that your upstream is a human being with edit rights, and the connector has one behaviour that turns an ordinary Airtable tidy-up into a silently broken sync.

Airtable to MySQL at a glance:

CapabilitySupportedWhat it means for this pipeline
Renaming a tableStops the syncYou must reset the schema and reselect it to resume
Rate limit5 a second per baseThe connector respects this automatically
Concurrent threadsDefault 5Configurable from 2 to 40, useful across multiple bases
Duplicate table namesHandled by optionAdding the base ID to stream names needs a full refresh
VolumeSmallAn Airtable base is never a size problem for MySQL

Why move data from Airtable to MySQL?

Two situations account for most of these pipelines.

The first is giving an application configuration it can read. Feature flags by customer, pricing tiers, territory assignments, a list of approved suppliers. A person curates these in Airtable because that is a pleasant place to curate things, and your application needs them in a database it can query per request.

The second is joining hand-maintained context to system data that already lives in MySQL. If instead you want trend analysis or a join across three bases and a warehouse, send Airtable to a warehouse rather than here, since that is a different job with different tooling.

What do you need before you start?

The setup is short. The agreement with whoever owns the base is the part that matters:

OAuth or a personal access token. OAuth is recommended on Airbyte Cloud, where you authorise the workspaces you want to sync. With a personal access token you select the required bases when creating it. Grant access to the bases you actually intend to replicate rather than everything available. The Airtable source documentation covers both.

An agreement about renaming. If a table is renamed in Airtable after syncing has started, the connector stops syncing it until you reset the connection schema and select it again. This is the single most likely way this pipeline breaks, and because an application depends on the result, the consequence is worse than a stale report.

A decision on stream naming, made now. If you sync cloned bases containing tables with the same name, enable the option to include the base ID in stream names. Enabling it later changes stream names and requires a full refresh, and on this pipeline it also means repointing whatever application reads those tables.

A MySQL user with write access. On the target schema, and ideally a schema dedicated to synced data rather than one your application also writes to, so the pipeline cannot collide with application tables.

One note on OAuth: the documentation flags that you may see a 400 or 401 error causing a failed sync when using it. If that happens, re-authenticating is the first thing to try before assuming a deeper problem.

How do you build an Airtable to MySQL pipeline in Airbyte?

Step 1: Talk to whoever owns the base

Tell them that table and column names are now an interface, and that renaming a table stops it syncing until someone intervenes in Airbyte. Because an application reads the result rather than a dashboard, the failure shows up as stale configuration in your product. Agree who to tell before renaming, and write it in the base description where they will see it.

Step 2: Configure the Airtable source

Click Sources in the left navigation, then New Source, and select Airtable, following adding a source. Choose OAuth or personal access token authentication and authorise the workspaces or bases you need. Decide the base ID naming option here, before the first sync, since changing it afterwards forces a full refresh.

Step 3: Configure the MySQL destination

Click Destinations, then New Destination, and select MySQL, following adding a destination. Supply the host, port, database and credentials. Airbyte adds its own metadata columns to each table, so decide whether the consuming application tolerates them or reads views that exclude them, which on a pipeline feeding a product is usually the tidier answer.

Step 4: Create the connection and tune concurrency

Click Connections, then New connection, select your tables and a sync mode. If you are syncing several bases, raise the concurrent threads setting from its default of 5, which is adjustable between 2 and 40. The connector automatically respects Airtable's limit of 5 requests per second per base, so increasing it will not produce rate limit errors.

That per-base limit is the useful detail. Because it applies per base rather than per account, syncing ten bases has roughly ten times the available throughput of syncing one, which is why concurrency helps in exactly the situation where you might expect it to hurt.

Why does renaming a table break the sync?

Because the connection tracks the table by the name it had when you selected it. Rename it in Airtable and the connector will not continue syncing that table until you reset the connection schema and select it again, at which point it begins syncing to a table with the new name in the destination.

On a warehouse pipeline that means a stale table nobody notices for a week. Here it means your application is reading configuration that stopped updating, which is a product bug rather than a reporting one. And the recovery produces a differently named destination table, so whatever queries it also needs changing.

The practical defences are the conversation in step 1, a note in the base itself, and a freshness check on the destination table so a stalled sync surfaces within a day. On any pipeline whose upstream is a person, that last one is worth having regardless of how carefully you explained things.

What changes when an application reads the result?

Volume is never the issue on this pipeline, which is unusual. An Airtable base is small by any database standard, so none of the sizing caution that applies to other MySQL destinations applies here. What replaces it is a set of concerns about serving live traffic.

Think about which sync mode is safe to run underneath something querying at the same time, since a mode that replaces table contents behaves differently from one that appends when an application is reading mid-sync. And expose views rather than the raw tables, so the metadata columns and any future schema change stay invisible to the application.

Finally, decide what your application should do when the data is stale. A configuration table that stopped updating three days ago will not announce itself, so a last-synced timestamp the application can check, or an alert on freshness, turns a silent failure into a visible one. That is worth more than any amount of care in the connector configuration.

Frequently asked questions

My table stopped syncing after someone renamed it. What now?

Reset the connection schema and select the table again. It will then sync to a table with the new name in the destination, so update any application queries that referenced the old one.

Will raising concurrent threads cause rate limit errors?

No. The connector automatically respects Airtable's limit of 5 requests per second per base, so increasing the thread count above the default of 5 improves throughput without tripping the limit.

How do I handle tables with the same name in different bases?

Enable the option to add the base ID to stream names, at setup, because enabling it later changes stream names, requires a full refresh and means repointing your application.

Is an Airtable base too large for MySQL?

No. Airtable bases are small by database standards, so the volume cautions that apply to other MySQL destinations are not relevant here.

Can I do this without writing code?

Yes. The setup above is entirely UI-driven. You may want MySQL views so your application reads a stable interface rather than the raw synced tables.

Get your Airtable data into MySQL

Decide the stream naming option at setup, expose views rather than raw tables, raise concurrency if you sync several bases, and add a freshness check. Then have the conversation about renaming before it happens, because on this pipeline a broken sync is a product bug rather than a stale dashboard.

Airbyte's connector catalog includes 600+ pre-built connectors, so hand-maintained context can reach both your application and your warehouse. For the analytical version of this pipeline, see Airtable to BigQuery, and for another source whose upstream is a person, Smartsheet to Databricks.

Start syncing now →

Integrate with 600+ apps using Airbyte

Move data from 600+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.