尝试在MariaDB 10.3上使用Spider存储引擎.

MariaDB 服务器 10.3.7 在2018年5月成为GA时,Spider存储引擎也随之成为GA。

https://mariadb.com/kb/zh-cn/library/mariadb-1037-release-notes/
https://mariadb.com/kb/zh-cn/library/spider-storage-engine-overview/
https://mariadb.com/kb/zh-cn/library/spider-installation/

蜘蛛的概述

通过在 Spider 中将包含大量数据的表进行分区划分,并将其分片到多个节点(数据节点)上,可以实现在写入操作写入时进行水平扩展。听说腾讯游戏等公司广泛使用此技术。

考试环境

    OS: CentOS 7.5.1804
    MariaDB 10.3.9 GA
    Spider Node x 1 (ホスト名: spider)
    Data Node x 2 (ホスト名: data1/data2)

数据节点的设置。

数据节点与非Spider存储引擎类似地创建表,并创建用于从Spider节点访问的用户。

创建InnoDB表格(目标主机:data1/data2)

创建一个明确的InnoDB表。

CREATE TABLE test.spider (
   id INT PRIMARY KEY AUTO_INCREMENT,
   name VARCHAR(50)
) ENGINE=InnoDB;

蜘蛛 用户创建

在每个数据节点上创建用户来将数据存储或查找到先前创建的InnoDB表中,从Spider节点进行分区。

GRANT ALL on *.* to spider@'%' identified by 'password';
FLUSH PRIVILEGES;

Spider Node 的设置(目标主机:spider)

只有使用Spider存储引擎才能作为代理对data node进行操作的Spider节点。

安装蜘蛛引擎。

由于有一个用于安装的SQL文件,请在MariaDB monitor(mysql)中使用SOURCE命令。

SOURCE /usr/share/mysql/install_spider.sql

创建服务器

假设每个数据节点的IP地址分配如下。

数据1:192.168.2.11
数据2:192.168.2.12

在Spider上创建服务器使其可引用为data1和data2。

CREATE SERVER data1 FOREIGN DATA WRAPPER mysql
 OPTIONS (
  HOST '192.168.2.11',
  DATABASE 'test',
  USER 'spider', 
  PASSWORD 'password',
  PORT 3306);

CREATE SERVER data2 FOREIGN DATA WRAPPER mysql
 OPTIONS (
  HOST '192.168.2.12',
  DATABASE 'test',
  USER 'spider', PASSWORD 'password',
  PORT 3306);

FLUSH TABLES;

创建蜘蛛表

在Spider节点上创建一个Spider表,并将其配置为在Data节点上进行InnoDB表的分区设置。

CREATE TABLE test.spider (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50)
) ENGINE=Spider COMMENT='wrapper "mysql", table "spider"'
 PARTITION BY HASH (id)
(
  PARTITION p1 COMMENT = 'srv "data1"',
  PARTITION p2 COMMENT = 'srv "data2"'
);

在这个例子中,根据id列的值将其分配给每个数据节点。

在中文中確定

SELECT * FROM information_schema.partitions WHERE table_name ='spider' \G

可以。

插入测试数据

为了避免在Spider节点的spider表上,频繁执行以下SQL语句超过2次每秒,请适当间隔地多次执行。

insert into spider (name) values (now());

确认测试数据

当数据1/数据2按照预期进行分区,并在Spider节点上查询时,能够访问到所有数据。

数据1

MariaDB [test]> select * from spider;
+----+---------------------+
| id | name                |
+----+---------------------+
|  2 | 2018-09-10 11:54:16 |
|  4 | 2018-09-10 11:54:18 |
|  6 | 2018-09-10 11:54:20 |
+----+---------------------+

数据2 èr)

MariaDB [test]> select * from spider;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | 2018-09-10 11:54:14 |
|  3 | 2018-09-10 11:54:17 |
|  5 | 2018-09-10 11:54:19 |
+----+---------------------+

蜘蛛节点

MariaDB [test]> select * from spider order by id;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | 2018-09-10 11:54:14 |
|  2 | 2018-09-10 11:54:16 |
|  3 | 2018-09-10 11:54:17 |
|  4 | 2018-09-10 11:54:18 |
|  5 | 2018-09-10 11:54:19 |
|  6 | 2018-09-10 11:54:20 |
+----+---------------------+

bannerAds