babelfish-for-postgresql在anlios8.8(centos8)安装

ops/2024/10/21 6:00:33/

postgresqlanlios88centos8_0">babelfish-for-postgresql在anlios8.8(centos8)安装

在这里插入图片描述

Babelfish for PostgreSQL 扩展了您的 PostgreSQL 数据库,能够接受来自 Microsoft SQL Server 客户端的数据库连接。这样做允许最初为 SQL Server 构建的应用程序直接使用 PostgreSQL,与传统迁移相比,只需更改代码,并且无需更改数据库驱动程序。

T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程序与 SQL Server 沟通的主要语言。

本文无论是centos系列的系统还是ubantu系列的系统都能安装成功。

提前说明:如果你想把babelfish与其他类型得pg数据库比如一些国产数据库结合使用,除非你有较强得功底或者你就是干数据库得,不然较难达到,因为可以看到,下面有一个安装包就是pg官网为babelfish修改的pgsql版本,所以要用于非postgresql的话,请先分析难度。

1.依赖安装

1.1安装相关依赖。

我们需要一个具有 root 权限的用户,可以指令前加sudo。

以下指令主要针对于Centos系列的依赖名称,再ubantu系列名称可以绘有所不同可以去官网找依赖,官网是ubantu的教程。

并且以下指令有的是工具的依赖,防止后续在操作的时候还需要下载这里一次性下载了多个依赖和工具比如git、unzip等工具,只是在整个操作中会使用到并不是安装babelfish必须依赖。

sudo yum install -y gcc make bison flex libxml2 libxml2-devel libxslt libxslt-devel openssl openssl-devel readline readline-devel zlib zlib-devel openldap-devel pam-devel uuid uuid-devel libuuid-devel cmake icu libicu libicu-devel gawk curl java-1.8.0-openjdk-devel python3-devel postgresql-devel pkgconfig unixODBC unixODBC-devel net-tools unzip gcc-c++ git

或者使用已经下载好的依赖文件夹导入rpm安装包进行依赖安装。

2.安装babelfish

2.1下载安装包

cd /opt
# 为babelfish修改的pgsql
git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git
# babelfish扩展
git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git# 下载antlr4
sudo curl https://www.antlr.org/download/antlr4-cpp-runtime-4.9.3-source.zip \--output /opt/antlr4-cpp-runtime-4.9.3-source.zip
# 下载cmake
sudo curl -L https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-x86_64.sh --output ~/cmake-3.20.6-linux-x86_64.sh

如果上面地址下载不成功就使用浏览器去下载之后上传的linux,因为很多安装包是国外网站。

2.1.1将babelfish安装包以及依赖上传到服务器/opt/路径

直接下载的就不用上传

在这里插入图片描述

2.2安装

接下来,我们就开始编译安装吧。

# 解压 如果上传的时候是压缩包上传的需要解压,直接下载的无需操作这一步
cd /opt
sudo unzip /opt/babelfish_extensions.zip
sudo unzip /opt/postgresql_modified_for_babelfish.zip# 正式开始安装步骤
# 创建安装目录INSTALLATION_PATH=/usr/local/pgsql 
mkdir "$INSTALLATION_PATH"# 构建配置
cd /opt/postgresql_modified_for_babelfish# 在编译Babelfish源代码之前,我们首先需要在源代码的目录中运行配置脚本,配置编译命令如下:
sudo ./configure CFLAGS="-ggdb" \
--prefix=${INSTALLATION_PATH} \
--enable-debug \
--with-libxml \
--with-uuid=ossp \
--with-icu \
--with-extra-version="Babelfish for PostgreSQL"

如果configure时遇到问题,没有就跳过:

# 给./configure文件赋执行权限
sudo chmod -R 777 configure# 然后再重新执行上面的指令./configure......
# 接着执行编译安装
# 编译安装
cd /opt/postgresql_modified_for_babelfish
sudo make            # Compiles the Babefish PostgreSQL enginecd contrib 
sudo make            # Compiles the PostgreSQL default extensionscd ..
sudo make install    # Installs the Babelfish PostgreSQL enginecd contrib
sudo make install    # Installs the PostgreSQL default extensions

2.3 安装cmake、Antlr4为安装扩展做准备

# 1.安装 cmake
curl -L https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-x86_64.sh --output /opt/cmake-3.20.6-linux-x86_64.shchmod +x /opt/cmake-3.20.6-linux-x86_64.sh/opt/cmake-3.20.6-linux-x86_64.sh --prefix=/usr/local --skip-licensecp /usr/local/bin/cmake /usr/bin/# 2.安装antlr
curl https://www.antlr.org/download/antlr4-cpp-runtime-4.9.3-source.zip --output /opt/antlr4-cpp-runtime-4.9.3-source.zip sudo unzip -d /opt/antlr4 /opt/antlr4-cpp-runtime-4.9.3-source.zipsudo mkdir /opt/antlr4/build cd /opt/antlr4/build EXTENSIONS_SOURCE_CODE_PATH="/opt/babelfish_extensions"cmake .. -DANTLR_JAR_LOCATION="$EXTENSIONS_SOURCE_CODE_PATH/contrib/babelfishpg_tsql/antlr/thirdparty/antlr/antlr-4.9.3-complete.jar" \-DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_DEMO=True#3.下面编译的过程需要网络,需要访问git:
sudo make
sudo make install
sudo cp /usr/local/lib/libantlr4-runtime.so.4.9.3 "$INSTALLATION_PATH/lib"

2.4 环境变量设置

# 我们已经安装了Babelfish for PostgreSQL引擎,还需要设置几个环境变量,接下来才继续构建babelf扩展。
# PG_CONFIG:指向在Babelfish平台PostgreSQL的引擎安装pg_config文件的位置。
# PG_SRC: 指向 Babelfish for PostgreSQL 引擎源文件夹的位置。
# cmake: 指向包含 cmake 二进制文件的路径INSTALLATION_PATH=/usr/local/pgsql
export PG_CONFIG=$INSTALLATION_PATH/bin/pg_config
export PG_SRC=/opt/postgresql_modified_for_babelfish
export cmake=/usr/local/bin/cmake

2.5编译babelfish扩展

以下安装只要没有报错,就是安装成功。
# Install babelfishpg_money extension
cd /opt/babelfish_extensions/contrib/babelfishpg_money
sudo make
sudo make install# Install babelfishpg_common extension
cd ../babelfishpg_common
sudo make 
sudo make install# Install babelfishpg_tds extension
cd ../babelfishpg_tds
sudo make 
sudo make install# Installs the babelfishpg_tsql extension
cd ../babelfishpg_tsql
sudo make 
sudo make install
1.再安装遇到报错,这种情况依赖环境没有引入成功:

在这里插入图片描述

解决办法1:

重新执行:

INSTALLATION_PATH=/usr/local/pgsqlexport PG_CONFIG=$INSTALLATION_PATH/bin/pg_configexport PG_SRC=/opt/postgresql_modified_for_babelfishexport cmake=/usr/local/bin/cmake

解决办法2:

使用以下指令:sudo make PG_CONFIG=/usr/local/pgsql/bin/pg_config PG_SRC=/opt/postgresql_modified_for_babelfish cmake=/usr/local/bin/cmakesudo make install PG_CONFIG=/usr/local/pgsql/bin/pg_config PG_SRC=/opt/postgresql_modified_for_babelfish cmake=/usr/local/bin/cmake在每个make和make install 后都在加上这个路径。

解决办法3:

cd  ~ sudo vim .bashrc在文档底部输入export PG_CONFIG=/usr/local/pgsql/bin/pg_configexport PG_SRC=/opt/postgresql_modified_for_babelfishexport cmake=/usr/local/bin/cmake然后执行source .bashrc

3.初始化及配置 PostgreSQL

以上Babelfish引擎及Babelfish扩展部署完成后,现在我们就该初始化PostgreSQL 数据库实例了。在启动 Babelfish 之前,我们需要在安装文件夹中做一些更改。这是因为如果所有者具有 root 访问权限,PostgreSQL 将不会启动。此外,我们需要为 PostgreSQL 创建一个目录和用户。

#创建独立用户 postgres
mkdir -p $INSTALLATION_PATH/data
adduser --disabled-password --gecos "" postgres
chown -R postgres:postgres $INSTALLATION_PATH# 初始化数据并配置
su postgres
INSTALLATION_PATH=/usr/local/pgsql 
$INSTALLATION_PATH/bin/initdb -D $INSTALLATION_PATH/datavim $INSTALLATION_PATH/data/postgresql.conf 
listen_addresses = '*'
port = 5432
shared_preload_libraries = 'babelfishpg_tds'vim $INSTALLATION_PATH/data/pg_hba.conf
host    all             all             0.0.0.0/0               md5
#启动 PostgreSQL
$INSTALLATION_PATH/bin/pg_ctl -D $INSTALLATION_PATH/data start

4.连接babelfish

都部署完成后,我们现在可以连接 Babelfish了。在Linux环境下,可以使用psql、tsql、sqlcmd 这三个客户端工具连接。当然,你也可以在 Windows 环境使用 SQL Server Management Studio (SSMS) 来连接。

apt-get install -y postgresql-client  apt-get install -y freetds-binlsb_release -a
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/21.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
apt-get update
apt-get install -y mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

现在,我们先使用psql通过5432端口连接至PostgreSQL,同时创建一个用户来进行测试。其中migration_mode有2种模式,在single-db的情况下,MS SQL数据库被映射到PostgreSQL中的模式。在multi-db情况下,可使用多个数据库

#使用 psql 连接 Babelfish 并创建用户 jeeson 和数据库 demo
psql -h 127.0.0.1 -p 5432 -d postgres -U postgres
SELECT version();create user jeeson superuser password 'YourNewStrong@Passw0rd';
create database demo owner jeeson;
\c demo
create extension if not exists "babelfishpg_tds" cascade;
alter system set babelfishpg_tsql.database_name = 'demo';
alter database demo set babelfishpg_tsql.migration_mode = 'multi-db';
select pg_reload_conf();
call sys.initialize_babelfish('jeeson');#使用 tsql 或 sqlcmd 连接至 Babelfish
tsql -S 127.0.0.1 -p 1433 -U jeeson -P "YourNewStrong@Passw0rd"sqlcmd -S 127.0.0.1,1433 -U jeeson -P "YourNewStrong@Passw0rd"

我们创建了一个数据库 demo,以及一个用户 jeeson。现在,我们使用 tsql 和sqlcmd 通过1433端口连接到 Babelfish 看看。

在这里插入图片描述

是不是很神奇?不要以为仅仅是连接到 PostgreSQL,它可是用 SQL Server 的T-SQL语法进行操作的。当你要把SQL Server 数据库迁移到PostgreSQL时,只需把SQLServer的生成的SQL脚本执行即可。

对于习惯使用 SQL Server Management Studio 的同学,也可以在Windows中直接连接哦。不过需要注意的是,不是通过资源管理器连接服务器,而是只打开一个新查询窗口进行连接!

在这里插入图片描述

对于用户来说,Babelfish 兼容 PostgreSQL 语法。而对 SQL Server 来看,就像一个阉割版的云产品一样。其实,对于非运维人员,常用的T-SQL已经足够适用。Babelfish 有一个名为 Babelfish Compass 的评估工具,可帮助人们验证SQLServer 的迁移。只需在 DDL 上运行 Compass 工具,它能确认Babelfish对T-SQL代码的支持程度、识别在执行Babelfish之前可能需要更改的T-SQL代码。

本文参考链接:https://mp.weixin.qq.com/s/-Rwf9R5utg_wYi91ZcUsFA


http://www.ppmy.cn/ops/25409.html

相关文章

正则表达式的常见语法

目录 一、基本的正则表达式语法 1.1 字符类 1.2 单个字符的特殊表示 1.3 量词表示 1.4 边界匹配 1.5 分组与捕获 二 、java中的使用 在Java中使用正则表达式进行字符串匹配可以说是一个很重要的技能,尤其对于需要进行文本处理或者字符替换的程序来说&#xff0…

商城数据库88张表结构(十二)

DDL 45.商城信息表 CREATE TABLE wang_messages (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增id,msgType tinyint(4) NOT NULL DEFAULT 0 COMMENT 消息类型(0:后台手工发送的消息 1:系统自动发的消息),sendUserid int(11) NOT NULL DEFAULT 0 COMMENT 发送者id,receiveU…

外观模式【结构型模式C++】

1.概述 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 2.结构   外观角色(Facade):为多个子系统对外提供一个共同的接口,知道哪些子系统负责处理请求,将客户端的请…

再谈“协议”

1.认识协议 之前我们使用TCP的方式实现了一个服务器,而TCP是面向字节流的,而UDP是面向数据报的,接下来通过一个例子区分两种的区别。 UDP面向数据报:就如同发快递,你发多少个快递,对面就收到多少个快递&am…

(学习日记)2024.04.29:UCOSIII第五十三节:User文件夹函数概览(uC-LIB文件夹)第三部分

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。 回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。 这…

windows rabbitMq安装

一、Erlang 环境准备 下载安装包 跟我们跑java项目,要装jdk类似。rabbitMQ是基于Erlang开发的,因此安装rabbitMQ服务器之前,需要先安装Erlang环境。 官网直接下载windows直装版本:https://www.erlang.org/downloads 无脑安装&a…

【网站项目】个人需求和地域特色的外卖推荐系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

深入理解Java消息中间件-性能优化和调优

性能优化和调优是构建高性能系统的重要环节,这对于Apache Kafka这样的消息中间件尤为重要。下面我们将介绍一些具体的性能优化和调优操作方式,以帮助你更好地利用Kafka来构建高性能的消息系统。 合理配置Kafka集群:合理配置Kafka集群的节点数…