文档中心 分布式数据库 TDSQL 最佳实践 从分布式实例导入到分布式实例

从分布式实例导入到分布式实例

最近更新时间:2018-10-29 14:50:10

由于分布式数据库到分布式数据库的数据导入方案与一般情况不同,笔者这里使用 mysqldump 对分布式实例导入数据到分布式实例的步骤总结如下:

第一步:安装 MariaDB 版本的 mysqldump

购买云linux版本的云服务器,使用yum install mariadb-server即可安装。

第二步:导出源库的表结构

    mysqldump --no-tablespaces --default-character-set=utf8 --hex-blob --skip-add-drop-table -c 
    --skip-lock-tables --skip-opt --skip-triggers --skip-comments --skip-tz-utc --skip-extended-insert 
    --skip-disable-keys --skip-quote-names --no-data -uusername -ppassword -hxxx.xxx.xxx.xxx -Pxxxxx 
    dbname  | grep -v '^\/\*\!40' > schema.sql;

备注:--default-character-set=utf8 应根据您源表实际情况设定。
-uusername 是有权限的帐号(-u是关键字)
-ppassword 是密码(-p是关键字)
-hxxx.xxx.xxx.xxx -Pxxxxx 是数据库实例的IP和端口。
dbname 代表db的名字
使用grep过滤掉/!40.../的语句,是因为这些语句在 TDSQL 里面不支持。

第二步:导出源库的表数据

    mysqldump  --no-tablespaces --default-character-set=utf8 --hex-blob --skip-add-drop-table -c 
    --skip-lock-tables --skip-opt --skip-triggers --skip-comments --skip-tz-utc --skip-extended-insert 
    --skip-disable-keys --skip-quote-names --no-create-info -uandelwu -pandelwu -hxxx.xxx.xxx.xxx -Pxxxxx 
    dbname | grep -v '^\/\*\!40' > data.sql;

备注:--default-character-set=utf8 应根据您源表实际情况设定。
-uusername 是有权限的帐号(-u是关键字)
-ppassword 是密码(-p是关键字)
-hxxx.xxx.xxx.xxx -Pxxxxx 是数据库实例的IP和端口。
dbname 代表db的名字
使用 grep 过滤掉/!40.../的语句,是因为这些语句在 TDSQL 里面不支持。

第三步:在目标库创建db

    mysql --default-character-set=utf8 -uusername -ppassword -hxxx.xxx.xxx.xxx -Pxxxxx -e "create database dbname;";

备注:--default-character-set=utf8 应根据您目标表实际情况设定。
-uusername 是有权限的帐号(-u是关键字)
-ppassword 是密码(-p是关键字)
-hxxx.xxx.xxx.xxx -Pxxxxx 是数据库实例的IP和端口。
dbname 代表db的名字

第四步:在目标库上导入表结构+

    mysql --default-character-set=utf8 -uusername -ppassword -hxxx.xxx.xxx.xxx -Pxxxxx dbname < schema.sql

备注:--default-character-set=utf8 应根据您目标表实际情况设定。
-uusername 是有权限的帐号(-u是关键字)
-ppassword 是密码(-p是关键字)
-hxxx.xxx.xxx.xxx -Pxxxxx 是数据库实例的IP和端口。
dbname 代表db的名字

第五步:在目标库上导入表数据

    mysql --default-character-set=utf8 -uusername -ppassword -hxxx.xxx.xxx.xxx -Pxxxxx dbname  < data.sql

备注:如果源表中使用了自增字段,并且导入的时候出现“Column 'xx' specified twice”的错误,则需要对schema.sql做处理去掉自增字段的反引号(cat schema.sql | tr "`" " " > schema_tr.sql ),然后drop database,使用处理后的schema_tr.sql重复步骤3-5的操作。