Apache Doris通过外部表同步数据

Apache Doris通过外部表同步数据

image-20210928183108861

Doris 可以创建通过 ODBC 协议访问的外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的方式导入外部表的数据。

本文档主要介绍如何创建通过 ODBC 协议访问的外部表,以及如何导入这些外部表的数据。目前支持的数据源包括:

  • MySQL
  • Oracle
  • PostgreSQL

ODBC驱动安装

5.3 驱动

1.下载5.3版本的MySQL的odbc驱动

img

所以准备了一个5.3版本的驱动

  1. Doirs所在的Docker安装unixODBC

    因为mysql-odbc依赖unixodbc

    yum install unixODBC.x86_64 -y yum install unixODBC-devel.x86_64 -y
    
  2. 安装MySQL的odbc驱动

先将安装包从宿主机拷贝到docker节点上

hejiahao@mounthua:~/package$ docker cp mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar 757c1cfcaa55:/opt
hejiahao@mounthua:~/package$

解压

tar -xvf mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar 

拷贝

cd mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit cp lib/* /usr/lib64

lib下面有两个文件

img

  • 5a是ansi编码
  • 5w是Unicode编码

由此可见,Doris需要的是Unicode编码的文件,也就是5w那个文件

[root@757c1cfcaa55 mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit]# cd bin ./myodbc-installer -d -a -n "MySQL ODBC 5.3 Driver" -t "DRIVER=/usr/lib64/libmyodbc5w.so;SETUP=/usr/lib64/libmyodbc5w.so"
[root@757c1cfcaa55 bin]# 

4.为每一台Doris的BE节点配置MySQL的ODBC

进入be的conf目录,有个odbcinst.ini文件

cd output/be/conf/
vim odbcinst.ini

修改MySQL的相关配置

# Setup from the unixODBC package
[MySQL ODBC 5.3 Unicode Driver]
Description     = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc5w.so
FileUsage       = 1

配置完以后重启BE即可,所有BE节点操作一样

8.0 驱动

  • 下载地址
https://downloads.mysql.com/archives/get/p/10/file/mysql-connector-odbc-8.0.11-1.el7.x86_64.rpm
  • 然后执行
yum localinstall -y mysql-connector-odbc-8.0.11-1.el7.x86_64.rpm
  • 配置驱动
vim /etc/odbcinst.ini

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/lib64/libmyodbc8w.so
UsageCount=1

[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/lib64/libmyodbc8a.so
UsageCount=1

  • 测试驱动
vim  /etc/odbc.ini

[mysql]
Description     = Data source MySQL
Driver          = MySQL ODBC 8.0 Driver
Server          = 192.168.1.120
Host            = 192.168.1.120
Database        = dbname
Port            = 3306
User            = root
Password        = 123456

一般是通过uncode 方式连接,Driver 必须是MySQL ODBC 8.0 Driver ,

其他参数按mysql server 的设置。Database 选择已经建立好的数据库。

  • 测试ODBC连接

[root@757c1cfcaa55 be]# isql -v mysql
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

一切正常

配置Doris be ODBC

Doris 使用ODBC连接mysql或者其他数据库,只需要在BE节点安装和配置ODBC即可

修改BE节点odbc配置信息

├── bin
│   ├── be.pid
│   ├── start_be.sh
│   └── stop_be.sh
├── conf
│   ├── be.conf
│   └── odbcinst.ini   //修改这个文件的配置信息
├── lib
│   ├── meta_tool
│   ├── palo_be
│   ├── small_file
│   ├── udf
│   └── udf-runtime

示例:

我这里只使用了Mysql

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbc.so
Setup           = /usr/lib/libodbcpsqlS.so
FileUsage       = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
#[MySQL ODBC 8.0 Unicode Driver]
#Description     = ODBC for MySQL
#Driver          = /usr/lib64/libmyodbc8w.so
#FileUsage       = 1
[MySQL Driver]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc8a.so
FileUsage       = 1

# Driver from the oracle-connector-odbc package
# Setup from the unixODBC package
[Oracle 19 ODBC driver]
Description=Oracle ODBC driver for Oracle 19
Driver=/usr/lib/libsqora.so.19.1

配置完以后重启BE即可,所有BE节点操作一样

创建外部表

创建 MySQL外部表的详细介绍请参阅 CREATE ODBC TABLE 语法帮助手册。

这里仅通过示例说明使用方式。

  1. 创建 MySQLResource

    MySQLResource 的目的是用于统一管理外部表的连接信息。

    CREATE EXTERNAL RESOURCE `mysql_odbc`
    PROPERTIES (
    "type" = "odbc_catalog",
    "host" = "192.168.50.173",
    "port" = "3306",
    "user" = "root",
    "password" = "root",
    "driver" = "MySQL Driver",  
    "odbc_type" = "mysql"
    );
    

    这里我们创建了一个名为 mysql_odbc 的 Resource,其类型为 odbc_catalog,表示这是一个用于存储 ODBC 信息的 Resource。odbc_typemysql,表示这个 OBDC Resource 是用于连接 mysql 数据库的。关于其他类型的资源,具体可参阅 资源管理 文档。

  2. 创建外部表

CREATE EXTERNAL TABLE `external_rds_test` (
  id BIGINT,
  user_id INT,
  name VARCHAR(20),
  age INT,
  password VARCHAR(20)
) ENGINE=ODBC
COMMENT "ODBC"
PROPERTIES (
    "odbc_catalog_resource" = "mysql_odbc",
    "database" = "lining_olap",
    "table" = "test"
);

这里我们创建一个 external_rds_test 外部表,并引用了之前创建的 mysql_odbc Resource

查询数据

mysql> select * from external_rds_test;
+------+---------+---------+------+----------+
| id   | user_id | name    | age  | password |
+------+---------+---------+------+----------+
|    1 |    1111 | 3dasasd |  123 | 3123213  |
+------+---------+---------+------+----------+
1 row in set (0.06 sec)

mysql> 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值