Làm thế nào để thiết lập hai máy chủ giống hệt nhau để chuyển đổi dự phòng tự động trong PostgreSQL 9.1.
HĐH
Centos 5
PostgreSQL 9.1 được biên dịch từ nguồn
Tài khoản người dùng postgres tồn tại trên cả hai máy và có khóa mật khẩu ssh để kết nối với cả hai máy.
Cài đặt hiện tại của tôi:
Cấu hình máy chủ chính:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
host replication all 10.0.66.1/32 trust
host replication all 10.0.66.2/32 trust
Máy chủ dự phòng
postgresql.conf và pg_hba.conf giống hệt với những gì được cấu hình trên máy chủ chính.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Nhờ hzRoot, giờ tôi đã hiểu cách chuyển máy chủ từ chế độ chờ sang chế độ chính.
Sử dụng các lệnh sau, tôi có thể đồng bộ hóa nô lệ mới với chủ mới và sau đó nhận bản sao lưu và chạy.
Trên bản gốc mới (10.0.66.2)
- su - postgres
- chạm vào trigger.txt trong / opt / pssql91 / data /
- recovery.conf trở thành recovery.done
- psql -c "; CHỌN pg_start_backup ('sao lưu', đúng)";
- rsync -a -v -e ssh / opt / pssql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; CHỌN pg_stop_backup ()";
Trên nô lệ mới (10.0.66.1)
- tạo recovery.conf: cp recovery.done để recovery.conf
- vi recovery.conf thay đổi địa chỉ IP: chính_conninfo = 'host = 10.0.66.2'
- bắt đầu postgresql
Vì vậy, câu hỏi của tôi bây giờ là:
- Đây có phải là cách chính xác để chuyển đổi vai trò?
- Có ai đã tự động quá trình này, nếu vậy bạn đã làm gì?
- Nếu sao chép đồng bộ được bật, tôi nhận thấy máy chủ chính mới sẽ không thực hiện bất kỳ giao dịch nào vì nó đang chờ nô lệ phản hồi. Tuy nhiên, không có nô lệ vì máy chủ khác, chủ cũ bị hỏng. Điều này có đúng không hay tôi cần tạm thời vô hiệu hóa sao chép đồng bộ trong khi nô lệ mới ngừng hoạt động?