PostgreSQL的安装与配置
创建postgres用户,并生成家目录
apt install libicu-le-hb-dev libreadline-dev gcc make
修改内核参数
vi /etc/sysctl.conf
kernel.shmmax = 68719476736(默认) #最大共享内存段大小
kernel.shmall = 16777216(默认) #可以使用的共享内存的总量
kernel.shmmni = 4096 #整个系统共享内存段的最大数目
kernel.sem = 50100 64128000 50100 1280 #每个信号对象集的最大信号对象数
fs.file-max = 7672460 #文件句柄的最大数量。
net.ipv4.ip_local_port_range = 9000 65000 #应用程序可使用的IPv4端口范围
net.core.rmem_default = 1048576 #套接字接收缓冲区大小的缺省值
net.core.wmem_default = 262144 #套接字发送缓冲区大小的缺省值
net.core.wmem_max = 1048576 #套接字发送缓冲区大小的最大值
使内核参数生效
sysctl -p
下载最新的postgresql
用root用户安装
安装完成后将/usr/local/postgresql的权限都改成postgres
切换到postgres用户,创建/usr/local/postgresql/data
添加配置到/home/postgres/.bashrc文件中
export PG_HOME=/usr/local/postgresql
export PATH=$PG_HOME/bin:$PATH
export PGDATA=$PG_HOME/data
export LD_LIBRARY_PATH=$PG_HOME/lib
export LANG=en_US.utf8
初始化数据库
initdb -D data/
启动数据库
pg_ctl -l logfile start
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
1、PG流复制搭建
pg_basebackup -h 10.100.172.10 -D . -U replicator -P -v -R -X stream -C -S slot1
2、安装pgpool
./configure --prefix=/usr/local/pgpool/ --with-openssl --with-pgsql=/usr/local/postgresql/
make
make install
3、配置pgpool HA
pg_enc -m -k ~/.pgpoolkey -u postgres -p
pg_enc -m -k ~/.pgpoolkey -u replicator -p
pg_enc -m -k ~/.pgpoolkey -u pgpool -p
pg_enc -m -k ~/.pgpoolkey -u admin -p
echo "0" > pgpool_node_id
pcp_attach_node -U postgres -h vip -p 9898 -n 0
4、配置failover.sh
5、failover之后将原本的数据库恢复之后指向新的主库
pg_rewind -R --target-pgdata=/usr/local/postgresql/data/ --source-server="host=10.100.172.10 port=5432 user=postgres password=postgres dbname=postgres" --progress
sysbench --table-size=10000000 --tables=10 --db-driver=pgsql --pgsql-user=postgres --pgsql-password=postgres --mysql-host=10.100.172.12 --pgsql-port=9999 --pgsql-db=sbtest --threads=32 --max-requests=0 --time=30 --report-interval=3 /usr/share/sysbench/oltp_read_write.lua prepare
vim /etc/systemd/logind.conf
RemoveIPC=no -> RemoveIPC=yes
systemctl restart systemd-logind.service