MySQL数据迁移

MySQL单表迁移至Hubble

步骤一:导出需要迁移的表

mysqldump -uroot -p123456  sysbench sbtest1_500 > /opt/willynew/newhubble/mysql.sql

步骤二:将导出的数据文件放置于集群可访问到的位置

Hubble集群中的每个节点都需要访问到需导入的数据文件,可使用httpd服务。

URL必须使用以下格式:

[scheme]://[host]/[path]?[parameters]

当前支持的类型如下:

类型schemahost参数示例
NFS/Localnodelocal节点ID或为空N/Anodelocal:///path/mydatest,nodelocal://n/path/mydatest

nodelocal://n/path/mydatest,n是代表在哪个node节点,见以下示例(以下举例全在第一个节点进行的操作)

步骤三:导入MySQL导出的文件

mysql 导出单个表

mysqldump -uhadoop -p  hilbert_3  vertexlable >  /data/path/vertexlable_test.sql;

把数据导入hubble中

create database if not exists hubble_demo;

use hubble_demo;

IMPORT MYSQLDUMP 'nodelocal://1/customers/vertexlable_test.sql';

        job_id       |  status   | fraction_completed | rows | index_entries | system_records | bytes  
+--------------------+-----------+--------------------+------+---------------+----------------+-------+
  535405586715115521 | succeeded |                  1 |    5 |            10 |              0 |  1152  
(1 row)

MySQL整库迁移至Hubble

步骤一:导出需要迁移的整库

mysqldump -uhadoop -p  hilbert_3   >  /data/path/hilbert_v3.sql;

步骤二:将导出的数据文件放置于集群可访问到的位置

如同mysql单表导入的步骤二操作一致

步骤三:导入MySQL导出的整库数据

用户导出了整个数据库,可以通过以下的 IMPORT 语句从导出文件中读取全部数据和 DDL 语句

create database if not exists hubble_demo;

use  hubble_demo;

import mysqldump 'nodelocal://1/customers/hilbert_v3.sql';

        job_id       |  status   | fraction_completed | rows | index_entries | system_records | bytes  
+--------------------+-----------+--------------------+------+---------------+----------------+-------+
  535411573412855809 | succeeded |                  1 |   45 |             1 |              0 |  2101  
(1 row)

Time: 19.386075748s

注意:入库hubble的数据能够完整导入视图,索引,主键,表之间的主外键关系;但是不包括注释,注释建议写到一个sql脚本里统一执行。

  • comment.sql脚本里面首先指定数据库(如果不指定数据库,数据会默认到defaultdb),然后写入注释语句,执行语句示例如下
hubble sql   --certs-dir=/var/lib/hubble/certs --host=hubble01:15432 < comment.sql