Spider Functions
Spider 存储引擎提供了以下 4 个 UDF 函数,是与 Spider 存储引擎一起安装的 UDF:
SPIDER_DIRECT_SQL:在远程服务器中执行 sql(Execute SQL on the remote server)
SPIDER_BG_DIRECT_SQL:后台 SQL 执行(Background SQL execution)
SPIDER_COPY_TABLES:(复制表数据)Copy table data
SPIDER_FLUSH_TABLE_MON_CACHE:(刷新 Spider 监视服务器信息)Refreshing Spider monitoring server information
(UDF:User-Defined Functions,用户定义函数,随着 Spider 存储引擎的安装一并安装,是一种用新函数扩展 MariaDB 的方式,该新函数的工作方式类似于本机(内置)MariaDB 函数)
本节中,没有特殊说明,一般都是在 spider server 中执行的语句
SPIDER_DIRECT_SQL
语法:
SPIDER_DIRECT_SQL('sql', 'tmp_table_list', 'parameters')
说明:
一个与 Spider Storage Engine 一起安装的 UDF,此功能用于在远程服务器上执行 SQL 字符串 sql,如参数中所定义。 如果返回任何结果集,它们将存储在 tmp_table_list 中。
如果 SQL 成功执行,则该函数返回 1;如果失败,则返回 0。
示例:
-- 创建一个临时表
CREATE TEMPORARY TABLE test.res
(
id int(10) unsigned NOT NULL,
accountName varchar(20) NOT NULL DEFAULT '',
name varchar(128) NOT NULL DEFAULT ''
) ENGINE=MEMORY;
-- 执行SPIDER_DIRECT_SQL语句
SELECT SPIDER_DIRECT_SQL('SELECT * FROM test.opportunities', 'res', 'srv "backend1", port "3306"');
执行SPIDER_DIRECT_SQL
-- 查询执行结果
SELECT * FROM test.res;
执行SPIDER_DIRECT_SQL结果
SPIDER_BG_DIRECT_SQL
语法:
SPIDER_BG_DIRECT_SQL('sql', 'tmp_table_list', 'parameters')
描述:
在远程服务器上后台执行给定的, 如参数列表中所定义的 SQL 语句;
如果查询返回结果集,则将结果存储在给定的临时表中。
当给定的 SQL 语句执行成功时,此函数返回被调用的 UDF 的数目。当给定的 SQL 语句失败时,它返回 0。
示例:
准备操作,在 backend2 的远程主机 MariaDB 上,给 test.opportunities 表添加一条数据:
INSERT INTO test.opportunities
(id, accountName, name, owner, amount, closeDate, stageName)
VALUES(1, 'ubut18test', 'spider', 'spider', 30, '2020-02-28', 'halo');
在 spider server 本机的 MariaDB 的 test 数据库新建一个临时表 res2:
-- 创建一个临时表
CREATE TEMPORARY TABLE if not exists test.res2
(
id int(10) unsigned NOT NULL,
accountName varchar(20) NOT NULL DEFAULT '',
name varchar(128) NOT NULL DEFAULT ''
) ENGINE=MEMORY;
执行 SPIDER_BG_DIRECT_SQL 示例语句:
SELECT SPIDER_BG_DIRECT_SQL('SELECT * FROM test.opportunities', 'test.res2', 'srv "backend2", port "3307"')
AS "Direct Query";
执行 SPIDER_BG_DIRECT_SQL示例语句
查看结果,就是刚刚 backend2 新加的那条数据:
SELECT * FROM test.res2;
SPIDER_BG_DIRECT_SQL执行结果
SPIDER_COPY_TABLES(无果)
语法:
SPIDER_COPY_TABLES(spider_table_name, source_link_id, destination_link_id_list [,parameters])
说明:
此函数可以在不停止 MariaDB service 的情况下,把表数据从
source_link_id
复制到destination_link_id_list
。
如果 spider 表已被分区,那么表名就需要是
table_name#P#partition_name
格式。
(to be honest,这两个 id 还没有研究透彻,测试示例会报错,有了解的可以分享一下,谢谢。)
SPIDER_FLUSH_TABLE_MON_CACHE
语法:
SPIDER_FLUSH_TABLE_MON_CACHE()
描述:
此函数用于刷新监控服务器(monitoring server)的信息。返回 1。
示例:
SELECT SPIDER_FLUSH_TABLE_MON_CACHE();
SPIDER_FLUSH_TABLE_MON_CACHE执行结果
到这里就简单说完 spider 存储引擎的使用了,主要特点就是处理不同的 MariaDB 实例就像在处理同一个实例一样。
更多的内容,可以去官网学习了解:
https://mariadb.com/kb/en/spider/
补充:查看 MariaDB 使用硬盘空间情况
安装 DISKS 插件:
INSTALL SONAME 'disks'
使用:
SELECT * FROM Information_Schema.DISKS
使用disks插件查看mariadb硬盘占用
限制:
- MariaDB 10.1.32 加入;
- 从 MariaDB 10.4.7,MariaDB 10.3.17,MariaDB 10.2.26 和 MariaDB 10.1.41 开始,它需要 FILE 权限;
- 该插件仅适用于 Linux。
网友评论