mysql에_federated_engine_추가

문서의 이전 판입니다!


MySQL에 FEDERATED engine 추가

FEDERATED 스토리지 엔진을 사용하면 리플리케이션이나 클러스터 기술을 이용하지 않고도 원격의 MySQL 데이터베이스에 접근할 수 있다. 서비스 운영을 위해 여러 데이터베이스를 사용하는데, 한 데이터베이스의 데이터를 다른 데이터베이스들이 참조하여 사용할 때 활용할 수 있다. Oracle의 DBLink와 유사한 기능이라고 한다.

FEDERATED 엔진은 MySQL에 기본으로 설정되어 있지 않기 때문에 이를 사용하기 위해서는 별도의 작업이 필요하다. 검색을 해보면 처음에 설치할 때 부터 –with-federated-storage-engine 옵션을 주어야 한다는 등의 이야기 등이 있지만, 실제로는 재설치를 하거나 할 필요는 없다.

mysql 에 root 로 접속해서 아래 명령어를 입력한다.

install plugin federated soname 'ha_federated.so'

실제로 DB에 접속해서 해보면 아래와 같이 추가된다.

mysql> show engines;
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine      | Support | Comment                                                    | Transactions | XA   | Savepoints |
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
| DAMO_MYISAM | YES     | DAmo storage engine                                        | NO           | NO   | NO         |
| MRG_MYISAM  | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV         | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM      | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB      | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY      | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| DAMO_INNODB | YES     | DAmo storage engine                                        | YES          | NO   | NO         |
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
7 rows in set (0.00 sec)

mysql> install plugin federated soname 'ha_federated.so';
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> show engines;
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine      | Support | Comment                                                    | Transactions | XA   | Savepoints |
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
| DAMO_MYISAM | YES     | DAmo storage engine                                        | NO           | NO   | NO         |
| FEDERATED   | NO      | Federated MySQL storage engine                             | NULL         | NULL | NULL       |
| CSV         | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM      | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB      | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY      | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| DAMO_INNODB | YES     | DAmo storage engine                                        | YES          | NO   | NO         |
| MRG_MYISAM  | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
+-------------+---------+------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.01 sec)

이제 show engine 을 해보면 목록에서 FEDERATED Engine 이 나타나지만 꺼져있는 상태이다.

/etc/my.cnf 를 열어 [mysqld] 아래에 federated 라는 단어를 추가한다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
federated # 이부분 추가

MySQL을 다시 실행시킨 후 다시 show engines 를 하면 FEDERATED Engine 이 사용가능하게 된 것을 확인할 수 있다.

  • 원본 테이블 예제
CREATE TABLE `cityholic_db`.`cart_product` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '아이디',
  `users_id` bigint(20) unsigned NOT NULL COMMENT '고객아이디',
  `product_id` bigint(20) NOT NULL COMMENT '상품아이디',
  `option_code` varchar(50) NOT NULL COMMENT '상품옵션코드',
  `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '상품 개수',
  PRIMARY KEY (`users_id`,`product_id`,`option_code `),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='카트에 담긴 상품';
  • 대상 테이블 생성
CREATE TABLE `cityholic_db`.`cart_product` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '아이디',
  `users_id` bigint(20) unsigned NOT NULL COMMENT '고객아이디',
  `product_id` bigint(20) NOT NULL COMMENT '상품아이디',
  `option_code` varchar(50) NOT NULL COMMENT '상품옵션코드',
  `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '상품 개수',
  PRIMARY KEY (`users_id`,`product_id`,`option_code `),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COMMENT='카트에 담긴 상품'
CONNECTION='mysql://root:dldusrn1@10.3.0.27:3306/cityholic_db/cart_product';
로그인하면 댓글을 남길 수 있습니다.
  • mysql에_federated_engine_추가.1465277676.txt.gz
  • 마지막으로 수정됨: 2016/06/07 05:34
  • 저자 koov