崖山迁移平台(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 培训笔记之内置函数