자습서: 복제를 위한 SQL Server 준비(게시자, 배포자, 구독자)Tutorial: Prepare SQL Server for replication (publisher, distributor, subscriber)

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

복제 토폴로지를 구성하기 전에 보안을 계획해야 합니다.It's important to plan for security before you configure your replication topology. 이 자습서에서는 복제 토폴로지의 보안을 강화하는 방법에 대해 설명합니다.This tutorial shows you how to better secure a replication topology. 또한 데이터를 복제하는 첫 번째 단계인 배포를 구성하는 방법도 보여 줍니다.It also shows you how to configure distribution, which is the first step in replicating data. 다른 자습서를 사용하기 전에 먼저 이 자습서를 완료해야 합니다.You must complete this tutorial before any of the others.

참고

서버 간 데이터를 안전하게 복제하려면 복제 보안을 위한 최선의 구현 방법의 모든 권장 사항을 구현해야 합니다.To replicate data securely between servers, you should implement all of the recommendations in Replication security best practices.

학습 내용What you will learn

이 자습서에서는 최소의 권한을 사용하여 안전하게 복제를 실행할 수 있도록 서버를 준비하는 방법을 설명합니다.This tutorial teaches you to prepare a server so that replication can run securely with least privileges.

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

  • 복제용 Windows 계정을 만듭니다.Create Windows accounts for replication.
  • 스냅숏 폴더를 준비합니다.Prepare the snapshot folder.
  • 배포를 구성합니다.Configure distribution.

사전 요구 사항Prerequisites

이 자습서는 기본적인 데이터베이스 작업에는 익숙하지만 복제에 대한 경험은 풍부하지 않은 사용자를 위한 것입니다.This tutorial is for users who are familiar with fundamental database operations, but who have limited exposure to 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.

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

복제용 Windows 계정 만들기Create Windows accounts for replication

이 섹션에서는 복제 에이전트를 실행할 Windows 계정을 만듭니다.In this section, you create Windows accounts to run replication agents. 다음 에이전트에 대해 로컬 서버에 별도의 Windows 계정을 만듭니다.You create a separate Windows account on the local server for the following agents:

에이전트Agent 위치Location 계정 이름Account name
스냅숏 에이전트Snapshot Agent 게시자Publisher <machine_name>\repl_snapshot<machine_name>\repl_snapshot
로그 판독기 에이전트Log Reader Agent 게시자Publisher <machine_name>\repl_logreader<machine_name>\repl_logreader
배포 에이전트Distribution Agent 게시자 및 구독자Publisher and subscriber <machine_name>\repl_distribution<machine_name>\repl_distribution
병합 에이전트Merge Agent 게시자 및 구독자Publisher and subscriber <machine_name>\repl_merge<machine_name>\repl_merge

참고

복제 자습서에서는 게시자 및 배포자가 같은 SQL ServerSQL Server인스턴스(NODE1\SQL2016)를 공유합니다.In the replication tutorials, the publisher and distributor share the same instance (NODE1\SQL2016) of SQL ServerSQL Server. 구독자 인스턴스(NODE2\SQL2016)는 원격입니다.The subscriber instance (NODE2\SQL2016) is remote. 게시자와 구독자는 SQL ServerSQL Server의 같은 인스턴스를 공유할 수 있지만 반드시 이렇게 해야 하는 것은 아닙니다.The publisher and subscriber might share the same instance of SQL ServerSQL Server, but it is not a requirement. 게시자와 구독자가 같은 인스턴스를 공유하는 경우 구독자에서는 계정을 만드는 단계를 수행하지 않아도 됩니다.If the publisher and subscriber share the same instance, the steps that are used to create accounts at the subscriber are not required.

게시자에서 복제 에이전트에 대한 로컬 Windows 계정 만들기Create local Windows accounts for replication agents at the publisher

  1. 게시자에서 제어판의 관리 도구에 있는 컴퓨터 관리를 엽니다.At the publisher, open Computer Management from Administrative Tools in Control Panel.

  2. 시스템 도구에서 로컬 사용자 및 그룹을 확장합니다.In System Tools, expand Local Users and Groups.

  3. 사용자를 마우스 오른쪽 단추로 클릭한 다음, 새 사용자를 선택합니다.Right-click Users and then select New User.

  4. 사용자 이름 상자에 repl_snapshot을 입력하고, 암호 및 다른 관련 정보를 입력한 다음, 만들기를 선택하여 repl_snapshot 계정을 만듭니다.Enter repl_snapshot in the User name box, provide the password and other relevant information, and then select Create to create the repl_snapshot account:

    “새 사용자” 대화 상자

  5. 이전 단계를 반복하여 repl_logreader, repl_distribution 및 repl_merge 계정을 만듭니다.Repeat the previous step to create the repl_logreader, repl_distribution, and repl_merge accounts:

    복제 사용자 목록

  6. 닫기를 선택합니다.Select Close.

구독자에서 복제 에이전트에 대한 로컬 Windows 계정 만들기Create local Windows accounts for replication agents at the subscriber

  1. 구독자에서 제어판의 관리 도구에 있는 컴퓨터 관리를 엽니다.At the subscriber, open Computer Management from Administrative Tools in Control Panel.

  2. 시스템 도구에서 로컬 사용자 및 그룹을 확장합니다.In System Tools, expand Local Users and Groups.

  3. 사용자를 마우스 오른쪽 단추로 클릭한 다음, 새 사용자를 선택합니다.Right-click Users and then select New User.

  4. 사용자 이름 상자에 repl_distribution을 입력하고, 암호 및 다른 관련 정보를 입력한 다음, 만들기를 선택하여 repl_distribution 계정을 만듭니다.Enter repl_distribution in the User name box, provide the password and other relevant information, and then select Create to create the repl_distribution account.

  5. 이전 단계를 반복하여 repl_merge 계정을 만듭니다.Repeat the previous step to create the repl_merge account.

  6. 닫기를 선택합니다.Select Close.

자세한 내용은 복제 에이전트 개요을 참조하세요.For more information, see Replication agents overview.

스냅숏 폴더 준비Prepare the snapshot folder

이 섹션에서는 게시 스냅숏을 만들고 저장하는 데 사용되는 스냅숏 폴더를 구성합니다.In this section, you configure the snapshot folder that's used to create and store the publication snapshot.

스냅숏 폴더에 대한 공유 만들기 및 사용 권한 할당Create a share for the snapshot folder and assign permissions

  1. 파일 탐색기에서 SQL ServerSQL Server 데이터 폴더로 이동합니다.In File Explorer, browse to the SQL ServerSQL Server data folder. 기본 위치는 C:\Program Files\Microsoft SQL Server\MSSQL.X\MSSQL\Data입니다.The default location is C:\Program Files\Microsoft SQL Server\MSSQL.X\MSSQL\Data.

  2. repldata라는 새 폴더를 만듭니다.Create a new folder named repldata.

  3. 이 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.Right-click this folder and select Properties.

    1.a. repldata 속성 대화 상자의 공유 탭에서 고급 공유를 선택합니다.On the Sharing tab in the repldata Properties dialog box, select Advanced Sharing.

    2.b. 고급 공유 대화 상자에서 이 폴더 공유를 선택한 다음, 권한을 선택합니다.In the Advanced Sharing dialog box, select Share this Folder, and then select Permissions.

    Repldata 폴더를 공유하기 위한 선택 항목

  4. repldata의 사용 권한 대화 상자에서 추가를 선택합니다.In the Permissions for repldata dialog box, select Add. 사용자, 컴퓨터, 서비스 계정 또는 그룹 선택 상자에서 이전에 만든 스냅숏 에이전트 계정 이름을 <Publisher_Machine_Name>>\repl_snapshot으로 입력합니다.In the Select User, Computers, Service Account, or Groups box, type the name of the Snapshot Agent account that you created previously, as <Publisher_Machine_Name>\repl_snapshot. 이름 확인을 선택한 다음, 확인을 선택합니다.Select Check Names, and then select OK.

    공유 권한 추가를 위한 선택 항목

  5. 6단계를 반복하여 이전에 생성된 다른 두 계정(<Publisher_Machine_Name>\repl_merge 및 <Publisher_Machine_Name>\repl_distribution)을 추가합니다.Repeat step 6 to add the other two accounts that you created previously: <Publisher_Machine_Name>\repl_merge and <Publisher_Machine_Name>\repl_distribution.

  6. 3개의 계정을 추가한 후에 다음과 같은 권한을 할당합니다.After you add the three accounts, assign the following permissions:

    • repl_distribution: 읽기repl_distribution: Read
    • repl_merge: 읽기repl_merge: Read
    • repl_snapshot: 모든 권한repl_snapshot: Full Control

    각 계정에 대한 공유 권한

  7. 공유 권한이 올바르게 구성된 후 확인을 선택하여 repldata의 사용 권한 대화 상자를 닫습니다.After your share permissions are configured correctly, select OK to close the Permissions for repldata dialog box. 확인을 선택하여 고급 공유 대화 상자를 닫습니다.Select OK to close the Advanced Sharing dialog box.

  8. repldata 속성 대화 상장에서 보안 탭 및 편집을 차례로 선택합니다.In the repldata Properties dialog box, select the Security tab and select Edit:

    “보안” 탭에서 “편집” 단추

  9. repldata의 사용 권한 대화 상자에서 추가를 선택합니다.In the Permissions for repldata dialog box, select Add. 사용자, 컴퓨터, 서비스 계정 또는 그룹 선택 상자에서 이전에 만든 스냅숏 에이전트 계정 이름을 <Publisher_Machine_Name>>\repl_snapshot으로 입력합니다.In the Select Users, Computers, Service Accounts, or Groups box, type the name of the Snapshot Agent account that you created previously, as <Publisher_Machine_Name>\repl_snapshot. 이름 확인을 선택한 다음, 확인을 선택합니다.Select Check Names, and then select OK.

    보안 권한 추가를 위한 선택 항목

  10. 이전 단계를 반복하여 배포 에이전트에 대한 사용 권한을 <Publisher_Machine_Name>\repl_distribution으로, 병합 에이전트에 대한 사용 권한을 <Publisher_Machine_Name>\repl_merge로 추가합니다.Repeat the previous step to add permissions for the Distribution Agent as <Publisher_Machine_Name>\repl_distribution, and for the Merge Agent as <Publisher_Machine_Name>\repl_merge.

  11. 다음 사용 권한이 허용되는지 확인합니다.Verify that the following permissions are allowed:

    • repl_distribution: 읽기repl_distribution: Read
    • repl_merge: 읽기repl_merge: Read
    • repl_snapshot: 모든 권한repl_snapshot: Full Control

    복제 데이터에 대한 사용자 권한

  12. 공유 탭을 다시 선택하고 공유에 대한 네트워크 경로를 기록합니다.Select the Sharing tab again and note the Network Path for the share. 이 경로는 나중에 스냅숏 폴더를 구성할 때 필요합니다.You'll need this path later when you're configuring your snapshot folder.

    "공유" 탭에서 네트워크 경로

  13. 확인을 선택하여 repldata 속성 대화 상자를 닫습니다.Select OK to close the repldata Properties dialog box.

자세한 내용은 스냅숏 폴더 보안 설정을 참조하세요.For more information, see Secure the snapshot folder.

배포 구성Configure distribution

이 섹션에서는 게시자에서 배포를 구성하고 게시 및 배포 데이터베이스에 대한 필수 사용 권한을 설정합니다.In this section, you configure distribution at the publisher and set the required permissions on the publication and distribution databases. 배포자를 이미 구성한 경우 이 섹션을 시작하기 전에 게시와 배포를 해제해야 합니다.If you have already configured the distributor, you must disable publishing and distribution before you begin this section. 특히 프로덕션에서 기존 복제 토폴로지를 유지해야 하는 경우에는 이 작업을 수행하지 마세요.Do not do this if you must keep an existing replication topology, especially in production.

원격 배포자를 사용한 게시자 구성은 이 자습서의 범위를 벗어납니다.Configuring a publisher with a remote distributor is outside the scope of this tutorial.

게시자에서 배포 구성Configure distribution at the publisher

  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. 복제 폴더를 마우스 오른쪽 단추로 클릭하고 배포 구성을 선택합니다.Right-click the Replication folder and select Configure Distribution:

    바로 가기 메뉴에서 "배포 구성" 명령

    참고

    실제 서버 이름이 아니라 localhost를 사용하여 SQL ServerSQL Server에 연결한 경우 SQL ServerSQL Serverlocalhost에 연결할 수 없다는 경고 메시지가 표시됩니다.If you have connected to SQL ServerSQL Server by using localhost rather than the actual server name, you'll be prompted with a warning that SQL ServerSQL Server cannot connect to localhost. 경고 대화 상자에서 확인을 선택합니다.Select OK in the warning dialog box. 서버에 연결 대화 상자에서 서버 이름localhost에서 실제 서버 이름으로 변경합니다.In the Connect to Server dialog box, change Server name from localhost to the name of your server. 그런 다음 연결을 선택합니다.Then select Connect.

    배포 구성 마법사가 시작됩니다.The Distribution Configuration Wizard starts.

  3. 배포자 페이지에서 <'ServerName'> 을(를) 자체 배포자로 사용합니다. SQL Server에서 배포 데이터베이스와 로그를 만듭니다를 선택합니다.On the Distributor page, select <'ServerName'> will act as its own Distributor; SQL Server will create a distribution database and log. 그런 후 다음을 선택합니다.Then select Next.

    서버를 자체 배포자로 작동하게 하는 옵션

  4. SQL ServerSQL Server 에이전트가 실행되고 있지 않으면 SQL ServerSQL Server 에이전트 시작 페이지에서 예를 선택하여 SQL ServerSQL Server 에이전트 서비스가 자동으로 시작되도록 구성합니다.If the SQL ServerSQL Server Agent is not running, on the SQL ServerSQL Server Agent Start page, select Yes, configure the SQL ServerSQL Server Agent service to start automatically. 다음을 선택합니다.Select Next.

  5. 스냅숏 폴더 상자에 \\<Publisher_Machine_Name>\repldata 경로를 입력한 후, 다음을 선택합니다.Enter the path \\<Publisher_Machine_Name>\repldata in the Snapshot folder box, and then select Next. 이 경로는 공유 속성을 구성한 후 repldata 속성 폴더의 네트워크 경로에서 이전의 본 것과 일치해야 합니다.This path should match what you saw previously under Network Path for your repldata properties folder after configuring your share properties.

    배포 구성 마법사 및 "repldata 속성" 대화 상자에서 네트워크 경로의 비교

  6. 마법사의 나머지 페이지에 기본값을 적용합니다.Accept the default values on the remaining pages of the wizard.

    마법사의 마지막 페이지

  7. 마침을 선택하여 배포를 사용하도록 설정합니다.Select Finish to enable distribution.

