Gitlab高可用
1.PG主从安装
#postgres 安装
yum -y install readline readline-devel zlib-devel
tar -xvf postgresql-12.10.tar.gz
cd postgresql-12.10
./configure
make && make install
PostgreSQL默认安装目录为 /usr/local/pgsql/
#创建用户:
groupadd -g 1004 postgres
useradd postgres -u 1004 -g postgres
pass@pg
#建议数据及日志目录
mkdir -p /data/pgsql/5432
mkdir -p /data/logs/pgsql
mkdir /data/pgsql/5432/arch
mkdir /data/pgsql/5432/arch_master
更改文件夹所有者为用户postgres
chown postgres.postgres -R /data/pgsql/
chown postgres.postgres -R /data/logs/pgsql
chown postgres.postgres -R /usr/local/pgsql
设置 profile
export PGHOME="/usr/local/pgsql/"
export PGDATA="/data/pgsql/5432/"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
export PATH
初始化数据库
su "postgres"
/usr/local/pgsql/bin/initdb -D /data/pgsql/5432
设置开机自启
cd /data/xjk/software/mysql/postgresql-10.3/contrib/start-scripts
cp linux /etc/init.d/postgresql
chkconfig --add postgresql
chkconfig postgresql on
上面安装步骤需要在主备库都安装
在主库操作:
su postgres
cd /usr/local/pgsql/bin
./psql
创建replication 用户 同步数据库
CREATE ROLE repl login replication password 'repl123';
创建 gitlab 用户设置
ALTER ROLE gitlab CREATEROLE CREATEDB
CREATE USER gitlab WITH PASSWORD 'password@gitlab';
CREATE DATABASE gitlabhq_production OWNER gitlab;
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab;
ALTER ROLE gitlab CREATEROLE SUPERUSER;
修改Master库的pg_hba.conf,把Master库和Standby库的IP地址添加进Master库网络策略白名单中,使Standby库可以连上Master库,同时便于主备切换。
host all all 192.168.1.205/32 trust
host all all 192.168.1.207/32 trust
host replication repl 192.168.1.205/32 md5
host replication repl 192.168.1.207/32 md5
修改参数文件
vi postgresql.conf
************************************
wal_level= logical
max_wal_senders = 10 # at least the number of standby
archive_mode = on
archive_command = 'test ! -f /data/pgsql/5432/arch/%f && cp %p /data/pgsql/5432/arch/%f'
synchronous_standby_names = '' #standby application name, in recover.conf
hot_standby=on
$ vi recovery.done
******************************************
standby_mode=on
restore_command = 'cp /data/pgsql/5432/arch_master/%f %p'
primary_conninfo='application_name=pg2 host=192.168.1.207 port=5432 user=repl password=repl123'
archive_cleanup_command ='pg_archivecleanup /data/pgsql/5432/arch_master %r'
recovery_target_timeline = 'latest'
*********************************************
重启数据库
/usr/local/pgsql/bin/pg_ctl -D /data/pgsql/5432 -l /data/logs/pgsql/postgres.log restart
查看服务是否启动成功
ps -ef | grep postgres
在备库操作:
同步pg到 备库
scp -r postgres@192.168.1.205: /data/pgsql/5432 /data/pgsql/5432
/usr/local/pgsql/bin/pg_basebackup -h 192.168.1.205 -U repl -D /data/pgsql/5432 -X stream –P
psql -h 192.168.1.205 -U gitlab -d gitlabhq_production -p 5432