Cách thiết lập Multi-Master PostgreSQL Replication trên Ubuntu 22.04

theanh

Administrator
Nhân viên
PostgreSQL là một hệ thống quản lý cơ sở dữ liệu nguồn mở tập trung vào khả năng mở rộng và tuân thủ SQL. PostgreSQL là một RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ) tiên tiến và cấp doanh nghiệp hỗ trợ cả truy vấn SQL (quan hệ) và JSON (phi quan hệ).

Đây là một hệ thống quản lý cơ sở dữ liệu cấp doanh nghiệp và cực kỳ ổn định, cung cấp nhiều giải pháp khác nhau, cho phép bạn thiết lập tính khả dụng cao và khả năng chuyển đổi dự phòng. PostgreSQL được sử dụng làm cơ sở dữ liệu chính cho các ứng dụng web, di động và phân tích. Nó có uy tín cao về độ tin cậy, tính linh hoạt, tính mạnh mẽ của tính năng và hiệu suất.

Hướng dẫn này sẽ cài đặt máy chủ cơ sở dữ liệu PostgreSQL trên các máy chủ Ubuntu 22.04 và thiết lập sao chép Multi-Master với nhiều máy chủ thông qua Bucardo - một hệ thống sao chép PostgreSQL không đồng bộ -. Bạn sẽ cài đặt PostgreSQL thông qua kho lưu trữ PostgreSQL chính thức, biên dịch và cài đặt bucardo, sau đó thiết lập sao chép đa chủ giữa các máy chủ PostgreSQL.

Bucardo là ứng dụng Perl cho phép hệ thống sao chép PostgreSQL không đồng bộ và cho phép bạn thiết lập các hoạt động đa chủ và đa nguồn. Bucardo miễn phí và mã nguồn mở, được cấp phép theo Giấy phép BSD.

Điều kiện tiên quyết​

Bạn sẽ cần hai hoặc nhiều máy chủ Ubuntu 22.04 để hoàn thành hướng dẫn này. Bạn cũng sẽ cần một người dùng không phải root có quyền quản trị viên sudo/root trên hệ thống của mình.

Ví dụ này sẽ sử dụng hai máy chủ Ubuntu 22.04 với các thông tin chi tiết sau:
Mã:
Hostname IP Address
---------------------------
postgres01 192.168.5.121
postgres02 192.168.5.122
Khi tất cả các yêu cầu đã sẵn sàng, bạn có thể bắt đầu cài đặt máy chủ PostgreSQL.

Thiết lập /etc/hosts và UFW​

Trong phần đầu tiên này, bạn sẽ thiết lập '/etc/hosts' và tường lửa UFW để mở cổng PostgreSQL mặc định 5432 và cho phép một mạng con cụ thể truy cập vào cổng đó. Bạn phải thiết lập tệp /etc/hosts và UFW trên cả hai máy chủ của mình.

Mở tệp /etc/hosts bằng lệnh nano editor sau.
Mã:
sudo nano /etc/hosts
Thêm các dòng sau vào tệp và đảm bảo thay đổi địa chỉ IP và tên máy chủ chi tiết với môi trường làm việc hiện tại của bạn.
Mã:
192.168.5.121 postgres01
192.168.5.122 postgres02
Lưu và đóng tệp sau khi hoàn tất.

Tiếp theo, nhập lệnh 'ufw' sau để mở cổng OpenSSH và cổng máy chủ PostgreSQL 5432. Với lệnh này, bạn sẽ mở cổng OpenSSH mặc định 22, sau đó bạn cũng sẽ mở cổng máy chủ PostgreSQL 5432 và chỉ định quyền truy cập từ các mạng đáng tin cậy '192.168.5.0/24'.
Mã:
sudo ufw allow OpenSSH
sudo ufw allow from 192.168.5.0/24 to any port 5432
Bây giờ hãy nhập lệnh sau để khởi động và kích hoạt UFW. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo ufw enable
Đầu ra 'Tường lửa đang hoạt động và được bật khi hệ thống khởi động' xác nhận rằng UFW hiện đang chạy và sẽ tự động khởi động khi hệ thống khởi động.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22742%22%20height=%22256%22%3E%3C/svg%3E


Cuối cùng, hãy xác minh trạng thái của tường lửa UFW bằng lệnh bên dưới.
Mã:
sudo ufw status
Bạn sẽ nhận được kết quả như thế này - Dịch vụ OpenSSH đã được thêm vào và có sẵn trong danh sách quy tắc UFW. Ngoài ra, cổng máy chủ PostgreSQL 5432 chỉ có thể truy cập được từ '192.168.5.0/24'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22507%22%20height=%22191%22%3E%3C/svg%3E

Cài đặt PostgreSQL Server​

Đầu tiên, nhập lệnh 'apt install' để cài đặt một số phụ thuộc cơ bản. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22249%22%3E%3C/svg%3E


Tiếp theo, nhập lệnh 'curl' bên dưới để tải xuống khóa GPG của kho lưu trữ PostgreSQL, chuyển đổi tệp .asc thành .gpg thông qua lệnh 'gpg --dearmor', sau đó thêm Kho lưu trữ PostgreSQL.
Mã:
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/pgdg.gpg > /dev/null 2>&1
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Bây giờ hãy cập nhật và làm mới gói Ubuntu của bạn để áp dụng kho lưu trữ PostgreSQL mới mà bạn đã thêm.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22184%22%3E%3C/svg%3E


Bây giờ bạn có thể cài đặt máy chủ PostgreSQL thông qua lệnh 'apt install' bên dưới. Với lệnh này, bạn sẽ cài đặt phiên bản mới nhất của máy chủ PostgreSQL, đó là PostgreSQL 15.
Mã:
sudo apt install postgresql
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22189%22%3E%3C/svg%3E


Sau khi máy chủ PostgreSQL được cài đặt, vui lòng nhập lệnh sau Tiện ích lệnh systemctl để xác minh dịch vụ PostgreSQL và đảm bảo rằng dịch vụ này đang chạy và được bật.
Mã:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Đầu ra 'active (running)' xác nhận rằng máy chủ PostgreSQL đang chạy. Và đầu ra 'enabled' xác nhận rằng PostgreSQL sẽ tự động chạy khi hệ thống khởi động.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22171%22%3E%3C/svg%3E


Cuối cùng, bạn cũng sẽ cần cài đặt tiện ích mở rộng PostgreSQL 'plperl', tiện ích này sẽ cần thiết cho phần mềm Bucardo. Nhập lệnh 'apt install' sau để cài đặt tiện ích mở rộng 'plperl'.
Mã:
sudo apt install postgresql-plperl-15
Quá trình cài đặt sẽ tự động bắt đầu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22275%22%3E%3C/svg%3E


Với lệnh này, bạn đã cài đặt PostgreSQL 15 trên cả hai máy chủ Ubuntu 22.04 và cũng đã cài đặt Phần mở rộng PostgreSQL 'plperl' sẽ được Bucardo sử dụng. Trong bước tiếp theo, bạn sẽ thiết lập người dùng và cơ sở dữ liệu PostgreSQL sẽ được Bucardo sử dụng, đồng thời thiết lập bài kiểm tra cơ sở dữ liệu sẽ được sử dụng để kiểm tra sao chép.

Thiết lập Cơ sở dữ liệu và Người dùng​

Trong phần này, bạn sẽ tạo một cơ sở dữ liệu và người dùng mới sẽ được sử dụng để cài đặt Bucardo. Bạn cũng sẽ tạo một cơ sở dữ liệu mới với lược đồ để kiểm tra sao chép PostgreSQL. Hãy đảm bảo chạy lệnh và truy vấn sau trên máy chủ PostgreSQL bot.

