MySQL에서는 FEDERATED 스토리지 엔진을 활용하여 원격 서버의 테이블을 로컬에서 마치 직접 존재하는 것처럼 사용할 수 있습니다. 이를 위해 사용하는 명령어가 CREATE SERVER입니다.
MySQL CREATE SERVER란?
CREATE SERVER 명령어는 MySQL에서 원격 데이터 소스를 정의하는 기능을 제공합니다. 주로 FEDERATED 스토리지 엔진을 사용할 때 원격 MySQL 서버를 등록하는 용도로 활용됩니다.
이를 통해 사용자는 다른 서버에 위치한 데이터베이스의 테이블을 마치 로컬에 존재하는 것처럼 사용할 수 있으며, 이를 활용하면 분산 데이터베이스 환경을 구축할 수 있습니다.
CREATE SERVER의 주요 기능
- 원격 MySQL 서버 연결
- 로컬 MySQL 서버에서 다른 MySQL 서버의 데이터를 직접 조회하고 조작 가능
- FEDERATED 스토리지 엔진과 함께 사용
- CREATE SERVER로 원격 데이터베이스를 등록한 후 FEDERATED 테이블을 생성하여 원격 테이블과 연동
- 분산 데이터베이스 환경 구성 가능
- 여러 MySQL 서버 간 데이터를 공유하여 확장성 있는 시스템 설계 가능
- 보안 설정 가능
- 원격 서버 접속 시 사용자 계정, 인증 방식, 호스트 정보 등을 세부적으로 설정 가능
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
'DB' 카테고리의 다른 글
[MySQL] RESET SLAVE / RESET REPLICA 완벽 가이드 사용법(복제 환경 초기화 및 재설정) (0) | 2025.02.20 |
---|---|
[MySQL] PURGE BINARY LOGS 완벽 가이드 사용법(바이너리 로그 정리) (0) | 2025.02.20 |
[MySQL] DROP SERVER 완벽 가이드 사용법(원격 서버 삭제) (0) | 2025.02.20 |
[MySQL] ALTER SERVER 완벽 가이드 사용법(원격 데이터 소스 수정) (0) | 2025.02.20 |
[MySQL] UNINSTALL PLUGIN 완벽 가이드 사용법(플러그인 삭제) (0) | 2025.02.18 |
[MySQL] INSTALL PLUGIN 완벽 가이드 사용법(플러그인 설치) (0) | 2025.02.18 |
[MySQL] RESET QUERY CACHE 완벽 가이드 사용법(쿼리 캐시 초기화) (0) | 2025.02.18 |
[MySQL] FLUSH 완벽 가이드 사용법(데이터베이스 캐시 및 상태 초기화) (0) | 2025.02.18 |