Innovating today, leading tomorrow

OpenSQL_Technical Guide
[OpenSQL] bucardo

[OpenSQL] bucardo

bucardo 개요

bucardo 란?

Its heart a Perl daemon that listens for NOTIFY requests and acts on them, by connecting to remote databases and copying data back and forth
– bucardo 공식 문서 –

bucardo 공식 홈페이지 : https://bucardo.org/Bucardo/

Bucardo는 복제 및 동기화 솔루션 이며, 다중 마스터 복제, 다중 노드 복제, 양방향 복제 등 다양한 복제 방법 지원하며, 안정성과 유연성을 제공합니다.

Bucardo 주요 개념과 기능은 아래와 같습니다.

  • 주요 개념과 기능
기능설명
DB Group데이터 베이스 서버 그룹을 나타낸다.
Rel Group복제할 테이블의 그룹을 나타낸다.
Sync데이터 동기화 작업을 나타낸다. DB Group 과 Rel Group 간의 관계를 설정하여 데이터를 복제를 관리
Bucardo
Daemon
데이터 변경을 모니터링하고 동기화 작업을 실행
  • 설정 파라미터 – Bucardo show all

파라미터

autosync_ddl자동 DDL 동기화 모드를 설정합니다.
bucardo_initial_versionBucardo의 초기 버전을 나타냅니다.
bucardo_vacVAC 프로세스를 활성화(1) 또는 비활성화(0)합니다.
bucardo_version현재 Bucardo 버전을 나타냅니다.
ctl_checkonkids_time컨트롤러가 자식 프로세스의 상태를 확인하는 주기를 설정합니다.
ctl_createkid_time컨트롤러가 자식 프로세스를 생성하는 주기를 설정합니다.
ctl_sleep컨트롤러의 슬립 시간을 설정합니다.
default_conflict_strategy기본 충돌 전략을 설정합니다.
default_email_from이메일 발신자 주소를 설정합니다.
default_email_host이메일 호스트를 설정합니다.
default_email_port이메일 포트를 설정합니다.
default_email_to이메일 수신자 주소를 설정합니다.
email_auth_pass이메일 인증에 사용되는 암호를 설정합니다.
email_auth_user이메일 인증에 사용되는 사용자 이름을 설정합니다.
email_debug_file이메일 디버그 파일의 경로를 설정합니다.
endsync_sleep동기화 종료 후 슬립하는 시간을 설정합니다.
flatfile_dir평면 파일(Fullcopy)을 위한 디렉토리를 설정합니다.
host_safety_check호스트 안전성 확인을 설정합니다.
isolation_level격리 수준을 설정합니다.
kid_deadlock_sleep자식 프로세스가 데드락으로 인해 슬립하는 시간을 설정합니다.
kid_nodeltarows_sleep자식 프로세스가 노델타 행으로 인해 슬립하는 시간을 설정합니다.
kid_pingtime자식 프로세스의 핑 주기를 설정합니다.
kid_restart_sleep자식 프로세스가 재시작하는데 걸리는 시간을 설정합니다.
kid_serial_sleep시리얼 모드로 작동 중인 자식 프로세스가 슬립하는 시간을 설정합니다.
kid_sleep자식 프로세스가 슬립하는 시간을 설정합니다.
log_conflict_file충돌 로그 파일의 경로를 설정합니다.
log_level로깅 레벨을 설정합니다.
log_microsecond로그에 마이크로초를 포함할지 여부를 설정합니다.
log_showlevel로그에 레벨을 표시할지 여부를 설정합니다.
log_showline로그에 라인 번호를 표시할지 여부를 설정합니다.
log_showpid로그에 프로세스 ID를 표시할지 여부를 설정합니다.
log_showsyncname로그에 동기화 이름을 표시할지 여부를 설정합니다.
log_showtime로그에 시간을 표시하는 방식을 설정합니다.
log_timer_format타이머 로그의 형식을 설정합니다.
mcp_dbproblem_sleepMCP가 데이터베이스 문제로 인해 슬립하는 시간을 설정합니다.
mcp_loop_sleepMCP의 루프 슬립 시간을 설정합니다.
mcp_pingtimeMCP의 핑 주기를 설정합니다.
mcp_vactimeMCP의 VAC 주기를 설정합니다.
piddirPID 파일을 저장할 디렉토리를 설정합니다.
quick_delta_check퀵 델타 체크를 활성화(1) 또는 비활성화(0)합니다.
reason_fileBucardo 재시작 이유 파일의 경로를 설정합니다.
reload_config_timeout구성 파일 리로드 타임아웃을 설정합니다.
semaphore_table세마포어 테이블의 이름을 설정합니다.
statement_chunk_size문장 청크 크기를 설정합니다.
stats_script_url통계 스크립트의 URL을 설정합니다.
stopfileBucardo 정지 파일의 이름을 설정합니다.
syslog_facilitysyslog 시설을 설정합니다.
tcp_keepalives_countTCP keepalive 카운트를 설정합니다.
tcp_keepalives_idleTCP keepalive 대기 시간을 설정합니다.
tcp_keepalives_intervalTCP keepalive 간격을 설정합니다.
vac_runVAC 실행 주기를 설정합니다.
vac_sleepVAC 슬립 시간을 설정합니다.
warning_file경고 로그 파일의 경로를 설정합니다.

