YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
- MPP 架构
- 镜像分布策略
- 持续聚集
- 滑动窗口
- Grafana 监控指标解读
- Prometheus 监控指标解读
- 术语表
-
工具指南
- mxaddmirrors
- mxbackup
- mxbench
- mxdeletesystem
- mxgate
- mxinitstandby
- mxmoveseg
- mxpacklogs
- mxrecover
- mxrestore
- mxshift
- mxstart
- mxstate
- mxstop
- gpconfig
- pgvector
-
数据类型
-
存储引擎
-
执行引擎
-
系统配置参数
SQL 参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEGMENT_SET
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEGMENT_SET
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
常见问题(FAQ)
FDW for MySQL
1. 准备 MySQL 环境
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
2. 安装 mysqlclient 和共享库
2.1 安装 mysqlclient
注意
以下安装命令仅为示例,不同 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
2.2 设置共享库
将 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
3. 在 YMatrix 中创建 FDW
下面登录 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
4. 使用 mysql_fdw 读写数据表
外部表创建成功后,下面就可以通过直接读写外部表来实现对 MySQL 中的 test 表的操作。
4.1 查询数据
通过如下查询可以看到,外部表数据和原表相同:
mxadmin=# SELECT * FROM ext_mysql;
c1 | c2
----+----
0 | 0
1 | 1
2 | 2
(3 rows)
4.2 写入数据
向外部表插入数据:
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
表中。