GaussDB for DWS gds线下迁移

举报
数据库练习生 发表于 2020/07/02 14:54:04 2020/07/02
【摘要】 本片博文具体介绍线下集群通过gds工具至线上DWS迁移实施,步骤均通过shell脚本实现。

线下集群通过gds工具至线上DWS迁移实施


迁移流程

迁移流程

迁移步骤

建议起始时间

耗时

备注

开始

                                                                                 

迁移环境准备:

申请迁移中转服务器

配置DWS集群安全组

配置线下集群白名单

下载Gsql客户端和GDS软件包

上传工具包到中转服务器

解压GDS软件包

配置GDS加载服务器



 

数据迁移前准备:

线下集群元数据导出

手工整合元数据导出文件

上传集群迁移工具到中转机

配置dbinfo.conf

配置gds.conf

配置迁移表清单

将元数据导入DWS集群

生成迁移脚本

新建DWS目标表

查看建表日志



 


 

 静态数据迁移实施:

再次配置data_migration工具的dbinfo.conf

再次在生成迁移脚本

创建导出外表

查看外表导出日志

修改导出外表脚本

向中转机导出线下集群数据

查看导出脚本执行日志

删除导出外表

查看导出数据

新建导入外表

查看外表导入日志

DWS导入数据

查看导入数据日志

清理外表

查看外表清理日志

对新导入数据的表执行analyse

查看analyse日志

删除已导出数据(可选)



 

静态数据迁移实施后:

上传数据校验工具至线下集群

配置   dbinfo.conf

执行数据校验脚本

执行创建统计信息表语句

获取需要统计的表清单

执行数据统计

DWS集群上执行校验



 

迁移后数据验证


 


 

迁移后业务验证

申请迁移中转机

迁移开始前一周内

0.5h

不中断数据导入修改

配置DWS集群安全组

迁移开始前一周内

0.1h

不中断数据导入修改

配置线下集群白名单

迁移开始前一周内

0.1h

不中断数据导入修改

下载Gsql客户端和GDS软件包

迁移开始前一周内

0.1h

不中断数据导入修改

上传工具包到中转服务器

迁移开始前一周内

0.1h

不中断数据导入修改

解压GDS软件包

迁移开始前一周内

0.1h

不中断数据导入修改

配置GDS加载服务器

迁移开始前一周内

0.2h

不中断数据导入修改

线下集群元数据导出

迁移开始前4小时

0.5h

不中断数据导入修改

上传集群迁移工具到中转机

迁移开始前4小时

0.1h

不中断数据导入修改

配置dbinfo.conf

迁移开始前4小时

0.1h

不中断数据导入修改

配置gds.conf

迁移开始前4小时

0.1h

不中断数据导入修改

配置迁移表清单

迁移开始前4小时

0.2h

不中断数据导入修改

将元数据导入DWS集群

迁移开始前4小时

0.2h

不中断数据导入修改

生成迁移脚本

迁移开始前4小时

0.2h

不中断数据导入修改

新建DWS目标表

迁移开始前4小时

0.5h

不中断数据导入修改

查看建表日志

迁移开始前4小时

0.2h

不中断数据导入修改

启动业务双写,同时对线下和线上集群发放业务

再次配置data_migration工具的dbinfo.conf

迁移开始

0.2h


再次在生成迁移脚本

迁移开始

0.2h


创建导出外表

迁移开始

1h


查看外表导出日志

迁移开始

0.2h


修改导出外表脚本

迁移开始

0.2h


向中转机导出线下集群数据

迁移开始

2h


查看导出脚本执行日志

迁移开始



删除导出外表

迁移开始



查看导出数据

迁移开始



新建导入外表

迁移开始




查看外表导入日志

迁移开始




DWS导入数据

迁移开始




查看导入数据日志

迁移开始




清理外表

迁移开始




查看外表清理日志

迁移开始




对新导入数据的表执行

迁移开始



analyse




查看analyse日志

迁移开始



删除已导出数据(可选)

迁移结束



 

 

 

 

 

 

 

1.         数据迁移前环境准备

1.1  申请迁移中转服务器

在启动集群迁移前,需要准备迁移中转机,中转机要求网络可以和线上集群,线下集群互通;磁盘的容量>20T

中转机主要用途:

1)     部署GDS服务,作为GDS导入和导出服务器;

2)     部署Gsql客户端用于访问线下集群和DWS集群,执行迁移脚本

如果使用ECS服务区作为中转机,需要在DWS集群具有相同的区域、可用区购买弹性云服务器,可参考如下链接:

https://support.huaweicloud.cn/mgtg-dws/dws_01_0128.html

https://support.huaweicloud.cn/devg-dws/dws_04_prepare_for_gds_01.html

 

1.2  下载DWS Gsql客户端和GDS软件包

GDS服务

获取GDS工具前,需要确认下ECS操作系统类型,按照操作系统准备工具包,对于arm版本需要分别下载GDSGSQL工具包,X86版本在GSQL工具包里已经包含了GDS

ARM版本:https://dws.obs.cn-north-1.myhuaweicloud.com/download/DWS-Gds-1_7_2.tar.gz

X86版本:https://support.huaweicloud.cn/tg-dws/dws_07_0002.html


 

1.3  在中转服务器上创建迁移用户omm

如果中转服务器上没有omm用户,则需要执行该操作

useradd   -g wheel omm -d /home/omm -p 'Bigdata123@'

 

1.4  上传软件包到中转服务器

使用omm用户,通过FTP工具将工具包上传到中转服务器/tmp目录

1.5  解压GDS软件包

omm用户登录中转机服务器,在/tmp目录解压软件包

unzip dws_client_euler_kunpeng_x64.zip

chown -R omm:wheel *

 

1.6  配置GDS加载服务器

数据对象多,数据量大的情况下建议使用多负载机,部署多gds,进行数据的并行导出导入,最大限度利用磁盘空间及I/O、网络带宽(在不影响现网业务的情况下提升数据迁移效率)。注意:中转服务器上要保证gsqlgdsgs_dump三个命令可用,且安装包必须对应相同类型的平台,例如x86的程序不能运行在arm架构

 

1)         omm用户登录中转服务器,创建gds路径

su - omm

mkdir -p /home/omm/dwsgds

mkdir -p /home/omm/c80gds

mkdir -p /home/omm/651gds

 

2)         将从DWS获取gds客户端及依赖包同步至对应路径下

cp -r bin /home/omm/dwsgds/

cp -r lib /home/omm/dwsgds/

cd gds/

cp gds /home/omm/dwsgds/bin

chown -R omm:wheel /home/omm/dwsgds/

 

3)         从老集群获取GDSgs_dump客户端以及依赖包同步至对应路径下

C80版本集群:

omm用户登录线下集群

cd /opt/huawei/Bigdata/mppdb/core/

scp -r lib omm@ip:/home/omm/c80gds

cd /opt/huawei/Bigdata/mppdb/core/bin

scp gds omm@ip:/home/omm/c80gds/bin

scp gs_dump omm@ip:/home/omm/c80gds/bin

 

651版本集群:

omm用户登录线下集群

cd /opt/huawei/Bigdata/mppdb/core/

scp -r lib omm@ip:/home/omm/651gds

cd /opt/huawei/Bigdata/mppdb/core/bin

scp gds omm@ip:/home/omm/651gds/bin

scp gs_dump omm@ip:/home/omm/651gds/bin

 

 

4)         切换到中转机服务器

su - omm

chown -R omm:wheel /home/omm/c80gds/

chown -R omm:wheel /home/omm/651gds/

 

5)         配置环境变量

su - omm

vi ~/.bashrc

添加如下内容:

export PATH=/home/omm/gds/bin:/home/omm/c80gds/bin:/home/omm/c80gds/bin:$PATH

export   LD_LIBRARY_PATH=/home/omm/gds/lib/:/home/omm/c80gds/lib/:/home/omm/c80gds/lib/:$LD_LIBRARY_PATH

保存退出

source ~/.bashrc

 

6)         确认环境变量生效

/home/omm/dwsgds/bin/gds  -V

mkdir -p /home/omm/dwsgds/bin/log

/home/omm/c80gds/bin/gds  -V

mkdir -p /home/omm/c80gds/bin/log

/home/omm/651gds/bin/gds  -V

mkdir -p /home/omm/651gds/bin/log

 

7)         挂载数据盘

mkdir -p /srv/Bigdata/mppdb

mkfs.xfs -f /dev/vdb

mount /dev/vdb /srv/Bigdata/mppdb

chown -R omm:wheel /srv/

 

8)         将挂载的盘加入/etc/fstab配置文件

vi   /etc/fstab

UUID=   1b8bb98e-1e01-4fbc-9a1b-eaa1227069f6 /srv/Bigdata/mppdb                      xfs    defaults        1 1

vi   /etc/fstab

通过blkid 查看需要挂载盘的uuid,例如:

/dev/vda1:   UUID="7B46-32E0" TYPE="vfat" PARTLABEL="EFI System   Partition" PARTUUID="6313f2d6-3e96-4df6-a2f5-bb41804d0ae5"

/dev/vda2:   UUID="3ed3c819-430f-424c-ab61-1426d329b80d" TYPE="ext4"   PARTUUID="02dc92ad-3898-4488-ae86-3229d422b090"

/dev/vdb:   UUID="1b8bb98e-1e01-4fbc-9a1b-eaa1227069f6" TYPE="xfs"

 

 

 

9)         启动gds服务,根据负载机配置,每块数据盘对应启动3gds服务(其中C80651两个版本各启动一个导出,DWS版本启动一个导入)。

/home/omm/gds/bin/c80gds  -d  /srv/Bigdata/mppdb   -p ip:10086 -H 0.0.0.0/0 -l /home/omm/c80gds/bin/log/gds10086.log   -S 10GB -D -t 32

 

/home/omm/gds/bin/651gds  -d    /srv/Bigdata/mppdb -p ip:10086 -H 0.0.0.0/0 -l   /home/omm/651gds/bin/log/gds10086.log -S 10GB -D -t 32

 

/home/omm/gds/bin/dwsgds  -d    /srv/Bigdata/mppdb -p ip:10087 -H 0.0.0.0/0 -l /home/omm/dwsgds/bin/log/gds10087.log   -D -t 32

1.7  配置DWS集群安全组

迁移中转机会启动GDSGsql服务,与DWS集群通信,因此需要在DWS集群的安全组的开放对应服务的端口.

在集群的基本信息页面中,找到安全组参数,单击安全组名称进入安全组详情页面,选择入方向规则.

1)         DWS上配置Gsql访问规则:

2)         DWS上配置GDS服务的安全组入规则配置样例(有多个GDS服务端口的话,都需要配置上,例如10086,10087):

 

1.8  配置线上集群白名单

执行如下命令在线下集群所有CNpg_hba.conf配置文件中增加一条客户端接入认证规则

source   ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_guc set -Z coordinator -N all -I all   -h "host all jack x.x.x.x/x sha256"

注:

l  all表示允许客户端连接到任意的数据库。

l  jack表示连接数据库的用户。

l  x.x.x.x表示只允许IP地址为x.x.x.x的主机连接。在使用过程中,请根据用户的网络进行配置修改。

l  sha256表示连接时jack用户的密码使用sha256算法加密。

 

2.         数据迁移前准备

2.1  线下集群元数据导出

在确认迁移集群范围后,使用dump.sh工具,登录线下集群,导出集群中所有数据库的元数据。 

cd /srv/BigData/mppdb/data1

gs_dumpall -W Bigdata@123   -U omm -f MPPDB_backup.sql -p 25308 –s

 

2.2  手工整合元数据导出文件

修改MPPDB_backup.sql元数据文件,删除所有建表语句,然后将文件copy到中转服务器(注意:只保留创建数据库、用户、模式等信息,保证新集群能够正确创建这些信息),然后将文件copy到中转服务器

cat MPPDB_backup.sql | grep -i  'CREATE SCHEMA' cat MPPDB_backup.sql | grep -i  'ALTER SCHEMA'的结果添加到MPPDB_backup.sql  create database后,其余建表语句清除

scp    MPPDB_backup.sql omm@ip:/home/omm/

 

2.3  上传集群迁移工具到中转机

使用ftp工具将data_migration.zip工具上传到加载机所在服务器的/home/omm目录下。

omm用户登录加载机服务器,并以omm用户执行:

cd /home/omm

unzip data_migration.zip

cd data_migration

dos2unix *.sh

dos2unix table_list

chmod +x *.sh

chmod +x table_list

 

2.4  配置data_migration工具的dbinfo.conf

cd conf

vi dbinfo.conf


配置介绍:

sysuser='omm' #操作系统用户

old_cluster_ip='x.x.x.x' #旧集群CN IP

old_cluster_db='postgres' #旧集群要迁移的数据库

old_cluster_port='25308' #旧集群数据库连接端口

old_cluster_db_user='omm' #旧集群数据库用户

old_cluster_password='xxxxxx' #旧集群数据库密码

gds_ip_list=’x.x.x.x’ #gds加载机ip列表,空格分隔

gdspath=’ /srv/BigData/mppdb/data’ #gds加载机数据存储路径

 

new_cluster_db='lx_test' #新集群迁入的数据库

new_cluster_port='25308' #新集群数据库连接端口

new_cluster_db_user='omm' #新集群数据库用户

new_cluster_password='xxxxxxx' #新集群数据库密码

part_column='"time_stamp"' #时间戳

 

 

2.5 配置data_migration工具的gds.conf

vi gds.conf


 


配置介绍:

gds_write_server=#GDS导出服务器

gds_read_server="#GDS导入服务器


2.6  配置迁移表清单

cd /tmp/data_migration

vi table_list

参数格式:

按照schema加表名的格式填写注意:表名字必须加双引号

ombi."grey_evaluation_timeseries"

 

2.7  将元数据导入DWS集群

登录中转服务器,使用omm用户,向DWS集群导入元数据

source ~/.bashrc

gsql -d sqoop -p   8000 -h x.x.x.x -U dbadmin -W passwd -f MPPDB_backup.sql >   export.log

2.8  在生成迁移脚本

进入data_migration目录,生成迁移脚本

cd /home/omm/data_migration

sh table_dump.sh table_list

 

执行成功后,生成以下路径

2.9  新建DWS目标表

进入new_cluster文件夹,执行创建目标表脚本,在DWS创建新表

cd /home/omm/data_migration/new_cluster/script

sh create_goal_table.sh

2.10         查看建表日志

   进入new_cluster文件夹下的log目录打开create_goal_table.log,查看是否有报错

cd /home/omm/data_migration/new_cluster/log

vi create_goal_table.log

 

2.11         启动业务双写,同时对线下和线上集群发放业务

需要业务侧配合

 

3.         数据迁移实施

如下操作在中转机服务器上执行:

3.1  迁移表校验

业务双写启动一段时间后,开始准备要迁移的表,数据表迁移原则:

 

表类型

迁移方法

简单表,有timestamp字段

通过迁移脚本迁移

简单表,没有timestamp字段

全量导,需提前识别并停止业务更新

分区表,有timestamp字段,并且是分区键

通过迁移脚本迁移

分区表,没有timestamp字段

需提前识别

分区表,有timestamp字段,timestamp字段没有作为分区键

通过迁移脚本迁移

 

3.1.1 过滤没有数据业务表

    在中转机上执行校验数据脚本

cd  data_check/gen_tablelist/script

sh create_tabl_shell.sh

sh normal_count_table_shell.sh

    通过日志查看线上和线下集群是否插入校验数据

/data_check/gen_table/log> tailf normal_count_table.log

   Gsql链接DWS执行sql过滤出这段时间未入数据的表,将导出数据保留,同时将这些表从tablelist中删除,需要由业务排查没有双写的原因

 

select  a.tablename  from   normal_table_count   a   where   exists(select   1   from   normal_table_count   where   tablename=a.tablename   and   date!=a.date) group by 1;

3.1.2过滤简单业务表

      Gsql链接DWS执行sql,将导出数据保留,命名简单表

select relname from pg_class where parttype != 'p' and relkind='r' and  relname not like '%pmk%'and relname not like '%pg%';

