YashanDB YCP 培训笔记之YMP安装及数据迁移【YashanDB迁移体验官】

崖山迁移平台(Yashan Migration Platform,YMP)是YashanDB提供的数据库迁移产品,支持异构RDBMS与YashanDB之间进行迁移评估、离线迁移、数据校验的能力。 YMP提供可视化服务,用户只需通过简单的界面操作,即可完成从评估到迁移整个流程的执行与监控,实现低门槛、低成本、高效率的异构数据库迁移。

1. 部署环境

服务器配置:不少于4c8g,100G数据盘

类型

服务器IP

操作系统

工具

安装包

源库

10.10.10.160

centos7.9

Oracle 19C

现有测试库,版本19.3.0.0.0

迁移工具

10.10.10.235

centos7.9

YMP

yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip

中间件

10.10.10.235

centos7.9

OCI

instantclient-basic-linux.x64-19.22.0.0.0dbru.zip

中间件

10.10.10.235

centos7.9

JDK

jdk-8u381-linux-x64.tar.gz

目标库

10.10.10.236

centos7.9

YashanDB

yashandb-personal-23.2.1.100-linux-x86_64.tar.gz

2. 下载地址

2.1 YMP的参考文档手册:

https://doc.yashandb.com/ymp/23.2/zh/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/%E5%AE%89%E8%A3%85%E4%B8%8E%E5%8D%B8%E8%BD%BD.html

2.2YashanDB 相关安装包下载地址

https://download.yashandb.com/download

2.3 OCI下载地址

https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html

2.4 JDK下载地址(获取最新或旧版本)

https://www.oracle.com/java/technologies/downloads/#java8

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

3. 安装前准备

3.1 修改资源限制(root用户下)

# 查看最大用户线程数

ulimit -u

# 执行如下命令使最大用户线程数临时生效,重启后无效

ulimit -u 65536

# 执行执行如下命令将最大用户线程数写入/etc/security/limits.conf文件,重启后参数永久生效

echo "

* soft nproc 65536

* hard nproc 65536

" >> /etc/security/limits.conf

3.2 开放端口

ymp安装的默认端口如下:

YMP监听

数据库监听

主机间通信

yasom

yasagent

8090

8091

8092

8093

8094

方式一:关闭防火墙(测试环境,可以考虑关闭)

# 查看是否关闭

[root@dba236 mnt]# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

Active: active (running) since Wed 2024-04-10 10:25:50 EDT; 1 weeks 5 days ago

Docs: man:firewalld(1)

Main PID: 871 (firewalld)

CGroup: /system.slice/firewalld.service

└─871 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Apr 10 10:25:49 dba236 systemd[1]: Starting firewalld - dynamic firewall daemon...

Apr 10 10:25:50 dba236 systemd[1]: Started firewalld - dynamic firewall daemon.

[root@dba236 mnt]# firewall-cmd --add-port=1688/tcp --permanent

success

[root@dba236 mnt]# firewall-cmd --reload

success

# 关闭防火墙

systemctl stop firewalld

# 关闭开机自启

systemctl disable firewalld

方式二:添加防火墙白名单(建议生产环境,按需开启,安全有放心)

# 查看防火墙已开放端口

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

# 添加端口到防火墙(以8090为例)

firewall-cmd --zone=public --add-port=8090/tcp --permanent

# 重新加载防火墙策略

firewall-cmd --reload

# 若需删除白名单中的端口,执行

firewall-cmd --zone=public --remove-port=8090/tcp --permanent

3.3 创建用户,用于部署ymp

方式一:不指定参数,默认是/home/ymp

useradd ymp

方式二: 添加用户并指定home目录

useradd -d /home/ymp -m ymp

参数说明:

-d 指定用户的home目录

-m 用户名

设置密码,这个要记住,后续会用到

passwd ymp

3.4 中间件JDK设置

# 解压jdk

[root@vir235 tools]# ll

total 566436

-rw-r--r--. 1 root root 75001234 Apr 22 09:55 instantclient-basic-linux.x64-19.22.0.0.0dbru.zip

-rw-r--r--. 1 root root 139273048 Apr 22 09:41 jdk-8u381-linux-x64.tar.gz

-rw-r--r--. 1 root root 197559542 Apr 23 01:25 yashandb-personal-23.2.1.100-linux-x86_64.tar.gz

-rw-r--r--. 1 root root 168188485 Apr 22 09:34 yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip

[root@vir235 tools]# tar xf jdk-8u381-linux-x64.tar.gz

# 设置环境变量,加入/etc/profile到末尾

echo "

export JAVA_HOME=/mnt/tools/jdk8

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

" >> /etc/profile

# 重新加载配置文件

source /etc/profile

# 验证

[root@vir235 bin]# java -version

java version "1.8.0_381"

Java(TM) SE Runtime Environment (build 1.8.0_381-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)

3.5 OCI环境设置(oracle迁移到yashanDB必备)

PS: ymp仅支持OCI 19.19.0.0及以上版本

mv instantclient-basic-linux.x64-19.22.0.0.0dbru.zip /mnt/

cd /mnt

unzip instantclient-basic-linux.x64-19.22.0.0.0dbru.zip

修改安装包及目录

chown -R ymp:ymp instantclient_19_22

3.6 安装依赖包 libaio

# 查看是否已安装libaio动态库

rpm -qa | grep libaio

# 若未有版本信息打印,安装libaio

yum install -y libaio

4. 安装ymp(使用内置库方式)

内置库:安装ymp的同时,安装yashanDB作为ymp的业务库(应用+数据库)

4.1 安装包的权限及解压

# 修改安装包所属用户及组

chown -R ymp:ymp yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip

# 却换用户及解压

su - ymp

# 解压

unzip yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip

4.2 安装配置文件说明(本次按默认参数安装)

[root@vir235 mnt]# ll yashan-migrate-platform/conf/

total 12

-rw-r--r--. 1 ymp ymp 6344 Apr 8 06:37 application.properties

-rw-r--r--. 1 ymp ymp 120 Apr 8 06:37 db.properties

db.properties:内置库配置信息,包含端口,内置库密码,字符集

application.properties:ymp 的配置信息,端口,连接数据库信息等等

4.3 安装内置库和OCI客户端并启动YMP

cd /mnt/yashan-migrate-platform

sh bin/ymp.sh install --db /mnt/yashandb-personal-23.2.1.100-linux-x86_64.tar.gz --path /mnt/instantclient_19_22/

4.4 查看ymp状态

[ymp@vir235 yashan-migrate-platform]$ sh bin/ymp.sh status

YMP is running, pid is 29191.

Built-in database is used, pid is 28964.

4.5 查看ymp的版本

[ymp@vir235 yashan-migrate-platform]$ sh bin/ymp.sh -v

Yashan-migrate-platform version: Release v23.2.1.0

YashanDB SQL Personal Edition Release 23.2.1.100 x86_64

YashanDB Loader Personal Edition Release 23.2.1.100 x86_64 2d13f1d

5. 从Oracle 迁移数据到YashanDB

登录

登录YMP平台,地址IP:PORT,默认端口8090,默认账号密码admin/admin

输入默认密码登录,提示修改账号密码,密码强度要求:密码长度范围8~32个字符,必须包含大小写字母、数字和特殊字符

(安全!安心)

登录进来,2个页签:任务管理和数据源管理

5.1【数据源管理】-> 添加数据源

PS: 配置完后,顺手做下“测试连接”,确定连通性

1、源端配置(配置连接、端口、账号密码信息)

目标端配置

5.2 任务管理

5.2.1 创建任务

定义任务名称,选择源端数据库,勾选 “评估建议”,并选择“内置库”,全选“评估对象”

有此也可以知道,当前版本支持12种对象包含:

表、约束、索引、视图、序列、物化视图、同义词、触发器、自定义类型、自定义函数、包、存储过程

选择评估的范围(这里是选择需要迁移的schema),及其他设置

5.2.2 迁移评估

评估很快,大概一分钟的时间,具体依据源库的大小

评估中:

评估完成,有此可见兼容性100%,点击下一步

5.2.3 迁移配置

(1)全选所有对象类型,并配置初始化配置

(2)点击下一步,预检查,发现有版本及表空间红色提示“检查未通过”,这类是必须解决的;黄色“警告”自我评估后,可以忽略

(3)点击“查看详细”,提示“目标端表空间容量符合迁移要求。目标端表空间TS_BG不存在,可能导致迁移失败。”

-- 需要手动创建

SQL> create tablespace TS_BG;

create tablespace TS_BG;

(4)警告:OCI版本不一致,这个可以忽略

(5)数据类型不一致(影响不大)

数据类型不匹配提示,点击详细,会下载具体的内容到本地,打开详细如下:

TIMESTAMP类型:Oracle范围'-4712-01-01 00:00:00.000000000' ~ '9999-12-31 23:59:59.999999999',YashanDB范围'0001-01-01 00:00:00.000000' ~ '9999-12-31 23:59:59.999999',超范围数据迁移时可能有风险。

DATE类型:Oracle范围'-4712-01-01 00:00:00' ~ '9999-12-31 23:59:59',YashanDB范围'0001-01-01 00:00:00' ~ '9999-12-31 23:59:59',超范围数据迁移时可能有风险。

不存在有风险的自定义类型。

5.2.4 离线迁移

迁移很快速度很快,点赞

5.2.5 校验初始化

没啥好说的,全选对象,点击校验

5.2.6 一致性校验(一致占比占比还是很高的)

(1)【忽略】跳过的表3张,由于表中存在clob字段,不支持校验

(2)【关注】不一致表数据,字段类型为:DOUBLE,查看详细,有一行记录(手工比对了源表及目标端表,其实是5条记录)

如下图,左边是源端,右边是目标端

问题解决:手动更新;并求小崖老师关注

6. 常见问题处理

6.1 数据配置测试连接不通的问题

数据源测试连接失败 2024-04-23 13:50:00

YASHANDB数据源[yahandb]获取连接异常:The connection attempt failed.

问题处理:

1)确认账号密码是否正确,在原服务器上登录测试

2)确认端口是否开放,若防火墙已开,开放数据库端口

6.2 版本不一致问题

(1)OCI版本不一致告警,可忽略

(2)数据库版本检查:评估数据库版本(23.2.1.100)与目标端数据库版本(23.1.1.100)不一致,这个必须解决

7. 问题反馈(看是否优化)

7.1 【迁移配置】“距上次评估” 时间不太准

实际是应该是 3分21秒,而提供的是12时3分21秒;

可能与服务器的时区有关,本地时区北京时间,而服务器上是 EDT 2024

7.2 数据类型DOUBLE 的精度问题

如上 5.2.6 (2)所示。

接下来我们做个double数据类型的测试,发现直接插入的数据是没有问题的,数据对double支持这个精度

SQL> create table t(id int,b double);

Succeed.

SQL> insert into t values(1,116.395438068289);

1 row affected.

SQL> insert into t values(2,5.123456789123456);

1 row affected.

SQL> commit;

Succeed.

SQL> select id,to_char(b) from t;

ID TO_CHAR(B)

------------ ---------------------------------------------

1 1.16395438068289E+002

2 5.1234567891234564E+000

2 rows fetched.

写在最后的话:整个ymp的安装和迁移还是很顺利的,迁移的结果也很喜人。

更多ycp的文章,请关注:

YashanDB YCP 培训笔记之内置函数

友情链接: