Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum makecache
yum install postgresql13-server postgresql13-contrib -y
# 默认yum安装路径为 /usr/pgsql-13/bin/
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13
# 默认情况下。linux用户 postgres 拥有访问数据库权限
# 切换到 postgres 用户
su - postgres
# 连接数据库
psql
# 创建账号
create user root with password '*';
# 提升为管理员
ALTER USER root WITH SUPERUSER;
# 退出
\q
exit
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum makecache
yum install postgresql13-server postgresql13-contrib -y
# 默认yum安装路径为 /usr/pgsql-13/bin/
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13
# 默认情况下。linux用户 postgres 拥有访问数据库权限
# 切换到 postgres 用户
su - postgres
# 连接数据库
psql
# 创建账号
create user root with password '*';
# 提升为管理员
ALTER USER root WITH SUPERUSER;
# 退出
\q
exit
# 默认初始化后,pgsql 数据位于 /var/lib/pgsql/13/data
# 编辑 配置文件
vim /var/lib/pgsql/13/data/postgresql.conf
注释掉
listen_addresses = 'localhost'
修改为
listen_addresses = '*'
保存
# 编辑 访问规则文件
vim /var/lib/pgsql/13/data/pg_hba.conf
# 新增
host all all 0.0.0.0/0 scram-sha-256
保存
参考说明
重启服务
systemctl restart postgresql-13.service
添加防火墙
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
测试
pgsql的配置有个在线工具可以直接生成优化配置,根据CPU,内存和硬盘
将配置写入
vim /var/lib/pgsql/13/data/postgresql.conf
重启
systemctl restart postgresql-13.service
systemctl start postgresql-13.service
systemctl stop postgresql-13.service
CREATE USER imspg_admin WITH createdb login PASSWORD '*';
# 创建表空间
postgres=# create tablespace appuser owner appuser location ‘/appuser’;
CREATE TABLESPACE
# 创建数据库
postgres=# create database appdb with owner appuser tablespace appuser;
CREATE DATABASE
标准流程
1 # 创建新账户
2 CREATE USER testuser WITH PASSWORD 'testpasswd';
createdb login
3
4 # 将数据库 OWNER 设置为新创建的帐户
5 ALTER DATABASE testdb OWNER TO testuser;
6
7 # 给新用户授权
8 GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
1 # 赋予用户schema的权限
2 GRANT ALL PRIVILEGES ON SCHEMA illuminant TO testuser;
3
4 # 赋予schema下所有表的权限
5 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA illuminant TO testuser;
编辑配置,设置WAL日志模式
vim /var/lib/pgsql/13/data/postgresql.conf
# 添加以下参数
wal_level = replica
# 开启存档
archive_mode = on # enables archiving; off, on, or always
# (change requires restart)
archive_command = 'cp %p /pgsql_archives/%f'
restore_command TO 'cp /pgsql_archives/%f %p';
# 在回收之前,至少应保留在pg_wal目录中的 WAL 大小。
wal_keep_size = 1GB
退出保存
#
chown -R postgres:postgres /pgsql_archives
chmod -R 0700 /pgsql_archives
添加访问权限
vim /var/lib/pgsql/13/data/pg_hba.conf
# 添加以下参数
host replication repl 10.10.102.181/32 md5
# 允许备库(192.168.102.181)使用repl用户通过scram-sha-256口令认证连接replication数据库[replication是PostgreSQL用于复制的特殊伪数据库的名称]
创建复制数据库用户及赋权
create role repl login replication encrypted password '*';
删除副节点的 data目录(如果一开始没有初始化,则不需要删除)
# 将主库的数据库备份到副节点,并设置流复制
rm -rf /var/lib/pgsql/13/data
systemctl stop postgresql-13.service
pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P
# 如果有自定义表空间 需要 -T
pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P -v -l pangus -T "/var/lib/pgsql/13/data/pangus"=/reptemp
# 重新设置权限
chown -R postgres:postgres /var/lib/pgsql/13/data/
#启动数据库
su - postgres
/usr/pgsql-13/bin/pg_ctl start
-Fp : 所有子目录及其内容的简单副本(数据文件等)。
-R : 在postgresql.auto.conf 文件中自动配置复制特定设置。
-Xs: 使用单独的通道/过程,在备份进行中时,从主到待机流流持续更改 (WAL 记录)。
-P : 显示备份的进度。
-c 快速:此标志可用于执行快速检查点,并避免等待,直到懒惰的检查点完成。
查看复制(主节点运行)
su - postgres
psql -x -c "select * from pg_stat_replication"
查看复制(从节点)
su - postgres
psql -x -c "select * from pg_stat_wal_receiver"
测试
# 在主节点创建数据库
Create database asyncdb;
# 查看数据库
\l
在从库上看,已经同步过来了
安装扩展
yum -y install postgresql13-contrib.x86_64
开启防火墙
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.14.237" port protocol="tcp" port="1774" accept"
firewall-cmd --zone=public --add-port=9011/tcp --permanent
firewall-cmd --zone=public --add-port=9187/tcp --permanent
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload
在监控机上操作
ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.180 -p 1774
ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.181 -p 1774
# 默认初始化后,pgsql 数据位于 /var/lib/pgsql/13/data
# 编辑 配置文件
vim /var/lib/pgsql/13/data/postgresql.conf
注释掉
listen_addresses = 'localhost'
修改为
listen_addresses = '*'
保存
# 编辑 访问规则文件
vim /var/lib/pgsql/13/data/pg_hba.conf
# 新增
host all all 0.0.0.0/0 scram-sha-256
保存
参考说明
重启服务
systemctl restart postgresql-13.service
添加防火墙
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
测试
pgsql的配置有个在线工具可以直接生成优化配置,根据CPU,内存和硬盘
将配置写入
vim /var/lib/pgsql/13/data/postgresql.conf
重启
systemctl restart postgresql-13.service
systemctl start postgresql-13.service
systemctl stop postgresql-13.service
CREATE USER imspg_admin WITH createdb login PASSWORD '*';
# 创建表空间
postgres=# create tablespace appuser owner appuser location ‘/appuser’;
CREATE TABLESPACE
# 创建数据库
postgres=# create database appdb with owner appuser tablespace appuser;
CREATE DATABASE
标准流程
1 # 创建新账户
2 CREATE USER testuser WITH PASSWORD 'testpasswd';
createdb login
3
4 # 将数据库 OWNER 设置为新创建的帐户
5 ALTER DATABASE testdb OWNER TO testuser;
6
7 # 给新用户授权
8 GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
1 # 赋予用户schema的权限
2 GRANT ALL PRIVILEGES ON SCHEMA illuminant TO testuser;
3
4 # 赋予schema下所有表的权限
5 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA illuminant TO testuser;
编辑配置,设置WAL日志模式
vim /var/lib/pgsql/13/data/postgresql.conf
# 添加以下参数
wal_level = replica
# 开启存档
archive_mode = on # enables archiving; off, on, or always
# (change requires restart)
archive_command = 'cp %p /pgsql_archives/%f'
restore_command TO 'cp /pgsql_archives/%f %p';
# 在回收之前,至少应保留在pg_wal目录中的 WAL 大小。
wal_keep_size = 1GB
退出保存
#
chown -R postgres:postgres /pgsql_archives
chmod -R 0700 /pgsql_archives
添加访问权限
vim /var/lib/pgsql/13/data/pg_hba.conf
# 添加以下参数
host replication repl 10.10.102.181/32 md5
# 允许备库(192.168.102.181)使用repl用户通过scram-sha-256口令认证连接replication数据库[replication是PostgreSQL用于复制的特殊伪数据库的名称]
创建复制数据库用户及赋权
create role repl login replication encrypted password '*';
删除副节点的 data目录(如果一开始没有初始化,则不需要删除)
# 将主库的数据库备份到副节点,并设置流复制
rm -rf /var/lib/pgsql/13/data
systemctl stop postgresql-13.service
pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P
# 如果有自定义表空间 需要 -T
pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P -v -l pangus -T "/var/lib/pgsql/13/data/pangus"=/reptemp
# 重新设置权限
chown -R postgres:postgres /var/lib/pgsql/13/data/
#启动数据库
su - postgres
/usr/pgsql-13/bin/pg_ctl start
-Fp : 所有子目录及其内容的简单副本(数据文件等)。
-R : 在postgresql.auto.conf 文件中自动配置复制特定设置。
-Xs: 使用单独的通道/过程,在备份进行中时,从主到待机流流持续更改 (WAL 记录)。
-P : 显示备份的进度。
-c 快速:此标志可用于执行快速检查点,并避免等待,直到懒惰的检查点完成。
查看复制(主节点运行)
su - postgres
psql -x -c "select * from pg_stat_replication"
查看复制(从节点)
su - postgres
psql -x -c "select * from pg_stat_wal_receiver"
测试
# 在主节点创建数据库
Create database asyncdb;
# 查看数据库
\l
在从库上看,已经同步过来了
安装扩展
yum -y install postgresql13-contrib.x86_64
开启防火墙
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.14.237" port protocol="tcp" port="1774" accept"
firewall-cmd --zone=public --add-port=9011/tcp --permanent
firewall-cmd --zone=public --add-port=9187/tcp --permanent
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload
在监控机上操作
ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.180 -p 1774
ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.181 -p 1774
No comments yet