3.2  再次配置data_migration工具的dbinfo.conf(正式迁移数据)

要根据业务时间戳字段,修改如下参数

cd conf

vi dbinfo.conf

part_column='"time_stamp"' #时间戳

 


3.3  再次在生成迁移脚本

进入data_migration目录,生成迁移脚本

cd /home/omm/data_migration

sh table_dump.sh table_list

 

 

 

执行成功后,生成以下路径

3.4  创建导出外表

进入old_cluster文件夹下的script目录,在线下集群上创建导出外表

cd /home/omm/data_migration/old_cluster/script

sh create_exp_foreign_tab.sh

3.5  查看外表导出日志

进入old_cluster文件夹下的log目录打开create_exp_foreign_tab.log,查看是否有报错

cd /home/omm/data_migration/old_cluster/log

vi create_exp_foreign_tab.log

 


3.6  修改导出外表脚本

检查生成的导出外表sql,对简单表需要替换掉between后的语句(注意:简单表即非分区表,按照现场环境设置

cd old_cluster/sql/

vi exp_data_cmd.sql

 

表类型

修改规则

简单表,有timestamp字段

:%s/where "0_0_pt_d"   between  '2018-10-29 00:00:00' and  '2018-10-29 00:00:00'//g

 

简单表,没有timestamp字段

全量导,需提前识别并停止业务更新

分区表,有timestamp字段,并且是分区键

timestamp字段过滤导出导入

分区表,没有timestamp字段

需提前识别

分区表,有timestamp字段,timestamp字段没有作为分区键

timestamp字段过滤导出导入

 

3.7  向中转机导出线下集群数据

进入old_cluster文件夹下的script目录,执行数据导出脚本

cd /home/omm/data_migration/old_cluster/script

sh exp_data_script.sh

 

3.8  查看导出脚本执行日志

   进入old_cluster文件夹下的log目录打开exp_data_script.log,查看是否有报错

cd /home/omm/data_migration/old_cluster/log

vi exp_data_script.log

 

3.9  删除导出外表

导出完成后,需要清理掉线下集群的外表

sh clear_exp_foreign_tab_script.sh

 

 

 

3.10         查看导出数据

进入gds加载机数据存储路径,查看数据是否成功导出3.11         新建导入外表

进入new_cluster文件夹,执行创建目标表脚本,在DWS创建新表

cd /home/omm/data_migration/new_cluster/script

sh create_imp_foreign_tab.sh

 

3.12         查看外表导入日志

进入new_cluster文件夹下的log目录打开create_imp_foreign_tab.log,查看是否有报错

cd /home/omm/data_migration/new_cluster/log

vi create_goal_table.log

3.13         DWS导入数据

进入new_cluster文件夹,执行数据导入脚本,向DWS导入数据

cd /home/omm/data_migration/new_cluster/script

sh imp_data_script.sh

3.14         查看导入数据日志

进入new_cluster文件夹下的log目录打开imp_data_script.log,查看是否有报错

vi ../log/imp_data_script.log

 

 

3.15         清理外表

进入new_cluster文件夹,执行数据清理脚本,清理生成的外表

cd /home/omm/data_migration/new_cluster/script

sh clear_imp_foreign_tab_script.sh

3.16         查看外表清理日志

进入new_cluster文件夹下的log目录打开clear_imp_foreign_tab_script.log,查看是否有报错

cd /home/omm/data_migration/new_cluster/log

vi clear_imp_foreign_tab_script.log

3.17         对新导入数据的表执行analyse

进入new_cluster文件夹,执行数据清理脚本,清理生成的外表

cd /home/omm/data_migration/new_cluster/script

sh analyze_table_script.sh

3.18         查看analyse日志

进入new_cluster文件夹下的log目录打开analyze_table_script.log,查看是否有报错

cd /home/omm/data_migration/new_cluster/log

vi analyze_table.log

3.19     删除已导出数据(可选)

为了避免导出数据占用空间,可以在下次集群迁移前执行数据清理脚本

cd /home/omm/data_migration/script

sh script delete_local_data.sh

运行后进入Gds加载机挂载目录,查看数据是否删除。


 


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。