暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【YashanDB 认证】yashan迁移工具YMP部署

L. 2024-07-11
236

官方文档:
产品概述 | YashanDB Doc

1、安装前准备

项目 说明
系统 CentOS7.6以上、KylinOS V10
架构 X86-64/ARM-64
CPU 4核以上
内存 8G以上
磁盘 SSD(建议不小于待同步表中的最大单表数据量的三倍)

1.1 新建用户

disaster-backup01 :: ~ # useradd ymp disaster-backup01 :: ~ # passwd ymp ymp Changing password for user ymp. New password: BAD PASSWORD: The password is shorter than 9 characters Retype new password: passwd: all authentication tokens updated successfully.

1.2 操作系统参数调整

需确保操作系统max user processes最大用户线程数不小于65535

# 查看最大用户线程数 ulimit -u # 执行如下命令使最大用户线程数临时生效,重启后无效 ulimit -u 65536 # 执行执行如下命令将最大用户线程数写入/etc/security/limits.conf文件,重启后参数永久生效 echo " * soft nproc 65536 * hard nproc 65536 " >> /etc/security/limits.conf

1.3 目录划分

建议在服务器新建用户以安装部署YMP,注意YMP安装路径不可包含英文句号,以使用新建YMP用户为例,安装路径为/home/ymp。
如安装路径下已存在db目录与bin/yasldr目录(例如/home/ymp/yashan-migrate-platform/db与/home/ymp/yashan-migrate-platform/bin/yashandb_client),需先清空目录。
安装默认端口号
端口列表请参考:端口列表

YMP监听 数据库监听 主机间通信 yasom yasagent
8090 8091 8092 8093 8094

1.4 防火墙设置

方式一:关闭防火墙

在主机上执行如下命令关闭防火墙:

# 关闭防火墙
# systemctl stop firewalld 

# 关闭开机自启
# systemctl disable firewalld

Copied!

方式二:添加白名单

如果防火墙不能关闭,则需按如下步骤添加端口到白名单中:

1.查看防火墙端口开放情况:

# firewall-cmd --zone=public --list-ports

2.添加端口到防火墙(Firewall):

这里以8090为例演示如何添加端口到防火墙中,其他端口操作方法相同。

# 添加(--permanent 永久生效,没有此参数重启后失效)
# firewall-cmd --zone=public --add-port=8090/tcp --permanent

# 重新载入
# firewall-cmd --reload

# 查看
# firewall-cmd --zone=public --query-port=8090/tcp

如需从白名单中删除已添加的端口,使用如下命令:

# 删除已添加的端口
# firewall-cmd --zone=public --remove-port=8090/tcp --permanent

1.5 应用环境准备

JDK配置:
YMP仅支持在JDK8和JDK11环境下安装
通过Java官方路径下载上述版本的JDK并安装成功后,还需配置如下环境变量:

# 以JDK安装路径为/usr/tools/jdk8为例
# vi /etc/profile

# 在文件结尾添加如下
# export JAVA_HOME=/usr/tools/jdk8
# export PATH=$JAVA_HOME/bin:$PATH
# export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 重新载入配置文件
# source /etc/profile

# 安装成功后查看JDK版本信息
# java -version

Libaio配置:
YMP运行需要libaio动态库。

# 查看是否已安装libaio动态库
# rpm -qa | grep libaio

# 若未有版本信息打印,安装libaio
# yum install -y libaio

OCI环境准备(可选):
如需要使用Oracle到YashanDB的数据迁移功能,请进行OCI环境安装。

准备OCI环境需从Oracle官网 (opens new window)下载OCI客户端并依据官网所列步骤进行安装。

YMP现仅支持OCI Version 19.19.0.0.0及以上版本。建议下载和安装的版本信息如下:

  • instantclient-basic-linux.x64-19.19.0.0.0dbru.el9.zip
  • instantclient-basic-linux.arm64-19.10.0.0.0dbru-2.zip

上传安装包至YMP用户/home/ymp/路径。

# wget https://download.oracle.com/otn_software/linux/instantclient/1919000/instantclient-basic-linux.x64-19.19.0.0.0dbru.el9.zip
--2024-04-18 15:54:47--  https://download.oracle.com/otn_software/linux/instantclient/1919000/instantclient-basic-linux.x64-19.19.0.0.0dbru.el9.zip
Resolving download.oracle.com (download.oracle.com)... 23.213.224.84
Connecting to download.oracle.com (download.oracle.com)|23.213.224.84|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 75001671 (72M) [application/zip]
Saving to: ‘instantclient-basic-linux.x64-19.19.0.0.0dbru.el9.zip’

100%[=================================>] 75,001,671  6.96MB/s   in 12s    

