本文是针对CPU为 X86架构,操作系统为Ubuntu22.04环境,Postgresql11.17版本。
本文只在Ubuntu22.04下进行验证,理论上UOS也可使用,但未经验证。
适用于无互联网场景。
libpq5_14.5-0ubuntu0.22.04.1_amd64.deb
libjson-perl_4.04000-1_all.deb
pgdg-keyring_2018.2_all.deb
postgresql-client-common_244.pgdg2
ssl-cert_1.1.2_all.deb
postgresql-common_244.pgdg22.04+1_
libcommon-sense-perl_3.75-2build1_
libtypes-serialiser-perl_1.01-1_al
libjson-xs-perl_4.030-1build3_amd6
libllvm14_1%3a14.0.0-1ubuntu1_amd6
libsensors-config_1%3a3.6.0-7ubunt
libsensors5_1%3a3.6.0-7ubuntu1_amd
postgresql-client-11_11.17-1.pgdg2
postgresql-11_11.17-1.pgdg22.04+1_
sysstat_12.5.2-2build2_amd64.deb
install.sh
下载地址:CSDN下载链接
适用于无互联网情况。
安装时,需要root权限。
- dpkg -i libpq5_14.5-0ubuntu0.22.04.1_amd64.deb&&
- dpkg -i libjson-perl_4.04000-1_all.deb&&
- dpkg -i pgdg-keyring_2018.2_all.deb&&
- dpkg -i postgresql-client-common_244.pgdg22.04+1_all.deb&&
- dpkg -i ssl-cert_1.1.2_all.deb&&
- dpkg -i postgresql-common_244.pgdg22.04+1_all.deb&&
- dpkg -i libcommon-sense-perl_3.75-2build1_amd64.deb&&
- dpkg -i libtypes-serialiser-perl_1.01-1_all.deb&&
- dpkg -i libjson-xs-perl_4.030-1build3_amd64.deb&&
- dpkg -i libllvm14_1%3a14.0.0-1ubuntu1_amd64.deb&&
- dpkg -i libsensors-config_1%3a3.6.0-7ubuntu1_all.deb&&
- dpkg -i libsensors5_1%3a3.6.0-7ubuntu1_amd64.deb&&
- dpkg -i postgresql-client-11_11.17-1.pgdg22.04+1_amd64.deb&&
- dpkg -i postgresql-11_11.17-1.pgdg22.04+1_amd64.deb&&
- dpkg -i sysstat_12.5.2-2build2_amd64.deb;
或执行目录内 install.sh 脚本
检查
systemctl status postgresql
若能看到服务处于活动状态,则表示安装完成。
- root@docker1:/home/yeqiyu/11.17# systemctl status postgresql
- ● postgresql.service - PostgreSQL RDBMS
- Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
- Active: active (exited) since Wed 2022-10-19 14:00:41 UTC; 17s ago
- Main PID: 1761 (code=exited, status=0/SUCCESS)
- CPU: 872us
-
- Oct 19 14:00:41 docker1 systemd[1]: Starting PostgreSQL RDBMS...
- Oct 19 14:00:41 docker1 systemd[1]: Finished PostgreSQL RDBMS.
仅限于有互联网的情况。
- #创建仓库配置
- 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 --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- #升级包
- sudo apt-get update
- #安装
- #若需要指定版本,可使用 "postgresql-11"、"postgresql-12"等
- sudo apt-get -y install postgresql
安装完成后,数据文件默认保存在/usr/lib/postgresql中,生产环境我们需要调整数据文件位置。
使用root用户
systemctl stop postgresql
使用postgres用户
新建目录(根据具体空间分析)
mkdir /data
chown postgres:postgres /data
#切换用户
su - postgres
#初始化数据库 切换用户后执行。
/usr/lib/postgresql/11/bin/initdb -D /data
执行样例
- postgres@docker1:~$ /usr/lib/postgresql/11/bin/initdb -D /data
- The files belonging to this database system will be owned by user "postgres".
- This user must also own the server process.
-
- The database cluster will be initialized with locale "en_US.UTF-8".
- The default database encoding has accordingly been set to "UTF8".
- The default text search configuration will be set to "english".
-
- Data page checksums are disabled.
-
- fixing permissions on existing directory /data ... ok
- creating subdirectories ... ok
- selecting default max_connections ... 100
- selecting default shared_buffers ... 128MB
- selecting default timezone ... Etc/UTC
- selecting dynamic shared memory implementation ... posix
- creating configuration files ... ok
- running bootstrap script ... ok
- performing post-bootstrap initialization ... ok
- syncing data to disk ... ok
-
- WARNING: enabling "trust" authentication for local connections
- You can change this by editing pg_hba.conf or using the option -A, or
- --auth-local and --auth-host, the next time you run initdb.
-
- Success. You can now start the database server using:
-
- /usr/lib/postgresql/11/bin/pg_ctl -D /data -l logfile start
使用postgres用户
vi /etc/postgresql/11/main/postgresql.conf
1.增加 listen_adresses='*'
2.修改数据文件路径
data_directory="/data"
3.修改最大连接数。将max_connections = 100,将该值改为500,保存后重新启动数据库。
vi /etc/postgresql/11/main/pg_hba.conf
在末尾增加
host all all 0.0.0.0/0 md5
使用postgres用户
注意:此过程只进行一次,使其在/data下生成相应文件
/usr/lib/postgresql/11/bin/pg_ctl -D /data -l logfile start
/usr/lib/postgresql/11/bin/pg_ctl -D /data -l logfile stop
验证
下图是迁移前后数据文件的情况,可重点关注文件的更新时间,从而验证数据迁移是否完成。
此时,可以删除掉原有目录的数据文件,避免日后被误导。
使用postgres用户
登录至postgres数据库
psql
修改用户密码
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
启用特性uuid-ossp
- postgres=# create extension "uuid-ossp";
- CREATE EXTENSION
验证特性是否启用成功
- postgres-# \dx
- 已安装扩展列表
- 名称 | 版本 | 架构模式 | 描述
- -----------+------+------------+-------------------------------------------------
- plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
- uuid-ossp | 1.1 | public | generate universally unique identifiers (UUIDs)
截图
在root下运行
查看服务状态
systemctl status postgresql
停止服务
systemctl stop postgresql
启动服务
systemctl start postgresql
重启服务
systemctl restart postgresql
至此,postgres安装完成。
关键词:pg11、安装、迁移。