우분투 데이터베이스 복제 설정 방법

데이터베이스 복제는 데이터 손실을 방지하고 시스템의 가용성을 높이는 중요한 기술입니다. 여기서는 우분투에서 데이터베이스 복제를 설정하는 방법을 안내해 드리겠습니다.

1. 데이터베이스 소프트웨어 설치

우선, 데이터베이스 소프트웨어를 설치해야 합니다. 데이터베이스 종류에 따라 설치 방법이 다를 수 있으므로, 여기서는 PostgreSQL을 예로 들겠습니다.

sudo apt-get install postgresql

2. 마스터 데이터베이스 설정

마스터 데이터베이스는 복제를 시작하는 데이터베이스입니다. 이 데이터베이스를 설정해야 합니다.

2.1. PostgreSQL 설정 변경

먼저, PostgreSQL의 설정 파일을 엽니다.

sudo vim /etc/postgresql/{version}/main/postgresql.conf

아래와 같이 설정 변경을 진행합니다. 값을 사용자의 환경에 맞게 수정해야 합니다.

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
archive_mode = on
archive_command = 'cp %p /path/to/archive/%f'

위의 설정은 마스터 데이터베이스에서 원격으로 복제를 위한 WAL(Log) 전송을 허용하도록 합니다. WAL(Level)은 “replica”로 설정하여 필요한 로그를 전송하도록 합니다. max_wal_senders는 병렬 WAL 전송을 위한 복제 연결 수를 제한하는 값입니다. 이 값은 시스템 사양에 따라 조정할 수 있습니다. archive_mode와 archive_command는 WAL 파일의 보관을 위한 설정입니다. archive_command 값은 본인의 환경에 맞게 설정해야 합니다.

변경이 완료되면 PostgreSQL 서비스를 재시작합니다.

sudo service postgresql restart

2.2. 사용자 및 데이터베이스 생성

복제를 위해 사용할 데이터베이스와 사용자를 생성합니다.

sudo -u postgres psql
CREATE DATABASE replication;
CREATE USER replica WITH REPLICATION PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE replication TO replica;

3. 슬레이브 데이터베이스 설정

복제할 슬레이브 데이터베이스를 설정합니다.

3.1. PostgreSQL 설정 변경

슬레이브 데이터베이스의 PostgreSQL 설정 파일을 엽니다.

sudo vim /etc/postgresql/{version}/main/postgresql.conf

아래와 같이 설정 변경을 진행합니다. 값을 사용자의 환경에 맞게 수정해야 합니다.

hot_standby = on

이 설정은 슬레이브 데이터베이스에서 마스터 데이터베이스로부터 WAL 파일을 받아들일 수 있도록 합니다.

변경이 완료되면 PostgreSQL 서비스를 재시작합니다.

sudo service postgresql restart

3.2. 복제 설정 파일 생성

슬레이브 데이터베이스에 복제 설정을 위한 파일을 생성합니다.

sudo vim /etc/postgresql/{version}/main/recovery.conf

아래 예제와 같이 파일을 작성합니다.

standby_mode = 'on'
primary_conninfo = 'host=마스터_IP주소 port=5432 user=replica password=패스워드'
restore_command = 'cp /path/to/archive/%f "%p"'

마스터_IP주소, 패스워드, restore_command 경로 등을 사용자의 환경에 맞게 수정해야 합니다.

4. 데이터베이스 복제 확인

이제 데이터베이스 복제가 제대로 설정되었는지 확인할 수 있습니다.

슬레이브 데이터베이스 콘솔로 접속한 후, 아래 명령어로 복제 상태를 확인합니다.

sudo -u postgres psql
SELECT pg_is_in_recovery();

위의 명령어를 실행한 결과가 t로 나오면, 복제가 정상적으로 진행 중임을 의미합니다. 만약 결과가 f라면, 복제 과정에서 오류가 발생한 것입니다. 이 경우에는 설정을 다시 확인하고 오류를 해결해야 합니다.

확인이 완료되면, 마스터 데이터베이스에 변경된 내용이 슬레이브 데이터베이스에도 잘 복제되는지 확인합니다.

마치며

이제 마스터와 슬레이브 데이터베이스 간의 복제 설정 방법을 알게되었습니다. 이를 통해 데이터 손실을 방지하고 시스템의 가용성을 높일 수 있습니다. 필요한 경우, 데이터베이스 종류에 따라 각각의 설정 방법을 참고하여 진행하시면 됩니다.