2017年4月11日火曜日

MySQL에 DBLINK만들기

Server version: 10.1.21-MariaDB MariaDB Server을 기준으로 합니다.

DBLink를 만들 database를 작성합니다.
MariaDB [mysql]> create database parkdb;

parkdb에 Zabbix에 있는 table을 dblink하겠습니다.
engines을 먼저 확인합니다.
MariaDB [mysql]> show engines;
+--------------------+---------+-
| Engine             | Support |
+--------------------+---------+-
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+-
8 rows in set (0.00 sec)

MariaDB [mysql]>

FEDERATED은 Default설정이 되어 있지 않으므로 인스톨 합니다.

①FEDERATED 인스톨

MariaDB [mysql]> install plugin federated soname 'ha_federated.so';
Query OK, 0 rows affected (0.03 sec)
MariaDB [mysql]> show engines;
+--------------------+---------+
| Engine             | Support |
+--------------------+---------+
| MRG_MyISAM         | YES     |
| CSV                | YES     |
| Aria               | YES     |
| MyISAM             | YES     |
| MEMORY             | YES     |
| InnoDB             | DEFAULT |
| SEQUENCE           | YES     |
| FEDERATED          | YES     |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+
9 rows in set (0.00 sec)

②DBLink작성

MariaDB [mysql]> CREATE SERVER dblink
    -> FOREIGN DATA WRAPPER mysql
    -> OPTIONS (USER 'zabbix', PASSWORD 'zabbix' , HOST '127.0.0.1', PORT 3306, DATABASE 'zabbix');
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 

Database zabbix에 접속할수 있는 유져를 등록합니다.

③dblink대상이 될 TABLE을 작성합니다.

[root@localhost ~]# mysql -uzabbix zabbix -pzabbix
MariaDB [zabbix]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> );
Query OK, 0 rows affected (0.04 sec)

④DBLink Table을 작성합니다.

[root@localhost ~]# mysql -uzabbix parkdb -pzabbix
MariaDB [parkdb]> CREATE TABLE test_table (
    ->     id     INT(20) NOT NULL AUTO_INCREMENT,
    ->     name   VARCHAR(32) NOT NULL DEFAULT '',
    ->     other  INT(20) NOT NULL DEFAULT '0',
    ->     PRIMARY KEY  (id),
    ->     INDEX name (name),
    ->     INDEX other_key (other)
    -> )
    -> ENGINE=FEDERATED
    -> DEFAULT CHARSET=utf8
    -> CONNECTION='dblink/test_table';
Query OK, 0 rows affected (0.00 sec)

MariaDB [parkdb]> 
    -> CONNECTION='dblink/test_table';부분을 주의 해 주시길 바랍니다.
  ②번에 DBLINK작성에 등록한 이름으로 table을 생성합니다.

⑤확인

Zabbix DATABASE에 Insert합니다.
MariaDB [zabbix]> insert into test_table values (1,'park',0);
Query OK, 1 row affected (0.01 sec)

MariaDB [zabbix]> 

parkd DATABASE에서 select합니다.
MariaDB [parkdb]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
+----+------+-------+
1 row in set (0.01 sec)
parkd DATABASE에 Insert힙니다.
MariaDB [parkdb]> insert into test_table values (2,'uri',0);
Query OK, 1 row affected (0.00 sec)

MariaDB [parkdb]> 

Zabbix DATABASE에서 Select합니다.
MariaDB [zabbix]> select * from test_table;
+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 | park |     0 |
|  2 | uri  |     0 |
+----+------+-------+
2 rows in set (0.00 sec)

MariaDB [zabbix]> 


이상입니다.

0 件のコメント: