一、HBase的迁移
步骤:获取表-->压缩-->迁移到目标集群-->解压-->把文件上传到HDFS的HBase目录下-->利用hbase hbck修复 (注意:不需要事先在目标群集上创建表)
//------在源群集上的操作----------
//flush源HBase将表的缓存数据都写进磁盘
hbase -> flush 'tableName'
//将源HBase表所在文件从HDFS复制到本地文件(表名即文件名)
hdfs dfs -get /hbase/data/default/tableName .
//压缩
tar -zcvf tableName.tar tableName/
//将tar包从源群集迁移到目标群集上
//如XShell 的sz 和 rz命令
//------在目标群集的操作-----------
//解压缩
tar -zxvf tableName.tar
//将表文件上传到HBase的HDFS目录下(文件名即表名)
hdfs dfs -put tableName /hbase/data/default/
//再执行下面四条命令就ok了
hbase hbck -fixTableOrphans tableName
hbase hbck -fixMeta tableName //重新修复hbase meta表(根据hdfs上的regioninfo文件,生成meta表)
hbase hbck -fixAssignments tableName //重新将hbase meta表分给regionserver(根据meta表,将meta表上的region分给regionservere
hbase hbck -repair tableName
二、Hive表导出:
//在源群集执行命令
hive -e "use databaseName;
insert overwrite local directory '/data/hiveData/tableName' select * from tableName;
...
"
//压缩:
tar cvf hiveData.jar hiveData
//将jar包从源群集迁移到目标群集上
//如XShell 的sz 和 rz命令
//解压:
tar xvf hiveData.jar hiveData
//在目标群集先建数据表和数据表的临时表
create table tableName(...) row format delimited fields terminated by ',' ;
create table tableName_tmp(...) ;
//HIVE数据导入
hive -e "use databaseName;
LOAD DATA LOCAL INPATH '/data/hiveData/tableName' OVERWRITE into TABLE tableName_tmp;
INSERT OVERWRITE TABLE tableName SELECT * FROM tableName_tmp;
DROP TABLE tableName_tmp;
...
"
三.一、Mysql的数据库的迁移(来源于 https://www.cnblogs.com/abc8023/p/6745402.html)
1. 导出数据库数据
mysqldump -uroot -ppasswd source_db > /存放目录/dumpout.sql
其中 source_db 是需要导出的数据库名称
dumpout.sql 存储导出的数据
2. 将导出的数据dumpout.sql放到你的目标机器上(如果是远程目标机器的话,直接将dunmpout.sql copy到目标机器就行)。这里假设cp到主目录下~/
3. 在目标机器的数据库里建立新数据库,这里建立名为 target_db 的数据库
mysql> create database target_db;
4. 向 target_db 数据库导入数据
mysql -uroot -ppasswd target_db < /存放目录/dumpout.sql
其中 target_db 是新数据库
dumpout.sql是第一步导出的数据文件
P.S. 如果在导入导出数据的时候遇到文件太大异常退出的情况,可使用split/cat来进行文件的分割和合并
mysqldump -uroot -ppasswd dp_db | split -b 10m - tempfile
cat all_tempfile > targetfile
三.二、Mysql导出表结构及表数据 mysqldump用法
1、导出数据库为dbname的表结构(其中用戶名為root,密码為dpasswd,生成的脚本名為db.sql)
mysqldump -uroot -ppasswd -d dbname >db.sql;
2、导出数据库为dbname某张表(test)结构
mysqldump -uroot -ppasswd -d dbname test>db.sql;
3、导出数据库为dbname所有表结构及表数据(不加-d)
mysqldump -uroot -ppasswd dbname >db.sql;
4、导出数据库为dbname某张表(test)结构及表数据(不加-d)
mysqldump -uroot -ppasswd dbname test>db.sql;