Trước khi bắt đầu, hãy di chuyển thư mục làm việc đến '/var/lib/postgresql'.
Mã:
cd /var/lib/postgresql
Bây giờ hãy đăng nhập vào shell PostgreSQL thông qua lệnh sau.
Mã:
sudo -u postgres psql
Sau khi đăng nhập vào Shell PostgreSQL, nhập các truy vấn sau để tạo người dùng và cơ sở dữ liệu mới có tên là 'bucardo'. Cơ sở dữ liệu này sẽ được sử dụng để lưu trữ dữ liệu Bucardo và người dùng 'bucardo' phải có quyền SUPERUSER.
Mã:
CREATE USER bucardo WITH SUPERUSER;
CREATE DATABASE bucardo OWNER bucardo;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22564%22%20height=%22252%22%3E%3C/svg%3E


Bây giờ hãy nhập các truy vấn sau để xác minh danh sách cơ sở dữ liệu và người dùng trên PostgreSQL. Nếu thành công, bạn sẽ thấy cơ sở dữ liệu và người dùng 'bucardo' lắng nghe trong đầu ra.
Mã:
\l
\du
Danh sách các cơ sở dữ liệu trên máy chủ PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E


Danh sách người dùng trên máy chủ PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22137%22%3E%3C/svg%3E


Sau khi tạo cơ sở dữ liệu và người dùng cho Bucardo, tiếp theo bạn sẽ tạo một cơ sở dữ liệu mới để kiểm tra bản sao trên máy chủ PostgreSQL của mình.

Nhập truy vấn sau để tạo cơ sở dữ liệu mới 'testdb'. Sau đó, kết nối với cơ sở dữ liệu 'testdb' thông qua truy vấn '\c'.
Mã:
CREATE DATABASE testdb;
\c testdb;
Bây giờ hãy nhập truy vấn sau để tạo bảng mới 'users'.
Mã:
CREATE TABLE users (
 id SERIAL PRIMARY KEY,
 first_name VARCHAR(255),
 last_name VARCHAR(255) NOT NULL,
 city VARCHAR(255)
);

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22612%22%20height=%22293%22%3E%3C/svg%3E


Sau khi tạo xong bảng, hãy nhập các truy vấn sau để xác minh lược đồ của bảng 'users', sau đó xác minh danh sách dữ liệu có sẵn trên bảng.
Mã:
\dt
select * from users;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22414%22%20height=%22251%22%3E%3C/svg%3E

Thiết lập Máy chủ PostgreSQL​

Trong phần này, bạn sẽ thiết lập cả hai máy chủ PostgreSQL để chạy trên một địa chỉ IP nội bộ. Ngoài ra, bạn sẽ thiết lập xác thực PostgreSQL để cho phép kết nối giữa các máy chủ được tin cậy với PostgreSQL.

Mở cấu hình PostgreSQL mặc định '/etc/postgresql/15/main/postgresql.conf' bằng lệnh nano editor sau.
Mã:
sudo nano /etc/postgresql/15/main/postgresql.conf
Bỏ chú thích tham số 'listen_addresses' và thêm địa chỉ IP nội bộ của máy chủ PostgreSQL của bạn. Với điều này, bạn sẽ thiết lập PostgreSQL chạy trên một địa chỉ IP nội bộ trên mỗi máy chủ.

Dưới đây là cấu hình cho máy chủ postgres01.
Mã:
listen_addresses = 'localhost, 192.168.5.121'

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22217%22%3E%3C/svg%3E


Và dưới đây là cấu hình cho postgres02 máy chủ.
Mã:
listen_addresses = 'localhost, 192.168.5.122'

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E


Lưu và đóng tệp khi hoàn tất.

Tiếp theo, mở tệp cấu hình xác thực PostgreSQL mặc định '/etc/postgresql/15/main/pg_hba.conf' bằng trình chỉnh sửa nano sau lệnh.
Mã:
sudo nano /etc/postgresql/15/main/pg_hba.conf
Trên máy chủ postgres01, hãy thêm các cấu hình sau và đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP của máy chủ postgres02. Với điều này, mọi kết nối cục bộ và kết nối từ người dùng bucardo sẽ được tin cậy. Ngoài ra, các kết nối của người dùng postgres và bucardo đến từ postgres02 đều đáng tin cậy.
Mã:
# local connection and bucardo user
local all all trust
local all bucardo trust

# Bucardo user remote connections
host all postgres 192.168.5.122/24 trust
host all bucardo 192.168.5.122/24 trust

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22699%22%20height=%22265%22%3E%3C/svg%3E


Dưới đây là cấu hình cho máy chủ postgres02. Hãy đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP của máy chủ postgres01.
Mã:
# local connection and bucardo user
local all all trust
local all bucardo trust

# Bucardo user remote connections
host all postgres 192.168.5.121/24 trust
host all bucardo 192.168.5.121/24 trust

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22687%22%20height=%22274%22%3E%3C/svg%3E


Lưu và đóng tệp khi hoàn tất.

Bây giờ hãy nhập tiện ích lệnh systemctl sau để khởi động lại dịch vụ PostgreSQL và áp dụng thay đổi.
Mã:
sudo systemctl restart postgresql
Với điều này, máy chủ PostgreSQL sẽ chạy trên máy chủ cục bộ và địa chỉ IP nội bộ thông qua tham số 'listen_addresses'. Nhập lệnh sau để xác minh danh sách các cổng mở trên mỗi máy chủ. Bạn sẽ thấy PostgreSQL đang chạy trên địa chỉ IP nội bộ của máy chủ postgres01postgres02.
Mã:
ss -tulpn | grep postgres

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E


Cuối cùng, để xác minh xác thực, bạn có thể nhập lệnh sau để kết nối với PostgreSQL shell.

Trên máy chủ postgres01, nhập lệnh sau. Khi thành công, bạn sẽ được đăng nhập vào PostgreSQL shell của máy chủ postgres02 mà không cần bất kỳ xác thực nào, vì bạn đang ở trên máy chủ và người dùng đáng tin cậy.
Mã:
sudo -u postgres psql
sudo -u postgres psql -U bucardo -h 192.168.5.122
Đối với máy chủ postgres02, bạn có thể nhập lệnh sau để kết nối với PostgreSQL shell đang chạy trên máy chủ postgres01. Bạn sẽ có kết quả tương tự là bạn sẽ được đăng nhập vào máy chủ postgres01 mà không cần xác thực mật khẩu vì cả người dùng và người được kết nối đều đáng tin cậy.
Mã:
sudo -u postgres psql
sudo -u postgres psql -U bucardo -h 192.168.5.121
Với điều này, bạn đã hoàn tất việc cài đặt máy chủ PostgreSQL 15, cấu hình cơ sở dữ liệu và người dùng cho Bucardo, cũng như cấu hình địa chỉ listen_addresses và xác thực của PostgreSQL.

Trong bước tiếp theo, bạn sẽ biên dịch và cài đặt Bucardo dưới dạng ứng dụng cho phép bạn tạo bản sao PostgreSQL Multi-Master.

Cài đặt Bucardo​

Bucardo là một ứng dụng mã nguồn mở và miễn phí để tạo hệ thống sao chép đa nguồn và đa chủ PostgreSQL. Trong phần này, bạn sẽ cài đặt Bucardo theo cách thủ công từ nguồn, bạn cũng không cần phải cài đặt Bucardo trên tất cả các nút.

Bạn sẽ chỉ cài đặt Bucardo trên máy chủ 'postgres01'. Vì vậy, hãy đảm bảo chạy tất cả các lệnh sau trên máy chủ postgres01.

Đầu tiên, hãy nhập lệnh apt sau để cài đặt các gói phụ thuộc cho Bucardo. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo apt install make libdbix-safe-perl libboolean-perl libdbd-mock-perl libdbd-pg-perl libanyevent-dbd-pg-perl libpg-hstore-perl libpgobject-perl libpod-parser-perl libencode-locale-perl

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22238%22%3E%3C/svg%3E


Bây giờ hãy tải xuống mã nguồn Bucardo thông qua lệnh wget bên dưới.
Mã:
wget -q https://bucardo.org/downloads/Bucardo-5.6.0.tar.gz
Sau khi tải xuống, hãy giải nén mã nguồn Bucardo, sau đó di chuyển nó vào thư mục làm việc Bucardo.
Mã:
tar xf Bucardo-5.6.0.tar.gz
cd Bucardo-*/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22730%22%20height=%22145%22%3E%3C/svg%3E


Bây giờ hãy nhập lệnh sau để biên dịch và cài đặt Bucardo vào máy chủ postgres01.
Mã:
perl Makefile.PL
sudo make install

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E


Xác minh đường dẫn nhị phân của ứng dụng 'bucardo' và xác minh phiên bản Bucardo thông qua lệnh sau.
Mã:
which bucardo
bucardo --version
Tệp nhị phân 'bucardo' nằm tại '/usr/local/bin/bucardo', và phiên bản hiện đang được cài đặt là v5.6.0.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22630%22%20height=%22185%22%3E%3C/svg%3E


Sau khi cài đặt Bucaro, tiếp theo bạn sẽ thiết lập bản sao Multi-Master PostgreSQL bằng hai máy chủ PostgreSQL postgres01 và postgres02.

Thiết lập bản sao Multi-Master bằng Bucardo​

Các lệnh sau phải được thực thi trên máy chủ postgres01.

Trước khi bắt đầu, hãy nhập lệnh sau để tạo thư mục dữ liệu và nhật ký mới cho Bucardo.
Mã:
sudo mkdir -p /var/run/bucardo /var/log/bucardo
touch /var/log/bucardo/log.bucardo
Thực hiện lệnh 'bucardo' sau để bắt đầu cài đặt. Xem lại cài đặt kết nối với PostgreSQL, sau đó nhập P để tiếp tục.
Mã:
bucardo install
Khi cài đặt Bucardo thành công, bạn sẽ nhận được thông báo đầu ra như 'Cài đặt hiện đã hoàn tất'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22730%22%20height=%22503%22%3E%3C/svg%3E


Nhập lệnh sau để xác định máy chủ cơ sở dữ liệu và tên cơ sở dữ liệu sẽ được sao chép. Thông tin đó sẽ được lưu trữ dưới dạng 'server1' cho máy chủ PostgreSQL ppstgres01 và 'server2' cho máy chủ PostgreSQL postgres02.
Mã:
bucardo add database server1 dbname=testdb
bucardo add database server2 dbname=testdb host=192.168.5.122

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22123%22%3E%3C/svg%3E


Thêm lược đồ bảng mà bạn muốn sao chép. trong ví dụ này, bảng có tên 'users' sẽ được sao chép và đồng bộ hóa trên các máy chủ PostgreSQL.
Mã:
bucardo add table public.users db=server1
bucardo add table public.users db=server2

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22595%22%20height=%22171%22%3E%3C/svg%3E


Bạn cũng có thể thêm tất cả các bảng vào cơ sở dữ liệu thông qua lệnh 'bucardo add all tables'. Với lệnh này, bạn cũng sẽ tạo một relgroup nếu nó chưa tồn tại.
Mã:
bucardo add all tables --her=testdbSrv1 db=server1
bucardo add all tables --her=testdbSrv2 db=server2

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22709%22%20height=%22250%22%3E%3C/svg%3E


Nhập lệnh sau để xác minh danh sách relgroup available.
Mã:
bucardo list relgroup
Sau đó, xác minh danh sách relgroup, bạn sẽ thấy thông tin chi tiết đầu ra như sau. Trên mỗi relgroup, bạn sẽ thấy tên relgroup theo sau là máy chủ PostgreSQL và bảng có sẵn được thêm vào relgroup.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22546%22%20height=%22113%22%3E%3C/svg%3E


Sau khi thêm relgroup và table, bạn sẽ bắt đầu quá trình đồng bộ hóa cho cả hai máy chủ PostgreSQL. Nhập lệnh sau để tạo một sync 'testdbSrv1' mới sẽ đồng bộ hóa 'server1' và 'server2'. Và quá trình đồng bộ được gọi là 'testdbSrv2' sẽ đồng bộ giữa 'server2' và 'server1'.
Mã:
bucardo add sync testdbSrv1 relgroup=testdbSrv1 db=server1,server2
bucardo add sync testdbSrv2 relgroup=testdbSrv2 db=server2,server1

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22171%22%3E%3C/svg%3E


Bây giờ hãy xác minh danh sách đồng bộ trên Bucardo bằng cách nhập lệnh sau lệnh.
Mã:
bucardo list sync
Bạn sẽ thấy lệnh đồng bộ 'testdbSrv1' có trạng thái 'Hoạt động' và lệnh đồng bộ đến từ 'server1' làm nút nguồn và 'server2' làm nút đích. Đối với quá trình đồng bộ 'testdbSrv2', trạng thái cũng là 'Hoạt động', nhưng quá trình đồng bộ là từ 'server2' là nguồn đến đích 'server1'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22551%22%20height=%22173%22%3E%3C/svg%3E


Tiếp theo, nhập lệnh sau để khởi động lại quá trình đồng bộ. Và bạn sẽ thấy đầu ra 'Đang khởi động Bucardo' khi thành công.
Mã:
bucardo restart sync

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22496%22%20height=%22170%22%3E%3C/svg%3E


Cuối cùng, hãy xác minh trạng thái đồng bộ hóa bằng cách sử dụng 'bucardo' sau lệnh.
Mã:
bucardo status
Bạn sẽ nhận được kết quả tương tự như sau - Cả hai đều đồng bộ 'testdbSrv1' và 'testdbSrv2' ở trạng thái 'Tốt' xác nhận rằng quá trình đồng bộ hóa đang hoạt động và cấu hình của bạn thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22718%22%20height=%22178%22%3E%3C/svg%3E


Lúc này, bạn đã cấu hình bản sao Multi-Master trên PostgreSQL thông qua Bucardo. Tiếp theo, bạn sẽ xác minh bản sao Multi-Master bằng cách thêm dữ liệu mới từ cả hai máy chủ và xác minh bản sao giữa các máy chủ PostgreSQL.

Xác minh bản sao Multi-Master PostgreSQL Server​

Khi đã cấu hình PostgreSQL Multi-Master, điều này có nghĩa là cả hai PostgreSQL sẽ được đồng bộ hóa với nhau và các máy chủ bot chấp nhận các hoạt động ĐỌC và GHI. Trong ví dụ này, bạn sẽ xác minh việc triển khai đa máy chủ PostgreSQL bằng cách chèn dữ liệu mới vào cơ sở dữ liệu 'test'.

Đầu tiên, trên máy chủ postgres01, hãy đăng nhập vào shell PostgreSQL và kết nối với cơ sở dữ liệu 'testdb.
Mã:
sudo -u postgres psql
\c testdb
Nhập các truy vấn sau để chèn dữ liệu mới vào bảng 'người dùng'.
Mã:
INSERT INTO users(id, first_name, last_name, city)
VALUES 
(1, 'Alice', 'Wonderland', 'Sweden'),
(2, 'Bob', 'Rista', 'Romania'),
(3, 'John', 'Bonas', 'England');

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22599%22%20height=%22324%22%3E%3C/svg%3E


Xác minh và truy xuất dữ liệu của bạn thông qua truy vấn chọn bên dưới. Bạn sẽ thấy dữ liệu của mình khả dụng.
Mã:
select count(*) from users;
select * from users;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22454%22%20height=%22353%22%3E%3C/svg%3E


Nhập 'quit' để thoát khỏi shell PostgreSQL.

Sau đó, xác minh trạng thái đồng bộ hóa Bucardo bằng lệnh 'bucardo' bên dưới.
Mã:
bucardo status
Trong phần 'Last I/D', bạn sẽ thấy dữ liệu đồng bộ hóa cuối cùng giữa các máy chủ PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22705%22%20height=%22193%22%3E%3C/svg%3E


Bây giờ hãy di chuyển đến máy chủ postgres02, truy cập PostgreSQL shell, sau đó kết nối đến cơ sở dữ liệu 'testdb'.
Mã:
sudo -u postgres psql
\c testdb
Lấy dữ liệu có sẵn trên bảng 'users' bằng truy vấn sau. Bạn sẽ thấy dữ liệu của mình có sẵn và được sao chép từ máy chủ postgres01.
Mã:
select count(*) from users;
select * from users;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22579%22%20height=%22457%22%3E%3C/svg%3E


Tiếp theo, nhập các truy vấn sau để thêm dữ liệu khác và nhập 'quit' để thoát khỏi PostgreSQL vỏ.
Mã:
INSERT INTO users(id, first_name, last_name, city)
VALUES 
(4, 'Ian', 'Gibson', 'Liverpool'),
(5, 'Tom', 'Riddle', 'Paris'),
(6, 'Jared', 'Dunn', 'New York');
Mã:
quit

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22229%22%3E%3C/svg%3E


Bây giờ hãy quay lại máy chủ postgres01 và chạy lệnh bucardo sau để xác minh trạng thái đồng bộ hóa.
Mã:
bucardo status
Bạn sẽ thấy rằng trên 'testdbSrv2' lần đồng bộ hóa cuối cùng là 3. Bạn có thể thấy điều này trong phần 'Last I/D'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22705%22%20height=%22196%22%3E%3C/svg%3E


Bây giờ hãy đăng nhập lại vào shell PostgreSQL và kết nối với cơ sở dữ liệu 'testdb'.
Mã:
sudo -u postgres psql
\c testdb
Sau đó, hãy xác minh danh sách dữ liệu khả dụng trên bảng 'người dùng'. Bạn sẽ thấy dữ liệu bổ sung mà bạn đã thêm từ máy chủ postgres02.
Mã:
select count(*) from users;
select * from users;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22588%22%20height=%22515%22%3E%3C/svg%3E


Với điều này, bây giờ bạn đã cấu hình bản sao PostgreSQL đa chủ thông qua Bucardo trên máy chủ Ubuntu 22.04.

Kết luận​

Trong hướng dẫn này, bạn đã cài đặt máy chủ PostgreSQL trên máy chủ Ubuntu 22.04 và cấu hình sao chép đa chủ thông qua Bucardo bằng hai máy chủ PostgreSQL. Bạn đã học cách thiết lập PostgreSQL để chạy trên địa chỉ IP cục bộ, cấu hình xác thực cho người dùng PostgreSQL, biên dịch và cài đặt Bucardo, sau đó là cách thiết lập sao chép đa chủ với Bucardo.

Ngoài ra, bạn đã xác minh sao chép đa chủ trên PostgreSQL bằng cách chèn dữ liệu mới từ máy chủ PostgreSQL để đảm bảo cơ sở dữ liệu và bảng được sao chép và đồng bộ hóa.

Với điều này, giờ đây bạn có thể thêm nhiều máy chủ PostgreSQL hơn vào môi trường hiện tại của mình, sau đó bạn cũng có thể thiết lập cân bằng tải và chuyển đổi dự phòng thông qua ứng dụng của bên thứ ba như HAPROXY hoặc bằng cách sử dụng pgPool để quản lý kết nối máy khách. Để biết thông tin chi tiết về PostgreSQL, hãy truy cập tài liệu chính thức của PostgreSQL. Đối với Bucardo, hãy truy cập tài liệu chính thức của Bucardo.
 
Back
Bên trên