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_version | Bucardo의 초기 버전을 나타냅니다. |
bucardo_vac | VAC 프로세스를 활성화(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_sleep | MCP가 데이터베이스 문제로 인해 슬립하는 시간을 설정합니다. |
mcp_loop_sleep | MCP의 루프 슬립 시간을 설정합니다. |
mcp_pingtime | MCP의 핑 주기를 설정합니다. |
mcp_vactime | MCP의 VAC 주기를 설정합니다. |
piddir | PID 파일을 저장할 디렉토리를 설정합니다. |
quick_delta_check | 퀵 델타 체크를 활성화(1) 또는 비활성화(0)합니다. |
reason_file | Bucardo 재시작 이유 파일의 경로를 설정합니다. |
reload_config_timeout | 구성 파일 리로드 타임아웃을 설정합니다. |
semaphore_table | 세마포어 테이블의 이름을 설정합니다. |
statement_chunk_size | 문장 청크 크기를 설정합니다. |
stats_script_url | 통계 스크립트의 URL을 설정합니다. |
stopfile | Bucardo 정지 파일의 이름을 설정합니다. |
syslog_facility | syslog 시설을 설정합니다. |
tcp_keepalives_count | TCP keepalive 카운트를 설정합니다. |
tcp_keepalives_idle | TCP keepalive 대기 시간을 설정합니다. |
tcp_keepalives_interval | TCP keepalive 간격을 설정합니다. |
vac_run | VAC 실행 주기를 설정합니다. |
vac_sleep | VAC 슬립 시간을 설정합니다. |
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-SyslogDBIx-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.bucardochown -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 superuserCurrent connection settings:
- Host: 192.168.245.180
- Port: 5432
- User: bucardo
- Database: bucardo
- PID directory: /var/run/bucardo
Enter a number to change it, P to proceed, or Q to quit: PAttempting to create and populate the bucardo database and schema
Database creation is completeUpdated configuration setting “piddir”
Installation is now complete.
If you see errors or need help, please email bucardo-general@bucardo.orgYou 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 statusPID 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)’를 바로 이어서 확인해보세요!