자습서: 두 개의 완전히 연결된 서버 간 복제 구성(트랜잭션)Tutorial: Configure replication between two fully connected servers (transactional)

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

트랜잭션 복제는 계속 연결되는 서버 간에 데이터를 이동할 때 발생하는 문제를 해결하는 좋은 방법입니다.Transactional replication is a good solution to the problem of moving data between continuously connected servers. 복제 마법사를 사용하면 복제 토폴로지를 쉽게 구성하고 관리할 수 있습니다.By using the Replication Wizard, you can easily configure and administer a replication topology.

이 자습서에서는 계속 연결되는 서버에 대해 트랜잭션 복제 토폴로지를 구성하는 방법을 보여줍니다.This tutorial shows you how to configure a transactional replication topology for continuously connected servers. 트랜잭션 복제가 작동하는 방법에 대한 자세한 내용은 트랜잭션 복제 개요를 참조하세요.For more information about how transactional replication works, see the overview of transactional replication.

학습 내용What you will learn

이 자습서에서는 트랜잭션 복제를 사용하여 한 데이터베이스의 데이터를 다른 데이터베이스에 게시하는 방법을 보여 줍니다.This tutorial teaches you to publish data from one database to another by using transactional replication.

이 자습서에서는 다음 작업 방법을 배웁니다.In this tutorial, you will learn how to:

  • 트랜잭션 복제를 통해 게시자를 만듭니다.Create a publisher via transactional replication.
  • 트랜잭션 게시자에 대한 구독자를 만듭니다.Create a subscriber for the transactional publisher.
  • 구독 유효성을 검사하고 및 대기 시간을 측정합니다.Validate the subscription and measure latency.

사전 요구 사항Prerequisites

이 자습서는 기본적인 데이터베이스 작업에는 익숙하지만 복제에 대한 경험은 풍부하지 않은 사용자를 위한 것입니다.This tutorial is for users who are familiar with basic database operations, but who have limited experience with replication. 이 자습서를 시작하기 전에 자습서: 복제용 SQL 서버 준비를 완료해야 합니다.Before you start this tutorial, you must complete Tutorial: Prepare SQL Server for replication.

이 자습서를 완료하려면 SQL Server, SSMS(SQL Server Management Studio) 및 AdventureWorks 데이터베이스가 필요합니다.To complete this tutorial, you need SQL Server, SQL Server Management Studio (SSMS), and an AdventureWorks database:

  • 게시자 서버(원본)에서 설치합니다.At the publisher server (source), install:

    • SQL Server Express 또는 SQL Server Compact를 제외한 모든 SQL ServerSQL Server 버전.Any edition of SQL ServerSQL Server, except SQL Server Express or SQL Server Compact. 이들 버전은 복제 게시자가 될 수 없습니다.These editions cannot be replication publishers.
    • AdventureWorks2012AdventureWorks2012 예제 데이터베이스.The AdventureWorks2012AdventureWorks2012 sample database. 보안을 위해 예제 데이터베이스는 기본적으로 설치되지 않습니다.To enhance security, the sample databases are not installed by default.
  • 구독자 서버(대상)에서 SQL Server CompactSQL Server Compact을 제외한 SQL ServerSQL Server의 모든 버전을 설치합니다.At the subscriber server (destination), install any edition of SQL ServerSQL Server, except SQL Server CompactSQL Server Compact. SQL Server CompactSQL Server Compact는 트랜잭션 복제에서 구독자가 될 수 없습니다. cannot be a subscriber in transactional replication.

  • SQL Server Management Studio를 설치합니다.Install SQL Server Management Studio.

  • SQL Server 2017 Developer Edition을 설치합니다.Install SQL Server 2017 Developer edition.
  • AdventureWorks 샘플 데이터베이스를 다운로드합니다.Download the AdventureWorks sample database. SSMS에서 데이터베이스를 복원하는 방법에 대한 지침은 데이터베이스 복원을 참조하세요.For instructions on restoring a database in SSMS, see Restoring a database.

참고

  • 두 버전이 넘게 차이 나는 SQL Server 인스턴스에서는 복제가 지원되지 않습니다.Replication is not supported on SQL Server instances that are more than two versions apart. 자세한 내용은 복제 토폴로지에서 지원되는 SQL Server 버전을 참조하세요.For more information, see Supported SQL Server Versions in Replication Topology.
  • SQL Server Management StudioSQL Server Management Studio에서는 sysadmin 고정 서버 역할의 멤버인 로그인을 사용하여 게시자 및 구독자에 연결해야 합니다.In SQL Server Management StudioSQL Server Management Studio, you must connect to the publisher and subscriber by using a login that is a member of the sysadmin fixed server role. 이 역할에 대한 자세한 내용은 서버 수준 역할을 참조하세요.For more information on this role, see Server-level roles.

이 자습서를 완료하는 데 소요되는 예상 시간: 60분Estimated time to complete this tutorial: 60 minutes

트랜잭션 복제를 위한 게시자 구성Configure the publisher for transactional replication

이 섹션에서는 SQL Server Management StudioSQL Server Management Studio를 사용하여 트랜잭션 게시를 만들어 AdventureWorks2012AdventureWorks2012 샘플 데이터베이스에 Product 테이블의 필터링된 하위 집합을 게시합니다.In this section, you create a transactional publication by using SQL Server Management StudioSQL Server Management Studio to publish a filtered subset of the Product table in the AdventureWorks2012AdventureWorks2012 sample database. 또한 배포 에이전트에 사용된 SQL Server 로그인을 PAL(게시 액세스 목록)에 추가합니다.You also add the SQL Server login used by the Distribution Agent to the publication access list (PAL).

게시 만들기 및 아티클 정의Create a publication and define articles

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결한 다음, 해당 서버 노드를 확장합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. SQL Server 에이전트를 마우스 오른쪽 단추로 클릭한 다음, 시작을 선택합니다.Right-click SQL Server Agent and select Start. SQL Server 에이전트는 게시를 만들기 전에 실행되어야 합니다.The SQL Server Agent should be running before you create the publication. 이 단계에서 에이전트를 시작하지 않으면 SQL Server 구성 관리자에서 수동으로 시작해야 합니다.If this step does not start your agent, you'll need to do so manually from SQL Server Configuration Manager.

  3. 복제 폴더를 확장하고 로컬 게시 폴더를 마우스 오른쪽 단추로 클릭한 다음, 새 게시를 선택합니다.Expand the Replication folder, right-click the Local Publications folder, and select New Publication. 이 단계에서 새 게시 마법사가 시작합니다.This step starts the New Publication Wizard:

    새 게시 마법사를 시작하기 위한 선택 항목

  4. 게시 데이터베이스 페이지에서 AdventureWorks2012AdventureWorks2012를 선택한 후, 다음을 선택합니다.On the Publication Database page, select AdventureWorks2012AdventureWorks2012, and then select Next.

  5. 게시 유형 페이지에서 트랜잭션 게시를 선택한 후, 다음을 선택합니다.On the Publication Type page, select Transactional publication, and then select Next:

    선택된 게시 유형이 있는 "게시 유형" 페이지

  6. 문서 페이지에서 테이블 노드를 확장하고 제품 확인란을 선택합니다.On the Articles page, expand the Tables node and select the Product check box. 그런 다음, 제품을 확장하고 ListPriceStandardCost 옆에 있는 확인란의 선택을 취소합니다.Then expand Product and clear the check boxes next to ListPrice and StandardCost. 다음을 선택합니다.Select Next.

    선택된 게시할 문서가 있는 "문서" 페이지

  7. 테이블 행 필터링 페이지에서 추가를 선택합니다.On the Filter Table Rows page, select Add.

  8. 필터 추가 대화 상자에서 SafetyStockLevel 열을 선택합니다.In the Add Filter dialog box, select the SafetyStockLevel column. 오른쪽 화살표를 선택하여 필터 쿼리의 필터 문 WHERE 절에 해당 열을 추가합니다.Select the right arrow to add the column to the filter statement WHERE clause of the filter query. 그런 다음, WHERE 절 한정자에 수동으로 다음과 같이 입력합니다.Then manually type in the WHERE clause modifier as follows:

    WHERE [SafetyStockLevel] < 500  
    

    "테이블 흐름 필터링" 페이지 및 "필터 추가" 대화 상자

  9. 확인선택하고 다음을 선택합니다.Select OK, and then select Next.

  10. 즉시 스냅숏을 만들고 구독 초기화에 사용할 수 있도록 유지 확인란을 선택하고 다음을 선택합니다.Select the Create a snapshot immediately and keep the snapshot available to initialize subscriptions check box, and select Next:

    확인란이 선택된 "스냅숏 에이전트" 페이지

  11. 에이전트 보안 페이지에서 스냅숏 에이전트의 보안 설정 사용 확인란을 선택 취소합니다.On the Agent Security page, clear the Use the security settings from the Snapshot Agent check box.

    스냅숏 에이전트에 대한 보안 설정을 선택합니다.Select Security Settings for the Snapshot Agent. 프로세스 계정 상자에 <Publisher_Machine_Name>\repl_snapshot을 입력하고, 이 계정에 대한 암호를 입력한 다음, 확인을 선택합니다.Enter <Publisher_Machine_Name>\repl_snapshot in the Process account box, supply the password for this account, and then select OK.

    "에이전트 보안" 페이지 및 "스냅숏 에이전트 보안" 대화 상자

  12. 이전 단계를 반복하여 <Publisher_Machine_Name>\repl_logreader를 로그 판독기 에이전트에 대한 프로세스 계정으로 설정합니다.Repeat the previous step to set <Publisher_Machine_Name>\repl_logreader as the process account for the Log Reader Agent. 그런 다음, 확인을 선택합니다.Then select OK.

    “로그 판독기 에이전트 보안” 대화 상자 및 “에이전트 보안” 페이지

  13. 마법사 완료 페이지에서 게시 이름 상자에 AdvWorksProductTrans를 입력하고 마침을 선택합니다.On the Complete the Wizard page, type AdvWorksProductTrans in the Publication name box, and select Finish:

    게시 이름이 있는 "마법사 완료" 페이지

  14. 게시를 만든 후 닫기 를 선택하여 마법사를 완료합니다.After the publication is created, select Close to complete the wizard.