bucardo 설치

  • Bucardo 설치 파일 다운로드
wget -q <https://bucardo.org/downloads/Bucardo-5.6.0.tar.gz>
  • 다운로드 받은 파일 압축 해제
tar xf Bucardo-5.6.0.tar.gz
cd Bucardo-*/
  • Bucardo 설치 전 필요한 라이브러리 설치

yum install -y perl-CPAN perl-DBI perl-DBD-Pg
yum install -y perl-Sys-Syslog

DBIx-Safe 설치

rpm -ivh https://download-ib01.fedoraproject.org/pub/epel/7/aarch64/Packages/p/perl-DBIx-Safe-1.2.5-25.el7.noarch.rpm

yum install postgresql14-plperl -y

  • bucardo 디렉토리 생성

— root
mkdir -p /var/run/bucardo /var/log/bucardo
touch /var/log/bucardo/log.bucardo

chown -R opensql:tmax /var/run/bucardo
chown -R opensql:tmax /var/log/bucardo

  • OpenSQL 설정

— opensql
psql -c “CREATE USER bucardo SUPERUSER PASSWORD ‘bucardo’;”
psql -c “CREATE DATABASE bucardo;”

chown -R opensql:tmax /var/run/bucardo
chown -R opensql:tmax /var/log/bucardo

  • Bucardo Install

[opensql@localhost:~]$ bucardo -h 192.168.245.180 install
This will install the bucardo database into an existing Postgres cluster.
Postgres must have been compiled with Perl support,
and you must connect as a superuser

Current connection settings:

  1. Host: 192.168.245.180
  2. Port: 5432
  3. User: bucardo
  4. Database: bucardo
  5. PID directory: /var/run/bucardo
    Enter a number to change it, P to proceed, or Q to quit: P

Attempting to create and populate the bucardo database and schema
Database creation is complete

Updated configuration setting “piddir”
Installation is now complete.
If you see errors or need help, please email bucardo-general@bucardo.org

You may want to check over the configuration variables next, by running:
bucardo show all
Change any setting by using: bucardo set foo=bar

  • 데이터 베이스 동기화

데이터 베이스 그룹

[opensql@localhost:~]$ bucardo add database server1 dbname=test
Added database “server1”
[opensql@localhost:~]$ bucardo add database server2 dbname=test host=192.168.245.181
Added database “server2”

테이블 그룹

[opensql@localhost:~]$ bucardo add all tables –her=testSrv1 db=server1
Creating relgroup: testSrv1
Added table public.good1 to relgroup testSrv1
Added table public.pgbench_accounts to relgroup testSrv1
Added table public.pgbench_branches to relgroup testSrv1
Added table public.pgbench_tellers to relgroup testSrv1
New tables added: 4
[opensql@localhost:~]$ bucardo add all tables –her=testSrv2 db=server2
Creating relgroup: testSrv2
Added table public.good1 to relgroup testSrv2
Added table public.pgbench_accounts to relgroup testSrv2
Added table public.pgbench_branches to relgroup testSrv2
Added table public.pgbench_tellers to relgroup testSrv2
New tables added: 4
[opensql@localhost:~]$ bucardo list relgroup
Relgroup: testSrv1 DB: server1 Members: public.good1, public.pgbench_accounts, public.pgbench_branches, public.pgbench_tellers
Relgroup: testSrv2 DB: server2 Members: public.good1, public.pgbench_accounts, public.pgbench_branches, public.pgbench_tellers

Sync

[opensql@localhost:~]$ bucardo add sync testdbSrv1 relgroup=testSrv1 db=server1,server2
Added sync “testdbSrv1”
Created a new dbgroup named “testdbSrv1”
[opensql@localhost:~]$ bucardo add sync testdbSrv2 relgroup=testSrv2 db=server2,server1
Added sync “testdbSrv2”
Created a new dbgroup named “testdbSrv2”
[opensql@localhost:~]$ bucardo list sync
Sync “testdbSrv1” Relgroup “testSrv1” [Active]
DB group “testdbSrv1” server1:source server2:target
Sync “testdbSrv2” Relgroup “testSrv2” [Active]
DB group “testdbSrv2” server1:target server2:source

  • bucardo 실행 및 확인

bucardo start sync
bucardo status

PID of Bucardo MCP: 53734
Name State Last good Time Last I/D Last bad Time
============+========+=======================+============+===========+===========+=======
testdbSrv1 | Good | Jun 07, 2023 20:50:23 | 3h 37m 53s | 0/0 | none |
testdbSrv2 | Good | Jun 07, 2023 20:50:23 | 3h 37m 53s | 0/0 | none |

지금까지 PostgreSQL의 bucardo에 관해 알아보았습니다

‘PostgreSQL의 pgpool-II (1)’를 바로 이어서 확인해보세요!

광고성 정보 수신

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다.
내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보
  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
 

개인정보 수집 및 이용

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다. 내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보

  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
  •