主从机器先安装Postgresql
安装postgresql:
postgresql 最新版
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null
sudo apt update
sudo apt install postgresql
主服务器设置密码:
sudo -u postgres psql
以下内容内容都是在 postgres=# 下输入
ALTER USER postgres WITH PASSWORD '123456'; # 密码设置为123455,有分号才会执行命令
也可以在主服务器创建专门复制的用户
create user replica login replication password 'replica';
\q #退出客户端
主从都要设置,将来可能会要主从切换:
postgresql远程访问:
vim /etc/postgresql/版本号/main/postgresql.conf
listen_addresses = '*'
wal_level = replica
fsync = on
max_wal_senders = 10 # 从服务器数量
synchronous_commit = on
wal_sender_timeout = 60s
hot_standby = on
vim /etc/postgresql/版本号/main/pg_hba.conf
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
主服务器重启服务
systemctl restart postgresql
从数据库停库
systemctl stop postgresql
删除从服务器数据库
cd /var/lib/postgresql/版本号/main
rm -rf *
基础数据备份
一定要进入到postgres用户里面如:
postgres@localhost:~$ pg_backbaseup -h 192.168.137.129 -D /var/lib/postgresql/版本号/main -U replica -P -v -R -X stream -C -S pgstandby (开始基础备份)
输入密码:replica
-h –指定作为主服务器的主机。
-D –指定数据目录。
-U –指定连接用户。
-P –启用进度报告。
-v –启用详细模式。
-R–启用恢复配置的创建:创建一个standby.signal文件,并将连接设置附加到数据目录下的postgresql.auto.conf。
-X–用于在备份中包括所需的预写日志文件(WAL文件)。流的值表示在创建备份时流式传输WAL。
-C –在开始备份之前,允许创建由-S选项命名的复制插槽。
-S –指定复制插槽名称。
设置standby.signal
vim standby.signal
开启从节点备份
standby_mode = 'on'
systemctl start postgres
查看主从信息
查看从节点是否有t1表
主节点添加一行数据,从节点再查询,可以看到最新的数据
从节点无法完成写操作,他是只读模式
主节点查看从节点信息
select * from pg_stat_replication
从节点查看主节点信息
select * from pg_stat_wal_receiver
主从切换
其实主从的本质就是从节点去主节点不停的备份新的数据。
配置文件的系统其实就是两个:
standby.signal文件,这个是从节点开启备份
postgresql.auto.conf文件,这个从节点指定主节点的地址信息
切换就是原主追加上述配置,原从删除上述配追
1、主从节点全部stop停止
2、原从删除上述配置
3、原从新主启动服务
4、原主新从去原从新主备份一次数据:pg_basebackup操作,同时做解压,然后修改postgresql.conf文件以及standby.signal配置文件
5、启动原主新从查看信息