說明
本示例展示將兩個lightdb單節點通過配置及命令操作改造成一主一從高可用節點。
下文中的
$LTHOME·表示數據庫的安裝目錄
$LTDATA 表示數據庫的實例目錄
具體步驟
- 分別在兩臺服務器中部署lightdb單實例節點,本示例部署配置如下:
- ip: 10.10.1.1 port:5432
- ip: 10.10.1.2 port:5432
後續將10.10.1.1設置爲主節點,10.10.1.2設置爲從節點。
2. 分別修改兩個數據庫實例的配置文件$LTDATA/lightdb.conf中的shared_preload_libraries屬性,添加ltcluster例如:
之後重啓數據庫 lt_ctl restart
3. 分別在兩個數據庫中執行以下SQL:
1. create extension ltcluster;
2. create role ltcluster superuser password 'ltcluster' login;
3. create database ltcluster owner ltcluster;
- 主節點中的 $LTHOME/etc/ltcluster下創建ltcluster.conf配置文件,內容如下(以下IP、端口、路徑均針對主節點數據庫,此處僅作舉例):
node_id=1
node_name='10.10.1.1:5432'
conninfo='host=10.10.1.1 port=5432 user=ltcluster dbname=ltcluster connect_timeout=2'
data_directory='$LTDATA'
pg_bindir='$LTHOME/bin'
failover='automatic'
promote_command='$LTHOME/bin/ltcluster standby promote -f $LTHOME/etc/ltcluster/ltcluster.conf'
follow_command='$LTHOME/bin/ltcluster standby follow -f $LTHOME/etc/ltcluster/ltcluster.conf --upstream-node-id=%n'
restore_command='cp $LTHOME/archive/%f %p'
monitoring_history=true #(Enable monitoring parameters)
monitor_interval_secs=2 #(Define monitoring data interval write time parameter)
connection_check_type='ping'
reconnect_attempts=3 #(before failover,Number of attempts to reconnect to primary before failover(default 6))
reconnect_interval=5
standby_disconnect_on_failover =true
failover_validation_command='$LTHOME/etc/ltcluster/ltcluster_failover.sh "$LTHOME" "$LTDATA"'
log_level=INFO
log_facility=STDERR
log_file='$LTHOME/etc/ltcluster/ltcluster.log'
shutdown_check_timeout=1800
use_replication_slots=true
check_lightdb_command='$LTHOME/etc/ltcluster/check_lightdb.sh'
check_lightdb_interval=10
需要將$LTHOME和$LTDATA替換成絕對路徑:
5. 主節點執行如下命令:
ltcluster primary register -f $LTHOME/etc/ltcluster/ltcluster.conf -F
ltclusterd -d -f $LTHOME/etc/ltcluster/ltcluster.conf -p $LTHOME/etc/ltcluster/ltcluster.pid
主節點註冊完成
6. 停止從節點服務:lt_ctl stop
在從節點$LTHOME/etc/ltcluster目錄下創建ltcluster.conf配置文件,內容如下(以下IP、端口、路徑均針對從節點數據庫,此處僅作舉例):
node_id=2
node_name='10.10.1.2:5432'
conninfo='host=10.10.1.2 port=5432 user=ltcluster dbname=ltcluster connect_timeout=2'
data_directory='$LTDATA'
pg_bindir='$LTHOME/bin'
failover='automatic'
promote_command='$LTHOME/bin/ltcluster standby promote -f $LTHOME/etc/ltcluster/ltcluster.conf'
follow_command='$LTHOME/bin/ltcluster standby follow -f $LTHOME/etc/ltcluster/ltcluster.conf --upstream-node-id=%n'
restore_command='cp $LTHOME/archive/%f %p'
monitoring_history=true #(Enable monitoring parameters)
monitor_interval_secs=2 #(Define monitoring data interval write time parameter)
connection_check_type='ping'
reconnect_attempts=3 #(before failover,Number of attempts to reconnect to primary before failover(default 6))
reconnect_interval=5
standby_disconnect_on_failover =true
failover_validation_command='$LTHOME/etc/ltcluster/ltcluster_failover.sh "$LTHOME" "$LTDATA"'
log_level=INFO
log_facility=STDERR
log_file='$LTHOME/etc/ltcluster/ltcluster.log'
shutdown_check_timeout=1800
use_replication_slots=true
check_lightdb_command='$LTHOME/etc/ltcluster/check_lightdb.sh'
check_lightdb_interval=10
需要將$LTHOME和$LTDATA替換成絕對路徑:
- 配置數據庫登錄免密
- 配置路徑:cd $LTDATA
- 配置文件: vim lt_hba.conf
- 配置內容:在主庫要配置從庫的IP地址,在從庫要配置主庫的IP地址
host all lightdb IP/32 trust
host replication ltcluster IP/32 trust
host ltcluster ltcluster IP/32 trust
改完之後重新加載 lt_ctl reload
8. 備庫克隆,執行如下命令
ltcluster -h $DN1_PRIMARY_IP -p $DN1_PRIMARY_PORT -U ltcluster -d ltcluster f $DN2_5435_HOME/etc/ltcluster/ltcluster.conf standby clone -F
替換
-
- $DN1_PRIMARY_IP:主庫ip
- $DN1_PRIMARY_PORT 主庫端口
- $DN2_5435_HOME 從庫安裝路徑
克隆時間根據主庫大小時間不定,如果主庫和從庫端口號不同的話,從庫需求修改$LTDATA/lightdb.conf,將port改爲從庫自己的端口號。
啓動從庫:lt_ctl start
- 從節點註冊,在從節點執行以下命令
ltcluster standby register -f $LTHOME/etc/ltcluster/ltcluster.conf -F
ltclusterd -d -f $LTHOME/etc/ltcluster/ltcluster.conf -p $LTHOME/etc/ltcluster/ltcluster.pid
- 查看主從狀態,主節點執行如下命令:
ltcluster -f $LTHOME/etc/ltcluster/ltcluster.conf cluster show
ltcluster -f $LTHOME/etc/ltcluster/ltcluster.conf service status
查看:
- Role: 是否正確;
- status:應該爲running;