将现有数据库的数据导入MyCAT
特别注意:请谨慎使用该方法,目前遇到了两个问题,还尚未确定是Bug还是设置问题:
- 当导入数据的某列很大时(其实也不大,大于4096的时候就会出问题),导入失败:https://github.com/MyCATApache/Mycat-Server/issues/1073
- 导入表格的Boolean类型的数据都变成了False:https://github.com/MyCATApache/Mycat-Server/issues/1074
版本及其他信息
- MySQL: 5.6
- 数据库名:linahr
- MySQL Node 1: 192.168.1.3:3307
- MySQL Node 2: 192.168.1.3:3308
- MyCat Data: 192.168.1.3:8066
- MyCat Console: 192.168.1.3:9066
导出数据
修改mysqldump配置
在/etc/mysql/my.cnf中增加以下内容:
1 | [mysqldump] |
导出数据
创建/tmp/irenshi目录并修改其访问权限为777:
1 | mkdir /tmp/irenshi |
执行mysqldump命令导出数据:
1 | mysqldump -uroot -proot --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --tab /tmp/irenshi/ --lines-terminated-by='\n' linahr |
数据将导出到/tmp/irenshi目录下。每个表格有两个文件,SQL(.sql)和数据文件(.txt)。
导入数据
合并建表语句
1 | cat *.sql > irenshi-tables.sql |
在MyCAT中创建表格
1 | mysql -uirenshi -pirenshi -h192.168.1.3 -P8066 irenshi < irenshi-tables.sql |
生成LOAD DATA语句
为保险期间,删除刚才用到的建表语句:irenshi-tables.sql
1 | rm irenshi-tables.sql |
在/tmp/irenshi目录下增加以下两个Shell脚本:
read-columns.sh,该文件会把每个SQL建表语句中的列名信息抽取出来:
1 |
|
generate-sql.sh,该文件会根据每个建表语句生成对应的LOAD DATA语句:
1 |
|
在/tmp/irenshi目录下执行generate-sql.sh,生成LOAD DATA文件:load-data.sql
导入数据
使用以下命令登录mysql,需要特别注意添加--local-infile=1
参数:
1 | mysql -uirenshi -pirenshi -h192.168.1.3 --local-infile=1 -P8066 irenshi |
执行导入命令:
1 | source load-data.sql |
转载请注明出处:将现有数据库的数据导入MyCAT
原文地址:https://www.xiaotanzhu.com/%E6%95%B0%E6%8D%AE%E5%BA%93/2016-08-24-import-data-into-mycat.html