2024-04-18 15:55:00 (6.11 MB/s) - ‘instantclient-basic-linux.x64-19.19.0.0.0dbru.el9.zip’ saved [75001671/75001671]

# 修改安装包所属用户及用户组为ymp用户
# chown ymp:ymp instantclient-xxx

# 从root用户切换至ymp用户
# su - ymp

# 切换至安装路径
$ cd /home/ymp

# 解压OCI安装包
$ unzip instantclient-xxx

1.6 YashanDB环境准备

使用默认内置库时,本步骤可省略。
用以迁移校验兼容性
使用外部内置库时:

  • 如需一个全新的YashanDB单机环境,参考YashanDB官网文档进行安装部署。

  • 如为一个已有的YashanDB单机环境,则需由DBA在该环境中执行如下脚本:

 --创建一个ymp用户(以YMP_DEFAULT为例)并为其授权
 create user YMP_DEFAULT IDENTIFIED BY ymppw602 DEFAULT TABLESPACE users;
 GRANT ALL PRIVILEGES TO YMP_DEFAULT;
 GRANT DBA TO YMP_DEFAULT;

2、软件安装

2.1 软件包下载

$ wget https://linked.yashandb.com/resource/yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip --2024-04-18 15:05:22-- https://linked.yashandb.com/resource/yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip Resolving linked.yashandb.com (linked.yashandb.com)... 119.23.210.86 Connecting to linked.yashandb.com (linked.yashandb.com)|119.23.210.86|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 168188485 (160M) [application/zip] Saving to: ‘yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip’ 100%[===============================================================>] 168,188,485 13.3MB/s in 12s 2024-04-18 15:05:35 (13.1 MB/s) - ‘yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip’ saved [168188485/168188485]

从本步骤开始的后续所有服务端安装步骤,将由YMP安装用户来进行操作,请先切换至YMP用户,或以YMP用户登录至服务器。

上传安装包至YMP用户/home/ymp/路径。

#修改安装包所属用户及用户组为ymp用户
# chown ymp:ymp yashandb-xx.xx-linux-x86_64.tar.gz

# 从root用户切换至ymp用户
# su - ymp

# 切换至安装路径
$ cd /home/ymp

2.2 解压

上传YMP安装包至/home/ymp目录下然后解压:

# 切换至YMP安装目录
$ cd /home/ymp/
$ unzip yashan-migrate-platform-x86-64.zip

2.3 安装参数调整

依据实际需要对默认内置库安装及YMP启动参数进行调整。
默认内置库安装配置文件

# db.properties
YASDB_PASSWORD=ymppw602. # 默认内置库sys用户默认密码
YASDB_PORT=8091 # 默认内置库默认端口号
YASDB_CHARACTER_SET=UTF8 # 默认内置库字符集,还可选择ASCII, ISO88591, GBK

YMP配置文件

# conf/application.properties
# YMP服务端口
server.port=8090

# 用户登录后空闲过期时间,单位秒(s),默认15分钟
shiro.session.timeout=900
# YMP使用的最大堆内存,单位: GB
ymp_memory=4
# YMP使用的堆外内存,单位: GB
ymp_direct_memory=2

# ========================================YMP业务数据库=============================================
# YMP业务数据库连接信息
spring.datasource.url=jdbc:yasdb://192.168.8.201:1688/yashan
spring.datasource.username=YMP_DEFAULT
spring.datasource.password=ymppw602
spring.datasource.largePoolSize=64M
spring.datasource.cursorPoolSize=64M
# 默认内置库表类型,默认HEAP,可选HEAP,TAC,LSC
spring.datasource.defaultTableType=HEAP
spring.datasource.openCursors=3000
spring.datasource.sharePoolSize=2G
spring.datasource.dateFormat=yyyy-mm-dd hh24:mi:ss
spring.datasource.ddlLockTimeout=2

# ========================================评估=============================================
# YMP的最大并行任务数
task.parallel.max-num=500
# 预计数据迁移速度,KB/s。修改会影响评估结果预计迁移时间的大小
commons.dataMigrateSpeed=51200
# 预计对象迁移速度,number/s。修改会影响评估结果预计迁移时间的大小
commons.objMigrateSpeed=200
# 评估任务单个会话获取DDL的数量,如果Oracle性能较差,则需要降低该值
assessment.ddlCount=50
# 评估任务最多同时拥有的会话数,如果Oracle性能较差,则需要降低该值
assessment.maxThreadCount=20
# 内置库表类型是否为LSC,默认为false
isLscTable=false
# 拦截的Oracle数据源db/schema黑名单
schemaBlackList.oracle=ANONYMOUS,APEX_030200,APEX_PUBLIC_USER,APPQOSSYS,BI,CTXSYS,DBSNMP,DIP,EXFSYS,FLOWS_FILES,HR,IX,MDDATA,MDSYS,MGMT_VIEW,OE,OLAPSYS,ORACLE_OCM,ORDDATA,ORDPLUGINS,ORDSYS,OUTLN,OWBSYS,OWBSYS_AUDIT,PM,SCOTT,SH,SI_INFORMTN_SCHEMA,SPATIAL_CSW_ADMIN_USR,SPATIAL_WFS_ADMIN_USR,SYS,SYSMAN,SYSTEM,WMSYS,XDB,XS$NULL
# 拦截的MySQL数据源db/schema黑名单
schemaBlackList.mysql=information_schema,mysql,performance_schema,sys
# 拦截的dm数据源db/schema黑名单
schemaBlackList.dm=SYS,SYSDBA,SYSSSO,SYSAUDITOR,CTISYS

