南大通用数据迁移之GP_To_GBase8a(一)方法与示例

本篇文章来自南大通用GBase技术社区,更多精彩内容请访问 https://www.gbase.cn/community

第一章、迁移背景概述

GreenPlum数据库迁移至国产数据库是一个复杂且关键的过程,涉及多个方面的考虑和操作。可参考以下重点内容:
1、迁移背景与需求
        GreenPlum作为一款高性能的分布式数据库,广泛应用于大数据分析领域。然而,随着国产数据库技术的不断发展和成熟,越来越多的企业和机构开始考虑将GreenPlum迁移到国产数据库上(例如,GBase8a),以实现自主可控、降低成本等目标。
2、迁移准备与评估
        在迁移之前,需要进行充分的准备工作和评估。首先,需要对GreenPlum数据库的结构、数据量、并发访问量等进行全面的分析,以确定迁移的复杂度和风险。其次,需要选择适合的国产数据库产品,并进行性能测试和兼容性测试,以确保迁移后的系统能够稳定运行。
3、迁移方案设计
        根据迁移前的评估结果,制定详细的迁移方案。方案应包括数据迁移策略、系统架构调整、应用程序修改等方面的内容。在数据迁移策略方面,可以选择全量迁移或增量迁移的方式,根据数据量的大小和业务的容忍度来决定。在系统架构调整方面,需要考虑国产数据库的特性,如分布式架构、扩展性等,进行相应的优化和调整。在应用程序修改方面,需要对原有的应用程序进行修改,以适应国产数据库的语法和功能。
4、迁移实施与监控
        在迁移实施过程中,需要按照迁移方案逐步执行。首先,进行数据备份和恢复测试,确保数据的完整性和准确性。然后,进行实际的数据迁移操作,包括数据的导出、导入、转换等步骤。在迁移过程中,需要实时监控迁移进度和异常情况,及时处理可能出现的问题。
5、迁移后验证与优化
        迁移完成后,需要对新系统进行全面的验证和优化。首先,进行功能验证和性能测试,确保新系统能够满足业务需求。其次,根据实际运行情况进行优化调整,包括参数调整、索引优化、查询优化等方面的操作。此外,还需要建立完善的监控和运维体系,确保新系统的稳定性和可用性。
6、总结与展望
        GreenPlum数据库迁移至国产数据库是一个具有挑战性和机遇的过程。通过充分的准备工作、合理的迁移方案设计、严格的实施与监控以及迁移后的验证与优化,可以确保迁移的成功并实现预期的目标。随着国产数据库技术的不断发展和完善,未来将有更多的企业和机构选择迁移到国产数据库上,实现自主可控和降低成本的目标。

第二章、常见迁移方法异同

迁移过程中,除了要保证整体流程与方案的可行性之外,下面介绍一些迁移过程常用的迁移方法以及两者异同。以提高GP迁移至8a的可靠性。

2.1.连接操作符

        GreenPlum中连接符“||”表示字符串连接,没有concat函数,而在GBase中连接符“||”既可以表示连接也可以表示或。当GBase系统变量sql_mode打开PIPES_AS_CONCAT时,“||”表示连接,和CONCAT函数等价,而当GBase系统变量sql_mode关闭PIPES_AS_CONCAT时,“||”表示或。
注意GBase在默认安装时会打开PIPES_AS_CONCAT参数,因此在应用系统迁移时,原有的连接符“||”可以不进行修改。如果想确认系统变量是否正确可以使用如下命令查看。
        gbase> show variables like '%sql_mode%';

2.2.异或操作符

        GreenPlum中”#”表示异或操作符,”^”表示power函数,而在GBase中”#”表示注释,^表示异或。
        GreenPlum中使用操作符”#”表示异或,GBase中表示注释
        GreenPlum中使用操作符”^”表示power函数,GBase中表示异或

2.3.EXCEPT/MINUS函数

        GreenPlum中EXCEPT函数和GBase中MINUS函数等价,表示求两个查询结果的差集,GBase不支持EXCEPT关键字,如果使用会报语法错误。因此,在应用系统迁移时,需要将所有的EXCEPT改成MINUS。

2.4.正则表达式

        GreenPlum中正则表达式的支持非常灵活,支持正则表达式操作符,而在GBase中是不支持的,但是所有的这些操作符都可以使用GBase提供的REGEXP进行替换。此外,                 GreenPlum和GBase均实现了常见的正则表达式函数,例如regexp_replace函数,可以将模式匹配的字符串替换成指定的函数。

        注意GreenPlum中regexp_replace函数和GBase中的用法存在差异。GBase中默认是替换所有匹配到的字符串,而GreenPlum中只替换第一次匹配到的,如果想替换所有匹配的字符串,则需要额外提供参数’g’。因此在上述示例中如果将GreenPlum中的查询语句写为select regexp_replace(a, ‘a.c’,’A’,’g’) from t1;则查询结果就和GBase保持一致了。

2.5.临时表

        在GREENPLUM中,可以创建以下两种临时表: 
        1)会话特有的临时表 
        CREATE TEMPORARY TABLE ON COMMIT PRESERVE ROWS; 
        2)事务特有的临时表 
        CREATE TEMPORARY TABLE ON COMMIT DELETE ROWS; 
        例如:创建会话特有的表:create temporary table t1(a int) on commit preserve rows; 
        创建事务特有的表:create temporary table t2(a int) on commit delete rows; 
        --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次事务提交后将截断表(删除全部行) 
        --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当事务提交后,表中的数据不会截断,依然会保留。需要说明的是,因为所有的临时表在会话结束时都会被删除,因此在这里将ON COMMIT PRESERVE ROWS建立的表称之为会话特有的临时表。 
        GBase也有临时表。但是临时表被限制在当前连接中,当连接关闭时,临时表会自动地删除。这就意味着,两个不同的连接可以使用同一个临时表名而不会发生冲突,也不会与同名现有的表冲突(现有表将被隐藏,直到临时表被删除)。
        CREATE TEMPORARY TABLE temp1
        (id int auto_increment primary key, ClassifiedID int);
        <......>
        DROP TEMPORARY TABLE temp1 ;

2.6.时间操作

        GreenPlum时间可以使用算术操作符进行操作,GBase可以使用 ADDDATE 函数,例如。

第三章、迁移示例

        下面我们将迁移一个实际的 GreenPlum 实例到 GBase 中。

3.1.迁移准备

    首先需要安装 GreenPlum数据库和GBase 数据库。GBase数据库的安装请参考GBase集群安装手册,下面重点说明GreenPlum集群安装过程。如果没有特别说明,文档中#表示root用户,$表示gpadmin用户。
3.1.1.GreenPlum集群部署概览

        我们安装的GreenPlum集群为3点集群环境,其中包含1个master节点和3个segment host节点,考虑到作为实验环境,master节点压力不会太大,因此为了充分利用资源,这里 redvm001服务器既承担master角色又承担segment host角色。

3.1.2.系统环境准备

    为了确保GreenPlum集群运行在最佳的状态,需要按照如下说明修改系统的环境。
1)系统参数,对应文件位置/etc/sysctl.conf
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
2)资源使用,对应文件位置/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
3)磁盘IO调度,GreenPlum建议使用deadline
例如:echo deadline > /sys/block/sbd/queue/scheduler,其中sdb为GreenPlum实际安装路径所在的磁盘。

3.1.3.GreenPlum集群安装

1)创建GreenPlum管理员账户
# groupadd -g 8000 gpadmin
# useradd -m -d /home/gpadmin -g gpadmin -u 8000 gpadmin
# passwd gpadmin
2)创建GreenPlum安装目录(如果执行默认安装,这步可以忽略)
# mkdir -p /opt/gp/greenplum          # GP install path
# chown -R gpadmin:gpadmin /opt/gp
3)执行安装
# su – gpadmin
$ /bin/bash greenplum-db-4.3.10.0-build-1-rhel5-x86_64.bin
......
**********************************************************************
Do you accept the Pivotal Database license agreement? [yes|no]
**********************************************************************
yes
**********************************************************************
Provide the installation path for Greenplum Database or press ENTER to 
accept the default installation path: /usr/local/greenplum-db-4.3.6.2
**********************************************************************
/opt/gp/greenplum                # type in the GP install path
***********************************************************************
Install Greenplum Database into </opt/gp/greenplum>? [yes|no]
***********************************************************************
yes
Extracting product to /opt/gp/greenplum
***********************************************************************
Installation complete.
Greenplum Database is installed in /opt/gp/greenplum

Pivotal Greenplum documentation is available
for download at http://docs.gopivotal.com/gpdb
***********************************************************************
4)检查hosts配置,在所有节点的/etc/hosts文件中增加如下内容。
10.10.10.226   redvm001
10.10.10.227   redvm002
10.10.10.228   redvm003
5)用GreenPlum集群部署工具在所有节点安装GreenPlum数据库、创建GreenPlum管理员和建立互信
# source /opt/gp/greenplum/greenplum_path.sh
# gpseginstall -f /home/gpadmin/hostfile_exkeys -u gpadmin -p gpadmin

$ vim hostfile_exkeys     # use gpadmin, all host
redvm001
redvm002
redvm003
:wq

3.1.4.初始化GreenPlum集群

1)Master节点创建master数据目录
# mkdir /opt/gp/master
# chown gpadmin:gpadmin /opt/gp/master
2)Segment节点创建segements数据目录
# source /opt/gp/greenplum-db/greenplum_path.sh 
# gpssh -f hostfile_gpssh_segonly -e 'mkdir -p /opt/gp/data/primary'
# gpssh -f hostfile_gpssh_segonly -e 'chown gpadmin:gpadmin /opt/gp/data/primary'

# vim hostfile_gpssh_segonly    #only segment host
redvm001
redvm002
redvm003
:wq
3)修改配置文件
$ source /opt/gp/greenplum-db/greenplum_path.sh
$ cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config
$ chmod +w gpinitsystem_config
$ vim gpinitsystem_config
MASTER_DIRECTORY=/opt/gp/master 
MASTER_HOSTNAME=redvm001               
declare -a DATA_DIRECTORY=(/opt/gp/data/primary)   # segements per host
注意这里安装时,由于我们每台服务器节点仅有一个物理CPU,因此这里DATA_DIRECTORY只有一个目录。如果每台服务器节点有2个物理CPU,则DATA_DIRECTORY建议配置如下:
declare -a DATA_DIRECTORY=(/opt/gp/data/primary /opt/gp/data/primary)
segments数据目录可以相同,GreenPlum会分配唯一后缀名,通常建议配置segments数据目录的个数和物理CPU个数相同。
4)执行初始化
$ gpinitsystem -m 25 -c gpinitsystem_config -h hostfile_gpinitsystem
$ vim hostfile_gpinitsystem    # only segments host
redvm001
redvm002
redvm003
:wq
5)添加环境变量
$ vim .bash_profile
source /opt/gp/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/opt/gp/master/gpseg-1
:wq
$ source .bash_profile

3.1.5.检查GreenPlum集群

1)启动集群
gpstart
2)关闭集群
gpstop
3)集群状态
gpstate
 

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gbase 8a 是一款国产的高性能关系型数据库管理系统,与MySQL是两款不同的数据库软件,因此不能直接使用MySQL的驱动来连接gbase 8a。 不过,gbase 8a提供了自己的ODBC驱动,可以使用ODBC的方式来连接gbase 8a数据库。在Java中,我们可以使用JDBC-ODBC桥来连接gbase 8a数据库,具体步骤如下: 1. 安装gbase 8a ODBC驱动,可以从gbase官网下载或联系gbase技术支持获取下载链接。 2. 配置ODBC数据源,在控制面板中打开“ODBC数据源”窗口,添加一个gbase数据源,填写相应的连接信息。 3. 在Java中使用JDBC-ODBC桥来连接gbase 8a数据库示例代码如下: ``` String url = "jdbc:odbc:yourdataresource"; // 数据源名称 String user = "username"; // 数据库用户名 String password = "password"; // 数据库密码 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection(url, user, password); ``` 在上述代码中,"jdbc:odbc:yourdataresource" 中的 "yourdataresource" 是ODBC数据源的名称,user 和 password 分别是gbase 8a数据库的用户名和密码。通过 Class.forName() 加载 JDBC-ODBC桥的驱动程序,在 DriverManager.getConnection() 方法中传入连接字符串、用户名和密码来获取连接对象。 4. 进行数据库操作,使用JDBC标准的API进行数据库操作,例如: ``` Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM tableName"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); //处理查询结果 } rs.close(); stmt.close(); conn.close(); ``` 以上就是使用JDBC-ODBC桥连接gbase 8a数据库的基本步骤,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值