DB

[MySQL] CREATE SERVER 완벽 가이드 사용법(원격 데이터 소스 등록)

인생아 2025. 2. 19. 22:54
반응형

MySQL에서는 FEDERATED 스토리지 엔진을 활용하여 원격 서버의 테이블을 로컬에서 마치 직접 존재하는 것처럼 사용할 수 있습니다. 이를 위해 사용하는 명령어가 CREATE SERVER입니다.

MySQL CREATE SERVER란?

CREATE SERVER 명령어는 MySQL에서 원격 데이터 소스를 정의하는 기능을 제공합니다. 주로 FEDERATED 스토리지 엔진을 사용할 때 원격 MySQL 서버를 등록하는 용도로 활용됩니다.

이를 통해 사용자는 다른 서버에 위치한 데이터베이스의 테이블을 마치 로컬에 존재하는 것처럼 사용할 수 있으며, 이를 활용하면 분산 데이터베이스 환경을 구축할 수 있습니다.

반응형

CREATE SERVER의 주요 기능

  1. 원격 MySQL 서버 연결
    • 로컬 MySQL 서버에서 다른 MySQL 서버의 데이터를 직접 조회하고 조작 가능
  2. FEDERATED 스토리지 엔진과 함께 사용
    • CREATE SERVER로 원격 데이터베이스를 등록한 후 FEDERATED 테이블을 생성하여 원격 테이블과 연동
  3. 분산 데이터베이스 환경 구성 가능
    • 여러 MySQL 서버 간 데이터를 공유하여 확장성 있는 시스템 설계 가능
  4. 보안 설정 가능
    • 원격 서버 접속 시 사용자 계정, 인증 방식, 호스트 정보 등을 세부적으로 설정 가능

MySQL CREATE SERVER 기본 문법

CREATE SERVER 서버_이름  
FOREIGN DATA WRAPPER mysql  
OPTIONS (  
  HOST '원격서버_IP',  
  DATABASE '원격_DB_이름',  
  USER '사용자이름',  
  PASSWORD '비밀번호',  
  PORT 3306  
);
  • 서버_이름 → MySQL에서 사용할 원격 서버의 별칭
  • HOST → 원격 MySQL 서버의 IP 또는 도메인
  • DATABASE → 원격 데이터베이스 이름
  • USER → 원격 서버 접속 계정
  • PASSWORD → 해당 계정의 비밀번호
  • PORT → MySQL 기본 포트(3306)
반응형

CREATE SERVER 사용 예제

1. 원격 MySQL 서버 등록 예제

CREATE SERVER remote_db  
FOREIGN DATA WRAPPER mysql  
OPTIONS (  
  HOST '192.168.1.100',  
  DATABASE 'sales_db',  
  USER 'remote_user',  
  PASSWORD 'securepass',  
  PORT 3306  
);

위 명령어를 실행하면 MySQL 서버에서 remote_db라는 이름으로 192.168.1.100 서버의 sales_db 데이터베이스를 등록하게 됩니다.

2. FEDERATED 테이블을 생성하여 원격 테이블 연동

CREATE TABLE remote_sales (  
  id INT NOT NULL,  
  product_name VARCHAR(100),  
  quantity INT,  
  price DECIMAL(10,2),  
  PRIMARY KEY (id)  
) ENGINE=FEDERATED  
CONNECTION='mysql://remote_user:securepass@192.168.1.100:3306/sales_db.sales';
  • ENGINE=FEDERATED → MySQL FEDERATED 엔진을 사용
  • CONNECTION='mysql://...' → 원격 서버 접속 정보와 테이블 지정

이제 remote_sales 테이블을 통해 원격 서버의 sales 테이블에 직접 접근 가능합니다.

반응형

MySQL CREATE SERVER 활용 시 주의할 점

1. FEDERATED 엔진 활성화 필요

  • MySQL에서 FEDERATED 엔진을 사용하려면 my.cnf 설정 파일에서 활성화해야 함
[mysqld]
federated

적용 후 MySQL 재시작 필요

sudo systemctl restart mysql

2. 보안 설정 중요

  • 원격 서버의 계정 정보를 평문으로 저장하므로 보안 위험이 존재
  • 반드시 강력한 비밀번호 사용 및 원격 접근 제한 설정 권장

3. MySQL 버전 호환성 확인

  • 원격 서버와 로컬 서버의 MySQL 버전 차이가 클 경우 호환성 문제 발생 가능

4. 성능 고려

  • FEDERATED 테이블은 원격 데이터에 직접 접근하므로 대량의 데이터 조회 시 속도가 저하될 수 있음
  • 필요한 데이터만 가져오도록 WHERE 조건을 최적화하는 것이 중요

MySQL CREATE SERVER 삭제 방법

등록한 원격 서버를 삭제하려면 DROP SERVER 명령어를 사용합니다.

DROP SERVER remote_db;

이 명령어를 실행하면 remote_db 설정이 MySQL에서 제거되며, 기존에 생성한 FEDERATED 테이블은 유지되지만 더 이상 원격 서버와 연결되지 않습니다.

MySQL CREATE SERVER 활용 예제 추가

3. 특정 테이블만 연결하는 방법

다음과 같이 특정 테이블을 연동하는 FEDERATED 테이블을 만들 수 있습니다.

CREATE TABLE remote_orders (  
  order_id INT NOT NULL,  
  customer_name VARCHAR(255),  
  total_amount DECIMAL(10,2),  
  PRIMARY KEY (order_id)  
) ENGINE=FEDERATED  
CONNECTION='mysql://remote_user:securepass@192.168.1.100:3306/orders_db.orders';

이제 remote_orders 테이블을 통해 원격 서버의 orders 테이블 데이터를 조회할 수 있습니다.

4. 여러 원격 서버를 등록하여 관리하는 방법

여러 개의 원격 서버를 등록할 수도 있습니다.

CREATE SERVER remote_db_1  
FOREIGN DATA WRAPPER mysql  
OPTIONS (  
  HOST '192.168.1.101',  
  DATABASE 'inventory_db',  
  USER 'admin',  
  PASSWORD 'pass123',  
  PORT 3306  
);

CREATE SERVER remote_db_2  
FOREIGN DATA WRAPPER mysql  
OPTIONS (  
  HOST '192.168.1.102',  
  DATABASE 'analytics_db',  
  USER 'analytics_user',  
  PASSWORD 'analyzepass',  
  PORT 3306  
);

이렇게 하면 inventory_db 및 analytics_db에 접근할 수 있는 환경을 구축할 수 있습니다.

반응형

결론

MySQL CREATE SERVER 명령어를 사용하면 원격 MySQL 서버를 등록하고 FEDERATED 엔진과 함께 사용할 수 있습니다. 이를 통해 데이터를 분산 저장하고, 여러 서버의 데이터를 중앙에서 관리하는 환경을 구축할 수 있습니다.

그러나 보안 설정, 성능 최적화, 버전 호환성 등의 요소를 신중하게 고려해야 하며, FEDERATED 엔진이 활성화되어 있어야 정상적으로 동작합니다.

참고 자료

공식 가이드 문서: https://dev.mysql.com/doc/refman/8.0/en/create-server.html

 

반응형