大数据平台--数据库的迁移(HBase、Hive、Mysql)

一、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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值