게시를 만들려고 할 때 SQL Server 에이전트가 실행되고 있지 않은 경우 다음과 같은 오류가 발생할 수 있습니다.You might encounter the following error if your SQL Server Agent is not running when you try to create the publication. 이 오류는 게시가 성공적으로 만들어졌지만 스냅숏 에이전트를 시작하지 못했음을 나타냅니다.This error indicates that your publication was created successfully but your Snapshot Agent was unable to start. 이러한 경우 SQL Server 에이전트를 시작한 다음, 스냅숏 에이전트를 수동으로 시작해야 합니다.If this happens, you'll need to start the SQL Server Agent, and then manually start the Snapshot Agent. 다음 섹션에서 지침을 제공합니다.The next section gives instructions.

스냅숏 에이전트가 시작하지 못했음을 나타내는 경고

스냅숏 생성의 상태 보기View the status of snapshot generation

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 다음, 복제 폴더를 확장합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans를 마우스 오른쪽 단추로 클릭한 다음, 스냅숏 에이전트 상태 보기를 선택합니다.In the Local Publications folder, right-click AdvWorksProductTrans, and then select View Snapshot Agent Status:
    스냅숏 에이전트 상태 보기를 위한 바로 가기 메뉴의 명령Command on the shortcut menu for viewing the Snapshot Agent status

  3. 게시에 대한 스냅숏 에이전트 작업의 현재 상태가 표시됩니다.The current status of the Snapshot Agent job for the publication appears. 다음 섹션을 진행하기 전에 스냅숏 작업이 성공했는지 확인합니다.Verify that the snapshot job has succeeded before you continue to the next section.

게시를 만들 때 SQL Server 에이전트가 실행되고 있지 않은 경우, 게시의 스냅숏 에이전트 상태를 확인하면 스냅숏 에이전트가 '실행되지 않음'으로 표시됩니다.If your SQL Server Agent was not running when you created the publication, you'll see that the Snapshot Agent was never run when you check the Snapshot Agent status for your publication. 이 경우 시작을 선택하여 스냅숏 에이전트를 시작합니다.If that's the case, select Start to start your Snapshot Agent:

"시작" 단추 및 스냅숏 에이전트가 실행되지 못했음을 표시하는 상태 메시지의 변경

여기에 오류가 표시되면 스냅숏 에이전트 오류 해결을 참조하세요.If you see an error here, see Troubleshooting Snapshot Agent error.

PAL에 배포 에이전트 로그인 추가Add the Distribution Agent login to the PAL

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 다음, 복제 폴더를 확장합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans를 마우스 오른쪽 단추로 클릭한 다음, 속성을 선택합니다.In the Local Publications folder, right-click AdvWorksProductTrans, and then select Properties. 게시 속성 대화 상자가 표시됩니다.The Publication Properties dialog box appears.

    1.a. 게시 액세스 목록 페이지를 선택하고 추가를 선택합니다.Select the Publication Access List page, and select Add.
    2.b. 게시 액세스 추가 대화 상자에서 <Publisher_Machine_Name>\repl_distribution을 선택한 다음, 확인을 선택합니다.In the Add Publication Access dialog box, select <Publisher_Machine_Name>\repl_distribution, and select OK.

    로그인을 게시 액세스 목록에 추가하기 위한 선택 항목

자세한 내용은 복제 프로그래밍 개념을 참조하십시오.For more information, see Replication programming concepts.

트랜잭션 게시에 구독 만들기Create a subscription to the transactional publication

이 섹션에서는 이전에 만든 게시에 구독자를 추가합니다.In this section, you add a subscriber to the publication that you previously created. 이 자습서에서는 원격 구독자(NODE2\SQL2016)를 사용하지만 구독을 게시자에게 로컬로 추가할 수도 있습니다.This tutorial uses a remote subscriber (NODE2\SQL2016), but you can also add a subscription locally to the publisher.

구독 만들기Create the subscription

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 다음, 복제 폴더를 확장합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans 게시를 마우스 오른쪽 단추로 클릭한 다음, 새 구독을 선택합니다.In the Local Publications folder, right-click the AdvWorksProductTrans publication, and then select New Subscriptions. 새 구독 마법사가 시작됩니다.The New Subscription Wizard starts:

    새 구독 마법사를 시작하기 위한 선택 항목

  3. 게시 페이지에서 AdvWorksProductTrans를 선택한 후, 다음을 선택합니다.On the Publication page, select AdvWorksProductTrans, and then select Next:

    선택된 게시가 있는 "게시" 페이지

  4. 배포 에이전트 위치 페이지에서 배포자에서 모든 에이전트 실행을 선택한 후, 다음을 선택합니다.On the Distribution Agent Location page, select Run all agents at the Distributor, and then select Next. 구독 끌어오기 및 밀어넣기에 대한 자세한 내용은 게시 구독을 참조하세요.For more information on pull and push subscriptions, see Subscribe to publications.

    배포자에서 모든 에이전트를 실행하기 위해 선택된 옵션이 있는“배포 에이전트 위치” 페이지

  5. 구독자 페이지에서 구독자 인스턴스 이름이 표시되지 않는 경우 구독자 추가를 선택한 다음, 드롭다운 목록에서 SQL Server 구독자 추가를 선택합니다.On the Subscribers page, if the name of the subscriber instance is not displayed, select Add Subscriber, and then select Add SQL Server Subscriber from the drop-down list. 이 단계는 서버에 연결 대화 상자를 엽니다.This step opens the Connect to Server dialog box. 구독자 인스턴스 이름을 입력한 다음, 연결을 선택합니다.Enter the subscriber instance name and then select Connect.

    구독자가 추가된 후 구독자의 인스턴스 이름 옆에 있는 확인 상자를 선택합니다.After the subscriber has been added, select the check box next to the instance name of your subscriber. 그런 다음, 구독 데이터베이스에서 새 데이터베이스를 선택합니다.Then select New Database under Subscription Database.

    구독자 서버를 추가 하기 위한 선택 항목이 있는 "구독자" 페이지

  6. 새 데이터베이스 대화 상자가 나타납니다.The New Database dialog box appears. 데이터베이스 이름 상자에 ProductReplica를 입력하고 확인을 선택한 후, 다음을 선택합니다.Enter ProductReplica in the Database name box, select OK, and then select Next:

    구독 데이터베이스에 대한 이름 입력하기

  7. 배포 에이전트 보안 페이지에서 줄임표(...) 단추를 선택합니다.On the Distribution Agent Security page, select the ellipsis () button. 프로세스 계정 상자에 <Publisher_Machine_Name>\repl_distribution을 입력하고 이 계정의 암호를 입력한 다음, 확인, 다음을 차례로 선택합니다.Enter <Publisher_Machine_Name>\repl_distribution in the Process account box, enter the password for this account, select OK, and then select Next.

    “배포 에이전트 보안” 대화 상자의 배포 계정 정보

  8. 마침을 선택하여 나머지 페이지에 기본값을 적용하고 마법사를 완료합니다.Select Finish to accept the default values on the remaining pages and complete the wizard.

구독자에서 데이터베이스 권한 설정Set database permissions at the subscriber

  1. SQL Server Management StudioSQL Server Management Studio에서 구독자에 연결합니다.Connect to the subscriber in SQL Server Management StudioSQL Server Management Studio. 보안을 확장하고, 로그인을 마우스 오른쪽 단추로 클릭한 다음, 새 로그인을 선택합니다.Expand Security, right-click Logins, and then select New Login.

    1.a. 일반 페이지의 로그인 이름에서 검색을 선택하고 <Subscriber_Machine_Name>\repl_distribution에 대한 로그인을 추가합니다.On the General page, under Login Name, select Search and add the login for <Subscriber_Machine_Name>\repl_distribution.

    2.b. 사용자 매핑 페이지에서 ProductReplica 데이터베이스에 대한 로그인 db_owner 멤버 자격을 부여합니다.On the User Mappings page, grant the login db_owner membership for the ProductReplica database.

    구독자에서 로그인을 구성하기 위한 선택 항목

  2. 확인을 선택하여 새 로그인 대화 상자를 닫습니다.Select OK to close the New Login dialog box.

구독의 동기화 상태 보기View the synchronization status of the subscription

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio. 서버 노드를 확장한 다음, 복제 폴더를 확장합니다.Expand the server node, and then expand the Replication folder.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans 게시를 확장하고 ProductReplica 데이터베이스의 구독을 마우스 오른쪽 단추로 클릭한 다음, 동기화 상태 보기를 선택합니다.In the Local Publications folder, expand the AdvWorksProductTrans publication, right-click the subscription in the ProductReplica database, and then select View Synchronization Status. 구독의 현재 동기화 상태가 표시됩니다.The current synchronization status of the subscription appears:

    “동기화 상태 보기” 대화 상자를 열기 위한 선택 항목

  3. AdvWorksProductTrans에 해당 구독이 표시되지 않으면 F5 키를 선택하여 목록을 새로 고칩니다.If the subscription is not visible under AdvWorksProductTrans, select the F5 key to refresh the list.

참조 항목:For more information, see:

복제 대기 시간 측정Measure replication latency

이 섹션에서는 추적 프로그램 토큰을 사용하여 변경 내용이 구독자에 복제되었는지 여부 및 대기 시간을 확인합니다.In this section, you use tracer tokens to verify that changes are being replicated to the subscriber and to determine latency. 대기 시간은 게시자에서 변경한 내용이 구독자에게 표시되는 데 걸리는 시간입니다.Latency is the time it takes for a change made at the publisher to appear to the subscriber.

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결합니다.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio. 서버 노드를 확장하고 복제 폴더를 마우스 오른쪽 단추로 클릭한 다음, 복제 모니터 시작을 선택합니다.Expand the server node, right-click the Replication folder, and then select Launch Replication Monitor:

    바로 가기 메뉴에서 "복제 모니터 시작" 명령

  2. 왼쪽 창에서 게시자 그룹을 확장하고 해당 게시자 인스턴스를 확장한 다음, AdvWorksProductTrans 게시를 선택합니다.Expand a publisher group in the left pane, expand the publisher instance, and then select the AdvWorksProductTrans publication.

    1.a. 추적 프로그램 토큰 탭을 선택합니다.Select the Tracer Tokens tab.
    2.b. 추적 프로그램 삽입을 선택합니다.Select Insert Tracer.
    c.c. 게시자에서 배포자로 연결 시 대기 시간, 배포자에서 구독자로 연결 시 대기 시간, 총 대기 시간열에서 추적 프로그램 토큰에 대한 경과 시간을 확인합니다.View elapsed time for the tracer token in the following columns: Publisher to Distributor, Distributor to Subscriber, Total Latency. 보류 중이라는 값은 토큰이 지정된 지점에 아직 도달하지 않았음을 나타냅니다.A value of Pending indicates that the token has not reached a specified point.

    추적 프로그램 토큰에 대한 정보

참조 항목:For more information, see:

다음 단계Next steps

트랜잭션 복제를 위해 게시자와 구독자를 모두 성공적으로 구성했습니다.You have successfully configured both your publisher and your subscriber for transactional replication. 이제 게시자의 제품 테이블에서 데이터를 삽입, 업데이트 또는 삭제할 수 있습니다.You can now insert, update, or delete data in the Product table at the publisher. 그런 다음, 구독자에서 제품 테이블을 쿼리하여 복제된 변경 내용을 볼 수 있습니다.Then you can query the Product table at the subscriber to view the replicated changes.

다음 문서에서는 병합 복제를 구성하는 방법을 설명합니다.The next article will teach you how to configure merge replication: