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 文档
集群部署
SQL参考
工具指南
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软链接到matrixdb的lib目录下
ln -s /lib64/mysql/libmysqlclient.so.18 /usr/local/matrixdb/lib/libmysqlclient.so
追加libmysqlclient.so位置到配置文件
echo "/lib64/mysql/libmysqlclient.so.18" >> /etc/ld.so.conf
下面登录MatrixDB,使用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表中。