# ========================================迁移=============================================
# 元数据迁移过程中源端、目标端查询视图连接数。在元数据迁移过程中会有分批量的查询的动作, 需要开启多个查询连接并行查询。该参数配置元数据迁移的源端、目标端查询的并行线程数,决定了对数据库的查询最大连接数,不设置默认20
migration.parallel.query=20
# 元数据迁移过程中目标端执行创建连接数。在元数据迁移过程中会并行把对象在目标端的执行,以提升迁移效率。该参数配置元数据迁移的目标端DDL执行的并行线程数,决定了连接数据库的执行最大连接数,不设置默认20。migration.parallel.query和migration.parallel.execute的连接总和,是最终迁移过程中所有的目标端数据库连接数。
migration.parallel.execute=20
# 创建索引是否使用并行参数,true/TRUE:使用,false/FALSE:不使用
migration.parallel.createIndexUseParallel=true
# 索引创建的并行度,需要考虑migration.parallel.execute。例:migration.parallel.execute:10,migration.parallel.index: 5,表示,同时10个连接在并行建索引,每个索引的并行度是5(CREATE INDEX XXX PARALLEL 5)。不填默认CPU核数。
migration.parallel.index=5
# 数据迁移前是否将表设为nologging,默认为false
setNoLogging=false
# 导出时每个csv文件的行数
export.csv.exportRowsEveryFile=2000000
# 迁移成功时候是否删除csv文件
export.csv.isRemoveCsvFileInSuccess=true
# csv文件存储路径包含对schema和table的拼接,schema名或table名中包含以上字符时,将会被替换,以避免被操作系统识别错误导致迁移失败;不过这可能会使某些表(比如AA$与AA.)在替换后使用的csv文件存储路径相同,导致迁移失败(No such file or directory),可以通过重新迁移失败表来解决
export.csv.path.replacement.from=\ /'."*$
# 发生csv文件存储路径字符替换时(详见export.csv.path.replacement.from),指定替换的目标字符或字符串
export.csv.path.replacement.to=_
# 导出时大表拆分的个数
export.table.splitCount=5
# 导出时触发大表拆分的行数
export.table.splitConditionCount=10000000
# 导出时触发大表拆分的表大小(G)
export.table.splitConditionSize=5
# 导出时带lob字段大表拆分的个数
export.lobTable.splitCount=5
# 导出时触发带lob字段大表拆分的行数
export.lobTable.splitConditionCount=1000000
# 导出时触发带lob字段大表拆分的表大小(G)
export.lobTable.splitConditionSize=5
# 使用jdbc导出时每个csv文件的最大行数
export.jdbc.thresholdForSplittingFileLines=5000000
# 使用jdbc导出时每个csv文件的最大大小(M)
export.jdbc.thresholdForSplittingFileSize=3072
# #yasldr More References: http://doc.yashandb.com/yashandb/22.2/zh/%E5%B7%A5%E5%85%B7%E6%89%8B%E5%86%8C/yasldr/yasldr%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC.html
# yasldr导入时的并行度
import.degree_of_parallelism=16
# yasldr导入时每批次的CSV数据行数
import.batch_size=2048
# yasldr导入方式,包括BASIC方式和BATCH方式
import.mode=BATCH

# ========================================校验=============================================
# 校验任务限制每个数据源支持的最大连接数
checkTask.datasource.max-connection=500
# 校验任务获取连接超时时间,单位:ms
checkTask.datasource.connection-timeout=300000
# 校验任务获取的连接池中维持的最小连接数
checkTask.datasource.minimum-idle=1
# 校验任务的最大并行任务数
checkTask.task.parallel.max-num=20
# 校验任务的子任务的最大并行任务数,即一个任务多少个表在同时校验
checkTask.subTask.parallel.max-num=200
# 校验任务的全量校验对FLOAT数据类型的校验精度
checkTask.checkFloatPrecision=6
# 校验任务的数据类型映射有一边是char数据类型就移除数据右侧空格进行对比
checkTask.charRightTrim=true

2.4 执行安装命令

您可通过以下命令查看脚本参数及其使用方法:

# 进入安装目录查看帮助
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh -h

默认内置库安装YMP

YMP安装时按默认方式自行安装YashanDB作为内置库。

默认内置库相关信息:

  • 部署形态:单机
  • 集群名称:ymp
  • 安装目录:/home/ymp/yashan-migrate-platform/db
    执行安装

方式一:安装内置库并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh install --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz

方式二:安装内置库和OCI客户端并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh install --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz --path /home/ymp/instantclient_xxx

sh bin/ymp.sh install --db /home/ymp/yashandb-personal-23.2.1.100-linux-x86_64.tar.gz --path /home/ymp/instantclient_19_19/
checking install profile.toml...
install version: yashandb 23.2.1.100
update host to yasom...
 type | uuid             | name               | hostid | index | status  | return_code | progress | cost 
---------------------------------------------------------------------------------------------------------
 task | 27209354f2786cc1 | DeployYasdbCluster | -      | ymp   | SUCCESS | 0           | 100      | 94   
------+------------------+--------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
 type | uuid             | name             | hostid | index | status  | return_code | progress | cost 
-------------------------------------------------------------------------------------------------------
 task | aaad39430f55d579 | StopYasdbCluster | -      | ymp   | SUCCESS | 0           | 100      | 3    
------+------------------+------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
 type | uuid             | name              | hostid | index | status  | return_code | progress | cost 
--------------------------------------------------------------------------------------------------------
 task | 628ba4ff71b7a910 | StartYasdbCluster | -      | ymp   | SUCCESS | 0           | 100      | 7    
------+------------------+-------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
YMP started successfully!

自定义内置库安装YMP

使用自定义内置库指使用外部的YashanDB数据库作为YMP的业务库使用,YMP安装时不再安装YashanDB数据库。

不能使用迁移的目标库作为自定义内置库。

修改配置文件

# 修改工具yashan-migration-platform/conf/application.properties文件
# YMP业务数据库连接信息
# url改为自定义内置库的url,格式为 url: jdbc:yasdb://IP:PORT/yashan
spring.datasource.url=jdbc:yasdb://127.0.0.1:8091/yashan # 自定义内置库的地址和端口
spring.datasource.username=YMP_DEFAULT # 自定义内置库的用户名
spring.datasource.password=ymppw602 # 自定义内置库的用户名密码

执行安装

方式一:安装Yasldr依赖库并启动YMP

如无需使用Oracle到YashanDB的数据迁移功能,可通过这种方式部署。

# 进入安装目录执行卸载命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz

方式二:安装Yasldr依赖库和OCI客户端并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz --path /home/ymp/instantclient_xxx

查看运行状态

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh status
 YMP is running, pid is 24116.
 Built-in database is used, pid is 23940.

查看版本

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh -v
 Yashan-migrate-platform version: Release v23.2.1.0
 YashanDB SQL Enterprise Edition Release v23.2.1.0 x86_64
 YashanDB Loader Enterprise Edition Release v23.2.1.0 x86_64 faec879

3、访问YMP

访问方式:http://IP:PORT/,PORT默认8090,初始账户名和密码是(admin/admin)
admin/Greentown@123
[[08-Database/010-YashanDB/001-安装部署/IMAGE/e8f7e31d57fdc2868d8868a768173cbc_MD5.jpeg|Open: Pasted image 20240418161025.png]]
![[08-Database/010-YashanDB/001-安装部署/IMAGE/e8f7e31d57fdc2868d8868a768173cbc_MD5.jpeg]]

4、YMP启动与停止

启动YMP

默认内置库启动YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh start

自定义内置库启动YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh startnodb

停止YMP

默认内置库停止YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh stop

自定义内置库停止YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh stopnodb

重启YMP

默认内置库重启YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh restart

自定义内置库重启YMP:

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh restartnodb

Caution:

在任务运行过程中停止或重启YMP会造成当前阶段任务运行失败,需重新开始当前阶段任务。

5、卸载YMP

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh uninstall
 
 # 使用uninstall功能时可携带-f参数,强制清理环境
 $ sh bin/ymp.sh uninstall -f
  
 # 验证
 $ ps -ef | grep yas
 ymp       20840  6322  0 10:02 pts/14   00:00:00 grep --color=auto yas
  1. 卸载YMP时,会删除默认内置库(自定义内置库不受影响)并清空db和yashan_client文件夹,若想替换数据库版本,请在卸载后重新部署。
  2. 强制清理功能会使用kill -9强制清理当前用户下YMP启动的所有进程,并删除内置库及yasldr文件夹下所有内容,请谨慎使用,建议在专用的YMP用户下使用。
  3. 最后还需要手动删除~/.bashrc中与YashanDB有关的环境变量。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论