배포자를 구성할 때 이 오류가 발생할 수 있습니다.You might see the following error when configuring the distributor. 이는 SQL Server 에이전트 계정을 시작하는 데 사용된 계정이 시스템 관리자가 아님을 나타냅니다.It's an indication that the account that was used to start the SQL Server Agent account is not an administrator on the system. SQL Server 에이전트를 수동으로 시작하거나 기존 계정에 사용 권한을 부여하거나 SQL Server 에이전트가 사용하는 계정을 수정해야 합니다.You'll either need to start the SQL Server Agent manually, grant those permissions to the existing account, or modify which account the SQL Server Agent is using.

SQL Server 에이전트를 구성하기 위한 오류 메시지

SQL Server Management Studio 인스턴스를 관리자 권한으로 실행 중인 경우 SSMS 내에서 수동으로 SQL 에이전트를 시작할 수 있습니다.If your SQL Server Management Studio instance is running with administrative rights, you can start the SQL Agent manually from within SSMS:

SSMS의 에이전트에 대한 바로 가기 메뉴에서 "시작" 선택

참고

SQL 에이전트가 시각적으로 시작되지 않으면 SSMS에서 SQL Server 에이전트를 마우스 오른쪽 단추로 클릭하고 새로 고침을 클릭합니다.If the SQL Agent doesn't visibly start, right-click the SQL Server Agent in SSMS and select Refresh. 여전히 중지 상태인 경우 SQL Server 구성 관리자에서 수동으로 시작합니다.If it's still in the stopped state, start it manually from SQL Server Configuration Manager.

게시자에서 데이터베이스 권한 설정Set database permissions at the publisher

  1. SQL Server Management StudioSQL Server Management Studio에서 보안을 확장하고, 로그인을 마우스 오른쪽 단추로 클릭한 다음, 새 로그인을 선택합니다.In SQL Server Management StudioSQL Server Management Studio, expand Security, right-click Logins, and then select New Login:

    바로 가기 메뉴에서 "새 로그인" 명령

  2. 일반 페이지에서 검색을 선택합니다.On the General page, select Search. 선택할 개체 이름 입력 상자에 <Publisher_Machine_Name>\repl_snapshot을 입력한 후, 이름 확인을 선택한 다음, 확인을 선택합니다.Enter <Publisher_Machine_Name>\repl_snapshot in the Enter the object name to select box, select Check Names, and then select OK.

    개체 이름 입력을 위한 선택 항목

  3. 사용자 매핑 페이지의 이 로그인으로 매핑된 사용자 목록에서 배포AdventureWorks2012AdventureWorks2012 데이터베이스를 둘 다 선택합니다.On the User Mapping page, in the Users mapped to this login list, select both the distribution and AdventureWorks2012AdventureWorks2012 databases.

    데이터베이스 역할 멤버 자격 목록에서 두 데이터베이스의 로그인에 대해 db_owner 역할을 선택합니다.In the database role membership list, select the db_owner role for the login for both databases.

    데이터베이스와 해당 역할 선택

  4. 확인을 선택하여 로그인을 만듭니다.Select OK to create the login.

  5. 1-4단계를 반복하여 다른 로컬 계정(repl_distribution, repl_logreader 및 repl_merge)에 대한 로그인을 만듭니다.Repeat steps 1-4 to create a login for the other local accounts (repl_distribution, repl_logreader, and repl_merge). 이러한 로그인은 배포AdventureWorks 데이터베이스에서 db_owner 고정 데이터베이스 역할의 멤버인 사용자에게도 매핑되어야 합니다.These logins must also be mapped to users who are members of the db_owner fixed database role in the distribution and AdventureWorks databases.

    개체 탐색기에서 4개 계정 모두 보기

참조 항목:For more information, see:

다음 단계Next steps

이제 서버의 복제가 성공적으로 준비되었습니다.You have now successfully prepared your server for replication. 다음 문서에서는 트랜잭션 복제를 구성하는 방법을 설명합니다.The next article teaches you how to configure transactional replication: