背景
为推进国产技术的发展,公司部分项目实行软件国产化
目标
由原来的centos改为UOS,服务器及软件全部替换
适配计划
1、国产化环境搭建
2、原数据库字段长度扩容
3、数据库数据迁移
4、文件迁移
适配步骤
1、国产化环境搭建(略)
补充下人大金仓数据库安装,希望对大家有所帮助
1、创建目录
#数据库安装目录
/opt/Kingbase/ES/V8
#数据存储目录
/data/kingbase-54321
2、安装数据库(记得准备license.dat)
1、解压数据库安装文件
2、控制台安装:sh setup.sh -i console
3、接受许可、指定license.dat文件(/opt/license.dat)、指定安装目录、指定存储目录,完成数据库安装
4、启动数据库实例:sys_ctl -D /data/kingbase-54321
#停止:sys_ctl stop -D /data/kingbase-54321
5、初始化数据库:initdb -E UTF-8 -USYSTEM --case-insensitive -D /data/kingbase-54321
--case-insensitive:取消大小写敏感,如果不需要,步骤5可忽略
6、修改数据文件下kingbase.config
#解决where a_col = '' 的问题
ora_input_emptystr_isnull = false
#port = 54322 需要修改端口的改
7、再次启动:
sys_ctl stop -D /data/kingbase-54321
sys_ctl -D /data/kingbase-54321 -l logfile start
8、创建数据库
#临时使用
createdb -p 54321 -E utf-8 -O SYSTEM -U SYSTEM db_test
ksql -p54321 -USYSTEM -d db_test
CREATE DATABASE db_aaa ENCODING ='utf-8' LC_COLLATE="zh_CN.utf-8" LC_CTYPE="zh_CN.utf-8" TEMPLATE TEMPLATE0;
9、创建库下的模式
ksql -p54321 -USYSTEM -d db_aaa
CREATE SCHEMA db_schema1;
CREATE SCHEMA db_schema2;
CREATE SCHEMA db_schema3;
3、完成安装
如果一台服务器安装多实例数据库,这种方式也支持。
2、原数据库字段长度扩容(略)
长度扩容原因:原数据库中文占一个字符,kingbase占三个字符
提前扩容避免了哪些问题?
1、数据无法导入到目标库
2、索引文件有效
3、避免其他问题出现
3、数据库数据备份
首先需要了解库和模式的关系
一个数据库下有多个模式
在目标库创建数据库,记得添加字符集和大小写敏感
在目标库下创建对应的模式
数据备份
1、导出表结构
./pg_dump -h172.16.xxx.xxx -p5432 -Uuser -ddb_test -ndb_schema--section=pre-data > /opt/bak/schema_table.dmp
2、导出数据
./pg_dump -h172.16.xxx.xxx -p5432 -Uuser -ddb_test -ndb_schema --section=data > /opt/bak/schema_data.dmp
3、导出索引
./pg_dump -h172.16.xxx.xxx -p5432 -Uuser -ddb_test -ndb_schema --section=post-data > /opt/bak/schema_index.dmp
4、修改脚本
1、编辑*_table.dmp和*_inedx.dmp文件,修改其中插件名称、系统模式、系统表中pg_为sys_
2、修改表中的数据库模式和所有者信息 ,(修改表文件和索引文件)
例如:
修改所有者:pg:Owner: user 改为 ksql :Owner: user(用户)
修改所有者:pg:OWNER TO user 改为 ksql :OWNER TO user(用户)
4、恢复(到人大金仓)
前提:需要创建好库和模式
1、恢复表结构
ksql -h172.16.xx.xx -p54321 -Uuser -ddb_test < /date/move/schema_table.dmp
2、恢复数据
ksql -h172.16.xx.xx -p54321 -Uuser -ddb_test < /date/move/schema_data.dmp
3、恢复索引
ksql -h172.16.xx.xx -p54321 -Uuser -ddb_test < /date/move/schema_index.dmp
5、应用服务配置
dataSource.driverClass=com.kingbase8.Driver
dataSource.jdbcUrl=jdbc:kingbase8://172.16.xxx.xxx:54322/db_xxx?Charset=utf8
dataSource.user=SYSTEM
dataSource.password=xxxx
#方言
hibernate.dialect=org.hibernate.dialect.Kingbase8Dialect
4、文件迁移(略)
总结
开发环境迁移完成后需要对整个系统流程验证,这个过程涉及到数据库连接,方言适配(一般需要重写源码),函数替换,字段长度验证等。