400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
MySQL 环境:
Host: 127.0.0.1
Port: 3306
User: root
Database: test
现在,创建一张测试表:
mysql> CREATE TABLE test(c1 int primary key, c2 int);
Query OK, 0 rows affected (0.01 sec)
因为 MySQL 的 InnoDB 表必须有主键才能通过 mysql_fdw 写入,所以建表时指定了
c1
为主键。
然后,插入几条测试数据:
mysql> INSERT INTO test VALUES(0,0),(1,1),(2,2);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
注意
以下安装命令仅为示例,不同 yum 源安装的 RPM 包名称可能存在不同,MySQL 版本也需根据实际需要下载对应的版本。请勿直接复制执行。
注意
集群中的每台机器都需要进行安装配置。
在 sudo 权限下或使用 root 用户执行安装命令。
sudo yum install -y rh-mysql57-mysql
如果是离线环境,则需在 MySQL 官网下载 3 个 RPM 包(common
,libs
,client
)。参照以下命令执行安装即可:
sudo rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm --nodeps
sudo rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm --nodeps
sudo rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm --nodeps
将 libmysqlclient.so
软链接到 YMatrix 的 lib
目录下
ln -s /lib64/mysql/libmysqlclient.so.18 /opt/ymatrix/matrixdb5/lib/libmysqlclient.so
追加 libmysqlclient.so
位置到配置文件
echo "/lib64/mysql/libmysqlclient.so.18" >> /etc/ld.so.conf
下面登录 YMatrix,使用 mysql_fdw 连接刚才创建的 MySQL 数据表:
首先,创建 mysql_fdw 扩展:
mxadmin=# CREATE EXTENSION mysql_fdw;
CREATE EXTENSION
创建 MySQL 服务器定义:
mxadmin=# CREATE SERVER server_mysql FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '127.0.0.1', port '3306');
CREATE SERVER
创建用户映射:
mxadmin=# CREATE USER MAPPING FOR mxadmin SERVER server_mysql OPTIONS (username 'root',password '123456');
CREATE USER MAPPING
创建外部表:
mxadmin=# CREATE FOREIGN TABLE ext_mysql (c1 int, c2 int) SERVER server_mysql OPTIONS (dbname 'test', table_name 'test');
CREATE FOREIGN TABLE
外部表创建成功后,下面就可以通过直接读写外部表来实现对 MySQL 中的 test 表的操作。
通过如下查询可以看到,外部表数据和原表相同:
mxadmin=# SELECT * FROM ext_mysql;
c1 | c2
----+----
0 | 0
1 | 1
2 | 2
(3 rows)
向外部表插入数据:
mxadmin=# INSERT INTO ext_mysql VALUES(3,3);
INSERT 0 1
插入数据后,连接 MySQL 查看数据:
mysql> SELECT * FROM test;
+----+------+
| c1 | c2 |
+----+------+
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+------+
4 rows in set (0.00 sec)
可以看到,数据已经写入到了 MySQL 的 test
表中。