使用NDB集群在磁盘上操作

尽管NDB Cluster容易被误解,但它具备以下特性:可以将数据保存在SSD中(性能为传统硬盘的1/10),并且可以通过Memcache API访问memcached。

这次我们将执行前者。
事实上,基于磁盘的NDB Cluster在过去10年中没有变化。
因此,我们将按照这份资料的方式进行操作。
http://d.hatena.ne.jp/shibainu55/20081123/1225206847

性能为10分之一是根据惠普公司的资料确定的。如果NVDIMM和3D XPoint(Optane SSD)能够发挥其性能,那么性能差可能会缩小。

从SQL节点执行。

mysql> create logfile group lg_1 add undofile 'undo_1.dat' engine ndb;
Query OK, 0 rows affected (1.98 sec)
mysql> create tablespace ts_1 add datafile 'data_1.dat' \
    -> use logfile group lg_1 engine ndb;
Query OK, 0 rows affected (1.93 sec)
後はcreate tableで
tablespace ts_1 storage disk ENGINE = ndbcluster;
と最後につけるだけになります。

保存的位置将位于数据节点的数据目录下的文件夹中。

$cd /var/lib/mysql-cluster
ノード1
$ sudo ls ndb_4_fs
D1  D10  D11  D2  D8  D9  data_1.dat  LCP  undo_1.dat
ノード2
$ sudo ls ndb_5_fs
D1  D10  D11  D2  D8  D9  data_1.dat  LCP  undo_1.dat
標準では128MBのファイルが作成されるようです。
$ sudo ls -l ndb_4_fs
total 262236
drwxr-x--- 4 root root      4096 Dec 23 08:52 D1
drwxr-x--- 3 root root      4096 Dec 23 08:52 D10
drwxr-x--- 3 root root      4096 Dec 23 08:52 D11
drwxr-x--- 4 root root      4096 Dec 23 08:52 D2
drwxr-x--- 3 root root      4096 Dec 23 08:52 D8
drwxr-x--- 3 root root      4096 Dec 23 08:52 D9
-rw-r--r-- 1 root root 134283264 Dec 23 09:10 data_1.dat
drwxr-x--- 3 root root      4096 Dec 23 08:52 LCP
-rw-r--r-- 1 root root 134217728 Dec 23 09:05 undo_1.dat

将memcache插件改为基于磁盘使用。
编辑/usr/share/mysql/memcache-api/ndb_memcache_metadata.sql文件。
使用sed命令将”ENGINE”替换为”tablespace ts_1 storage disk ENGINE”。
从SQL节点导入。
使用以下命令启动memache插件:cat /usr/share/mysql/memcache-api/ndb_memcache_metadata.sql | mysql -uroot -p。

根据我的验证,当所有数据节点都重新启动时,即使使用基于磁盘的MySQL,也不像原生的MySQL那样容易使用。我希望能够仔细学习并能够解释其行为。对于基于磁盘的memcache,也可以轻松构建,如果你感兴趣的话,可以试着操作一下。

广告
将在 10 秒后关闭
bannerAds