tds_fdw 확장을 사용하여 SQL Server 데이터베이스 작업 - Amazon Aurora

tds_fdw 확장을 사용하여 SQL Server 데이터베이스 작업

PostgreSQL tds_fdw 확장을 사용하여 Sybase 및 Microsoft SQL Server 데이터베이스와 같은 테이블 형식 데이터 스트림(TDS) 프로토콜을 지원하는 데이터베이스에 액세스할 수 있습니다. 이 외부 데이터 래퍼를 사용하면 Aurora PostgreSQL DB 클러스터에서 Amazon RDS for Microsoft SQL Server를 포함하여 TDS 프로토콜을 사용하는 데이터베이스에 연결할 수 있습니다. 자세한 내용은 GitHub에서 tds-fdw/tds_fdw 설명서를 참조하세요.

tds_fdw 확장은 Amazon Aurora PostgreSQL 버전 13.6 이상에서 지원됩니다.

tds_fdw 확장을 사용하도록 Aurora PostgreSQL DB 설정

다음 절차에서는 Aurora PostgreSQL DB 클러스터와 함께 tds_fdw를 설정하고 사용하는 예를 확인할 수 있습니다. tds_fdw를 사용하여 SQL Server 데이터베이스에 연결하기 전에 인스턴스에 대한 다음 세부 정보를 확인해야 합니다.

  • 호스트 이름 또는 엔드포인트. RDS for SQL Server DB 인스턴스의 경우 콘솔을 사용하여 엔드포인트를 찾을 수 있습니다. 연결 및 보안(Connectivity & security) 탭을 선택하고 '엔드포인트 및 포트(Endpoint and port)' 섹션을 살펴봅니다.

  • 포트 번호. Microsoft SQL Server의 기본 포트 번호는 포트 1433입니다.

  • 데이터베이스 이름 DB 식별자입니다.

또한 SQL Server 포트 1433의 액세스 제어 목록(ACL) 또는 보안 그룹에 대한 액세스를 제공해야 합니다. Aurora PostgreSQL DB 클러스터와 RDS for MySQL DB 인스턴스가 모두 포트 1433에 액세스할 수 있어야 합니다. 액세스가 올바르게 구성되지 않은 경우 Microsoft SQL Server를 쿼리하려고 할 때 다음 오류 메시지가 나타납니다.

ERROR: DB-Library error: DB #: 20009, DB Msg: Unable to connect: Adaptive Server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 0, OS Msg: Success, Level: 9
tds_fdw를 사용하여 SQL Server 데이터베이스에 연결하려면
  1. rds_superuser 역할이 있는 계정을 사용하여 Aurora PostgreSQL DB 클러스터의 기본 인스턴스에 연결합니다.

    psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-password
  2. tds_fdw 확장을 설치합니다.

    test=> CREATE EXTENSION tds_fdw; CREATE EXTENSION

Aurora PostgreSQL DB 클러스터 에 확장을 설치한 후 외부 서버를 설정합니다.

외부 서버를 생성하려면

rds_superuser 권한이 있는 계정을 사용하여 Aurora PostgreSQL DB 클러스터에서 다음과 같은 작업을 수행합니다.

  1. Aurora PostgreSQL DB 클러스터에서 외부 서버를 생성합니다.

    test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing'); CREATE SERVER

    SQLServer 측에서 ASCII가 아닌 데이터에 액세스하려면 Aurora PostgreSQL DB 클러스터에서 character_set 옵션을 사용하여 서버 링크를 생성합니다.

    test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing', character_set 'UTF-8'); CREATE SERVER
  2. rds_superuser 역할 권한이 없는 사용자(예: user1)에게 권한을 부여합니다.

    test=> GRANT USAGE ON FOREIGN SERVER sqlserverdb TO user1;
  3. user1으로 연결한 다음 SQL Server 사용자에 대한 매핑을 생성합니다.

    test=> CREATE USER MAPPING FOR user1 SERVER sqlserverdb OPTIONS (username 'sqlserveruser', password 'password'); CREATE USER MAPPING
  4. SQL Server 테이블에 연결된 외부 테이블을 만듭니다.

    test=> CREATE FOREIGN TABLE mytab (a int) SERVER sqlserverdb OPTIONS (table 'MYTABLE'); CREATE FOREIGN TABLE
  5. 외부 테이블을 쿼리합니다.

    test=> SELECT * FROM mytab; a --- 1 (1 row)

연결에 전송 중 암호화 사용

Aurora PostgreSQL에서 SQL Server로의 연결은 SQL Server 데이터베이스 구성에 따라 전송 중 암호화(TLS/SSL)를 사용합니다. SQL Server에 암호화가 구성되지 않은 경우 SQL Server 데이터베이스에 대한 요청을 수행하는 RDS for PostgreSQL 클라이언트가 암호화되지 않은 상태로 폴백됩니다.

rds.force_ssl 파라미터를 설정하여 RDS for SQL Server DB 인스턴스에 대한 연결에 암호화를 적용할 수 있습니다. 자세한 방법은 DB 인스턴스 연결이 SSL을 사용하도록 지정을 참조하세요. RDS for SQL Server에 대한 SSL/TLS 구성과 관련된 자세한 내용은 Microsoft SQL Server DB 인스턴스와 함께 SSL 사용을 참조하세요.