Migrating Data with mysqldump
mysqldump
is a popular tool packaged with the MySQL client infrastructure.CREATE TABLE
and INSERT
statements that can be replayed to restore the database.
For more information on loading data from MySQL using mysqldump
, refer to Load Data from MySQL using mysqldump.
Note
If you are running SingleStore Helios, use the endpoint to run the commands discussed in this topic.
For simplicity, this guide assumes that both MySQL and SingleStore are running on your local machine and that MySQL is running on the standard port (3306) while SingleStore runs on 3307.
While moving your data from MySQL to SingleStore, there are a few considerations to keep in mind:
-
For most MySQL storage engines (MyISAM, InnoDB, etc), indexes are stored as B-trees.
In SingleStore, indexes can be unidirectional lock-free skip lists (ascending or descending) or lock-free hash tables. Picking the right data structure for your index can have a significant impact on the performance of your application. While hash tables are optimized for key-value look ups, skip lists are extremely flexible for complex range scans and sorts ( ORDER BY
).While transferring your schema, you should audit your table definitions and investigate whether your indexes can be optimized for SingleStore. The default BTREE
notation is converted into a skip list (see Skip List Indexes) . -
mysqldump
will generate a few queries that are unsupported by SingleStore.For example, SingleStore does not support disabling UNIQUE_
.CHECKS To make it easier to work with mysqldump
, unsupported features are by default reported as warnings instead of errors.This functionality can be controlled by adjusting the warn_
variable.level See Unsupported MySQL Features for more details. Some components of a CREATE TABLE
statement might be blocked completely.If you run into this issue while loading a schema into SingleStore, you can manually massage the schema definition into something supported by SingleStore. -
If the machine running SingleStore does not have enough memory to support the data you’re loading, the server will issue an error on offending
INSERT
statements indicating its out-of-memory state.In this case, you should upgrade your machine to one with more memory. If you copy your existing memsqlbin
directory to the new machine, SingleStore will be able to reuse the schema definitions andINSERT
statements that have already compiled.
You should separate your schema and data into separate files, so that you can easily review and modify your schema if necessary.
mysqldump -h 127.0.0.1 -u root -B [database name] --no-data -r schema.sql
mysqldump -h 127.0.0.1 -u root -B [database name] --no-create-info -r data.sql
You can then replay these files directly into SingleStore by running:
mysql -h 127.0.0.1 -u root -P 3307 < schema.sql
mysql -h 127.0.0.1 -u root -P 3307 < data.sql
While this step runs, you can observe the memsql.
file to see which unsupported features have been ignored.
Last modified: August 21, 2024