We Automate SnowflakeDB Data Cloud Cost Saving. Sign Our Free 7 Days No Risk Trail Now
[MySQL, MySQL, ” is an open source relational database typically used to keep in-house custom data. Fivetrans integration platform replicates data from your MySQL source database and loads it into your destination. “, Supported services, Fivetran supports five different MySQL database services:, Generic MySQL, Amazon Aurora MySQL, Amazon RDS MySQL, Azure MySQL, Google Cloud MySQL, We support the following versions and speeds:, Supported versions, 5.1 – 8.0, Maximum throughput, 5.0 MBps, Maximum Speed (MBps) measures are based on measured end-to-end update speeds across Fivetran connectors., Two major factors can cause disparities between our estimates and the exact replication speed for your Fivetran-connected databases: network latency and discrepancies in the format of the data we receive versus how the data is stored at rest in the data destination. , The ability to sync changes quickly also depends on configurable sync frequency. The risk of the sync falling behind, or being unable to keep up with data changes, decreases as the sync frequency increases. Fivetran recommends a higher sync frequency for data sources with a high rate of data changes., To measure the rate of new data in your database, check the disk space usage metrics over time for databases hosted on cloud providers. For self-hosted databases, you can run the following query to determine disk space usage:, “SELECTn table_schema as `Database`,n table_name AS `Table`,n round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`n FROM information_schema.TABLESn WHERE table_schema = DB_NAMEn ORDER BY (data_length + index_length) DESC;n”, Features, Feature Name, Supported, Notes, Capture Deletes, check, All tables and fields, Custom Data, check, All tables and fields, Data Blocking, check, Column level, table level, and schema level, Column Hashing, check, Re-sync, check, Table level, History, API Configurable, check, Priority-first sync, dbt Package, Setup guide, In your master database, you need to do the following:, Enable ROW format binary log replication, Set the , binlog_row_image, binary logging system variable to , FULL, in global scope, Set binary log expiration to a , minimum, of one day (24 hours). We recommend setting the log expiration for seven days., WARNING, : Please do not purge the binary log files manually. If the binary log files that the connectors look for are missing, the sync will fail and you will need to re-sync to fix the issue., Allow access to your MySQL database via , “Fivetrans IP”, (Optional) Allow access to a read replica of your MySQL database if you do not want to connect Fivetran to your production instance, Create a Fivetran-specific MySQL user with read-level and replication permissions to binary logs. , WARNING, : This user must be reserved for Fivetran use and unique to your connector., , Reserved, “: Create a user for Fivetrans exclusive use. At the beginning of each sync, a Fivetran user will attempt to kill any zombie processes it left behind on previous syncs. If you try to run any operations as this user, they may be killed.”, , Unique, “: If you are creating multiple connectors targeting the same source database, create a unique user for each connector. If you set up multiple connectors with the same Fivetran user, they can kill one anothers connections, slowing down your sync unnecessarily. “, For specific instructions on how to set up your database, see the guide for your MySQL database type:, Generic MySQL, Amazon Aurora MySQL, Amazon RDS MySQL, Azure MySQL, Google Cloud MySQL, Sync overview, Once Fivetran is connected to your MySQL master database or read replica, we pull a full dump of all selected data from your database. We then connect to your binary log to pull all your new and changed data at regular intervals. The binary log is the same change tracking mechanism that MySQL uses to perform its own replication for backups. If data in the source changes (for example, you add new tables or change a data type), Fivetran automatically detects and persists these changes into your destination. , Syncing empty tables and columns, Fivetran can sync empty tables and columns for your MySQL connector. For more information, see our , Features documentation, ., Schema information, Fivetran tries to replicate the exact schema and tables from your MySQL source database to your destination according to our , standard database update strategies, . For every schema in the MySQL database that you connect, we create a schema in your destination that maps directly to its native schema. This ensures that the data in your destination is in a familiar format to work with., Fivetran-generated columns, Fivetran adds the following columns to every table in your destination: , _fivetran_deleted, (boolean) marks rows that were deleted in the source database., _fivetran_synced, (UTC timestamp) keeps track of when each row was last successfully synced., _fivetran_index, (integer) shows the order of updates for tables that do not have a primary key., _fivetran_id, ” (string) is the hash of the non-Fivetran values of each row. Its a unique ID that Fivetran uses to avoid duplicate rows in tables that do not have a primary key.”, We add these columns to give you insight into the state of your data and the progress of your data syncs., Type transformations and mapping, “As we extract your data, we match MySQL data types to types that Fivetran supports. If we dont support a certain data type, we automatically change that type to the closest supported type or, for some types, dont load that data at all. Our system automatically skips columns with data types that we dont accept or transform. “, The following table illustrates how we transform your MySQL data types into Fivetran supported types:, MySQL Type, Fivetran Type, Fivetran Supported, Notes, BINARY, BINARY, True, BIGINT, LONG, True, BIT, BOOLEAN, True, BIT type with a single digit is supported, BLOB, BINARY, True, CHAR, TEXT, True, DATE, DATE, True, Invalid values will be loaded as NULL, DATETIME, TIMESTAMP_NTZ, True, Invalid values will be loaded as NULL, DECIMAL/ NUMERIC, DECIMAL, True, DOUBLE, DOUBLE, True, ENUM, TEXT, True, FLOAT, DOUBLE, True, GEOMETRY, JSON, True, GEOMETRYCOLLECTION, JSON, True, JSON, JSON, True, INT, INTEGER, True, LINESTRING, JSON, True, LONGBLOB, BINARY, True, LONGTEXT, TEXT, True, MEDIUMBLOB, BINARY, True, MEDIUMINT, INTEGER, True, MEDIUMTEXT, TEXT, True, MULTILINESTRING, JSON, True, MULTIPOINT, JSON, True, MULTIPOLYGON, JSON, True, POINT, JSON, True, POLYGON, JSON, True, SET, JSON, True, SMALLINT, INTEGER, True, TIME, TEXT, True, TIMESTAMP, TIMESTAMP, True, MYSQL always stores timestamps in UTC, Invalid values will be loaded as NULL, TINYBLOB, BINARY, True, TINYINT, BOOLEAN, True, values of only 0s and 1s, TINYINT, INTEGER, True, TINYTEXT, TEXT, True, UNSIGNED BIGINT, DECIMAL, True, UNSIGNED INT, LONG, True, UNSIGNED SMALLINT, INTEGER, True, VARCHAR, TEXT, True, VARBINARY, BINARY, True, YEAR, INTEGER, True, CURVE, False, MULTICURVE, False, MULTISURFACE, False, SURFACE, False, If we are missing an important data type that you need, please , reach out to support, ., In some cases, when loading data into your destination, we may need to convert Fivetran data types into data types that are supported by the destination. For more information, see the , individual data destination pages, ., Excluding source data, If you don‚Äôt want to sync all the data from your master database, you can exclude schemas, tables, or columns from your syncs on your Fivetran dashboard. To do so, go to your connector details page and un-check the objects you would like to omit from syncing. For more information, see our , Column Blocking documentation, ., Alternatively, you can change the permissions of the Fivetran user you created and restrict its access to certain tables or columns. , Note that column permissions will not shield confidential data, such as PII (Personally Identifiable Information), from Fivetran because they do not apply to binary logs (binlogs). Via your binlogs, Fivetran has access to the full contents of any changed rows, including columns that have no SELECT permissions. However, we filter out the prohibited columns at the earliest possible stage of our syncs and do not load them into your destination. , Initial sync, When Fivetran connects to a new database, we first copy all rows from every table in every schema for which we have SELECT permission (except those you have excluded in your Fivetran dashboard) and add , Fivetran-generated columns, “. Tables are copied in ascending size order (from smallest to largest). We copy rows by performing a SELECT statement on each table. For large tables, we copy a limited number of rows at a time so that we dont have to start the sync over from the beginning if our connection is lost midway.”, The duration of initial syncs can vary depending on the number and size of tables to be imported. We therefore interleave incremental updates with the table imports during the initial sync., Updating data, Once the initial sync is complete, Fivetran performs incremental updates of any new or modified data from your source database. We use your binlogs to request only the data that has changed since our last sync. We require the binlogs to be in row format, so that they contain a separate event in each row. We pull INSERT, UPDATE, and DELETE events from your binlogs at regular intervals and upload them to your destination. , How we load UPDATE events into your destination depends on whether or not the table has a primary key. To find out which of your tables have primary keys, run this query in your source database:, “SELECTn max(tc.CONSTRAINT_TYPE = PRIMARY KEY) IS NOT NULLn AND max(tc.CONSTRAINT_TYPE = PRIMARY KEY) = TRUE AS has_primary_key,n c.TABLE_SCHEMA AS table_schema,n c.TABLE_NAME AS table_namenFROM information_schema.COLUMNS cn LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON k.TABLE_SCHEMA = c.TABLE_SCHEMA ANDn k.TABLE_NAME = c.TABLE_NAME ANDn k.COLUMN_NAME = c.COLUMN_NAMEn LEFT JOIN information_schema.TABLE_CONSTRAINTS tc ON tc.TABLE_SCHEMA = k.TABLE_SCHEMA ANDn tc.TABLE_NAME = k.TABLE_NAME ANDn tc.CONSTRAINT_NAME = k.CONSTRAINT_NAMEn LEFT JOIN information_schema.TABLES t ON t.TABLE_SCHEMA = c.TABLE_SCHEMA ANDn t.TABLE_NAME = c.TABLE_NAMEnWHERE t.TABLE_TYPE = BASE TABLEn AND c.TABLE_SCHEMA NOT IN (performanceschema, informationschema, mysql, innodb, lookerscratch, tmp) nGROUP BY c.TABLE_SCHEMA, c.TABLE_NAME ORDER BY has_primary_key, c.TABLE_SCHEMA, c.TABLE_NAME;n”, Tables with a primary key, We merge changes to tables with primary keys into the corresponding tables in your destination:, An INSERT in the source table generates a new row in the destination with , _fivetran_deleted = FALSE, ., A DELETE in the source table updates the corresponding row in the destination with , _fivetran_deleted = TRUE, . , An UPDATE in the source updates the data in the corresponding row in the destination., Tables without a primary key, We handle changes to tables without a primary key differently:, An INSERT in the source table generates a new row in the destination with , _fivetran_deleted = FALSE, ., The , _fivetran_id, , column, helps us handle DELETE operations:, If there is a row in the destination that has a corresponding , _fivetran_id, value, that row will be updated with , _fivetran_deleted = TRUE, ., If there is not a row in the destination that has a corresponding , _fivetran_id, value, a new row will be added with , _fivetran_deleted = TRUE, ., An UPDATE in the source table is treated as a DELETE followed by an INSERT, so it results in two rows in the destination:, A row containing the old values with , _fivetran_deleted = TRUE, A row containing the new values with , _fivetran_deleted = FALSE, As a result, one record in your source database may have several corresponding rows in your destination. For example, suppose you have a , products, table in your source database with no primary key:, description, quantity, Shrink-ray gun, 1, Boogie robot, 2, Cookie robot, 3, You load this table into your destination during your initial sync, creating this destination table:, description, quantity, _fivetran_synced, _fivetran_index, _fivetran_deleted, Shrink-ray gun, 1, “2000-01-01 00:00:00”, 0, FALSE, Cookie robot, 2, “2000-01-01 00:00:00”, 1, FALSE, Boogie robot, 3, “2000-01-01 00:00:00”, 2, FALSE, You then update a row:, “UPDATE products SET quantity = 4 WHERE description = Cookie robot;n”, After your UPDATE operation, your destination table will look like this:, description, quantity, _fivetran_synced, _fivetran_index, _fivetran_deleted, Shrink-ray gun, 1, “2000-01-01 00:00:00”, 0, FALSE, Cookie robot, 2, “2000-01-01 00:00:00”, 3, TRUE, Boogie robot, 3, “2000-01-01 00:00:00”, 2, FALSE, Cookie robot, 4, “2000-01-01 00:00:00”, 4, FALSE, You then delete a row:, “DELETE FROM products WHERE description = Boogie robot;n”, After your DELETE operation, your destination table will look like this:, description, quantity, _fivetran_synced, _fivetran_index, _fivetran_deleted, Shrink-ray gun, 1, “2000-01-01 00:00:00”, 0, FALSE, Cookie robot, 2, “2000-01-01 00:00:02”, 3, TRUE, Cookie robot, 4, “2000-01-01 00:00:02”, 4, FALSE, Boogie robot, 3, “2000-01-01 00:00:02”, 5, TRUE, So, while there may be just one record in your source database where , description = Cookie robot there are two in your destination – an old version where , _fivetran_deleted = TRUE and a new version where , _fivetran_deleted = FALSE, ., We also de-duplicate rows before we load them into your destination. We use the , _fivetran_id, field, which is the hash of the non-Fivetran values in every row, to avoid creating multiple rows with identical contents. If, for example, you have the following table in your source:, description, quantity, Shrink-ray gun, 1, Shrink-ray gun, 1, Shrink-ray gun, 1, Then your destination table will look like this:, description, quantity, _fivetran_synced, _fivetran_index, _fivetran_deleted, Shrink-ray gun, 1, “2000-01-01 00:00:00”, 0, FALSE, Deleted rows, “We dont delete rows from the destination, though the way for how we process deletes differs for “, tables with primary keys, and , tables without primary keys, . We handle deletes as part of streaming changes from the binlog. Note that we only process DELETE events from the binlog., Unsupported MySQL commands, Fivetran does not support several MySQL commands:, TRUNCATE, DROP, (and re-creating the dropped table with , CREATE, ), LOAD, RENAME, CASCADING DELETES, CASCADING UPDATES, “If you use any of these unsupported commands to delete or update the contents of a table, your changes will not be recorded in the binlogs. As a result, those records wont be replicated correctly in your destination. “, Notes for RENAME: nnRenaming involves following three queries:nALTER TABLE tbl_name RENAME [TO | AS] new_tbl_namenALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definitionn [FIRST | AFTER col_name]nALTER TABLE tbl_name RENAME COLUMN old_col_name TO new_col_namennWhen you rename a table, we reimport the table as a new table, but we will not soft-delete the old table in the destination.nWhen you rename a column, both the old column and new column will appear in the table. We only update data in the new column moving forward.n, Migrating service providers, “If you want to migrate service providers, we will need to do a full re-sync of your data because the new service provider wont retain the same change tracking data as your original MySQL database.”]
Every week, we'll be sending you curated materials handpicked by professionals. Plus, you'll be the first to know about our latest data!