[컴][db] MariaDB 에서 Spider engine 사용하기

 

Spider with MariaDB

Spider Engine 은 partitioning 과 XA transactions 지원한다. 그리고 다른 MariaDB instanc들의 table 들을 하나의 instance 에 있는 table 처럼 다룰 수 있게 해준다. Spider node 는 MariaDB 서버이다. 그리고 이 서버에서 application 에서 오는 query 를 수신하게 된다. 그리고 실제 data 가 있는 data node에 접속해서 이 query 를 처리하게 된다. data node 도 data 를 가진 mariaDB instance 이다.


간단정리

  1. dbdeployer 로 instance 를 여러개 만든다. : 이러면 같은 host 에 port 가 다르게 해서 여러 instance 가 실행된다.
  2. data-node
    1. table 을 만든다.
    2. spider 계정을 만들어서 접근 권한을 준다.
  3. spider-node
    1. Spider Engine 을 사용할 수 있게 설정한다.
    2. create server 명령어로 data-node 정보를 생성한다.
    3. Spider engine 으로 data-node 에서 만든 table 과 똑같은 table 을 만들고, data-node 와 연결을 한다.


지원하는 version

아래는 stable 만 적어놨다. full list 는 ref.1 을 참고하자.

Spider Version Introduced Maturity
Spider 3.3.14 MariaDB 10.4.3, MariaDB 10.3.13 Stable
Spider 3.3.13 MariaDB 10.3.7 Stable

replication

10.4.5 부터는 아래 configuration 이 기본으로 들어가 있다.

slave_transaction_retry_errors="1158,1159,1160,1161,1429,2013,12701"

이것은 해당 error 가 발생하면, 자동으로 retry 를 하도록 하는 것이다.

10.3.4 에서 만약에 replication 을 위해서 spider 를 사용하는 경우라면 추가해야 한다.

  • 1158: Got an error reading communication packets
  • 1159: Got timeout reading communication packets
  • 1160: Got an error writing communication packets
  • 1161: Got timeout writing communication packets
  • 1429: Unable to connect to foreign data source
  • 2013: Lost connection to MySQL server during query
  • 12701: Remote MySQL server has gone away

dbdeployer

dbdeployer 를 이용해서 하나의 host 에서 여러 port 를 이용해서 mysql 를 여러개 띄울 수 있다. 이것을 이용해서 여러 topology 를 테스트 해 볼 수 있다. 이 dbdeployer 의 전신이 MySQL-Sandbox 이다. 여기서는 이 dbdeployer 를 이용해서 local 에서 mysql 을 구성하고 test 할 것이다.

instance 접근 방법

기본적으로 dbdeployer 를 instance 를 만들면 몇개의 계정이 기본으로 만들어진다.

아래처럼 접근하면 된다. 기본적으로 dbdeployer 의 root password 는 msandbox 로 되어있다.

user_na@user_na-VirtualBox:~$ /home/user_na/opt/mysql/10.4.15/bin/mysql -u root -p --host=127.0.0.1 --port=22918 

설치

data node 에서는 spider node 에서 부터 query 를 받아오게 설정해야 하고, spider node 에서는 remote storage 로 data node 를 사용한다고 설정해야 한다.

data node, spider node 모두의 설정을 건드려야 한다.

+-------------+
| spider node |
|             |
+----+--------+
     |
     |
     |
+----+----+
|         |
|data node|
|         |
+---------+

data node 설정

  1. table 생성
  2. spider@<spider_address> user 계정 생성
  3. 생성한 계정에 해당 table 에 대한 접근 권한 주기(GRANT)
CREATE TABLE test_table.spider_example (
   id INT PRIMARY KEY AUTO_INCREMENT,
   name VARCHAR(50)
) ENGINE=InnoDB;

CREATE USER spider@127.0.0.1;
SET PASSWORD FOR spider@127.0.0.1 = PASSWORD('spiderpw');
GRANT ALL ON test_table.spider_example TO spider@127.0.0.1;

spider node 설정

  1. sudo apt install mariadb-plugin-spider
  2. /home/user_na/opt/mysql/10.4.15/bin/mysql -u root --port=22916 --host=127.0.0.1 -p < /usr/share/mysql/install_spider.sql
  3. Spider engine 을 사용하는 table 생성
  4. create server

spider node 도 mariaDB 이다. 다만 table 이 Spider engine 으로 만들어져 있다.

먼저 spider 로 사용하기로 한 mariaDB 가 Spider engine 을 지원하는지 확인해야 한다. 아래 query 를 실행해서 ENGINE 에 SPIDER 가 보이지 않으면, 지원하지 않는 것이다.

SELECT ENGINE, SUPPORT FROM information_schema.ENGINES;

지원하지 않으면 mariadb-plugin-spider 를 설치한다. 그러면 /usr/share/mysql/install_spider.sql 가 생성되는데, 이 녀석을 실행해 주면 된다. 그러면 이 script 가 몇가지 table 을 자동으로 생성하게 된다.(아래 참조) 자세한 내용은 직접 file 을 확인하자.

  • spider_xa
  • spider_xa_member
  • spider_xa_failed_log
  • spider_tables
  • spider_link_mon_servers
  • spider_link_failed_log
  • spider_table_position_for_recovery
  • spider_table_sts
  • spider_table_crd

create server

각 data node 에 대해서 CREATE SERVER ... 를 해줘야 한다.(참고 : https://mariadb.com/kb/en/create-server/)

CREATE SERVER dataNode1 FOREIGN DATA WRAPPER mysql
OPTIONS (
   -- data node information
   HOST '127.0.0.1',
   DATABASE 'test',
   USER 'spider',
   PASSWORD 'spiderpw',
   PORT 22917);
FLUSH TABLES;

-- 삭제시
DROP SERVER dataNode1

create table

이제 spider 에도 data node 와 똑같은 모양의 table 을 생성하자. 차이는 단지 사용하는 ENGINE 만 다를 뿐이다.

CREATE TABLE test.spider_example (
   id INT PRIMARY KEY AUTO_INCREMENT,
   name VARCHAR(50)
) ENGINE=Spider
COMMENT='wrapper "mysql", srv "dataNode1", table "spider_example"';

See Also

  1. PowerPoint 프레젠테이션 - noc_tr2_se9_choi.pdf
  2. Spider Differences Between SpiderForMySQL and MariaDB - MariaDB Knowledge Base

Reference

  1. Spider - MariaDB Knowledge Base
  2. dbdeployer | DBdeployer is a tool that deploys MySQL database servers easily.
  3. Testing Percona XtraDB Cluster 8.0 with DBdeployer - Percona Database Performance Blog

댓글 없음:

댓글 쓰기