Staging for MySQL
While running Burst Integrate and Bulk Refresh, Fivetran HVR can stream data into a target database straight over the network into a bulk loading interface specific for each DBMS (e.g. direct-path-load in Oracle), or else HVR puts data into a temporary directory (‘staging file') before loading data into a target database.
For best performance, HVR performs Burst Integrate and Bulk Refresh into MySQL location using staging files. HVR implements the file staging in MySQL by using either of the following methods:
Server Based Staging - The MySQL Server directly reads the staging files and ingest them into the target tables.
- HVR first writes data into the local staging directory on the machine where HVR is installed.
- HVR then uses the MySQL command
load data
to ingest the data into the MySQL target tables. Here, the MySQL Server will directly read the staging files from the staging folder and load them into the target tables.
In this method, if HVR and MySQL Server are installed/running on the same machine, the MySQL Server can directly read and load the staging files into the target tables. If HVR and MySQL Server are installed/running on separate machines, then the staging files created by HVR must be made accessible to the MySQL Server, so that the MySQL Server can directly read and load the staging files into the target tables.
Client Based Staging - The MySQL Client directly reads the staging files and passes them to the MySQL Server, which then ingests them into the target tables.
Use case 1: HVR and MySQL Server are installed on separate machines.
This use case requires MySQL Client to be installed on the same machine where HVR is installed.
- HVR first writes data into the local staging directory on the machine where HVR is installed.
- HVR then uses the MySQL command
load data local
to ingest the data into MySQL target tables. Here, the MySQL Client will directly read the staging files from the staging folder and copy them into the machine where MySQL Server is installed. The MySQL Server will read the staging files received from the MySQL Client and load them into the target tables.
Use case 2: If you do not want to give the FILE privilege to the HVR database User.
This use case requires HVR, MySQL Server, and MySQL Client to be installed on the same machine.
- HVR first writes data into the staging directory on the machine where HVR is installed.
- HVR then uses the MySQL command
load data local
to ingest the data into MySQL target tables. Here, the MySQL Client will directly read the staging files from the staging folder and pass them to the MySQL Server, which will then read the staging files received from the MySQL Client and load them into the target tables.
For MySQL on cloud, this staging method is not possible since HVR and MySQL Server cannot be installed on the same machine.
Configuring Staging
HVR must be configured to stage data on the local directory before loading it into MySQL. For staging the data on local directory and perform Burst Integrate and Bulk Refresh into MySQL, the following are required:
Depending on the Staging method used, the following must be configured in MySQL:
- Server Based Staging,
- The database User must have FILE privilege.
- The system variable (of MySQL server) secure_file_priv should be set to "" (blank).
- Client Based Staging
- The system variable (of MySQL client and server) local_infile should be enabled.
- Server Based Staging,
Define the following location properties (while creating a location or by editing the existing location's source and target properties) for the MySQL location:
The Location Property equivalent to the UI field is shown inside brackets below.
Staging Directory Is Local (Staging_Directory_Is_Local): Indicates that staging files are created in the local directory. This field is automatically selected by default and it cannot be unselected.
STAGING DIRECTORY (Staging_Directory): Local directory path where HVR will create the temporary staging files (e.g. /my_staging_dir).
STAGING DIRECTORY AS VISIBLE FROM THE DATABASE (Staging_Directory_Database): Directory path from where MySQL will access the temporary staging files (e.g. /my_staging_dir). This field must be left blank if the staging method is MySQL Client Based Staging.
- If the staging method is Client Based Staging, then only the STAGING DIRECTORY must be specified.
- If the staging method is Server Based Staging, then both STAGING DIRECTORY and STAGING DIRECTORY AS VISIBLE FROM THE DATABASE must be specified.