在 ArchLinux 上安装使用 PostgreSQL
本文最后更新于 2024年6月2日 12:59
我之前一直使用 MySQL
,最近才接触 PostgreSQL
。如果你也是 PostgreSQL
的新手,想必也会和我一样在安装使用的时候遇到一些问题(如安装完没有初始化数据库 想启动服务却启动失败等),所以我在这里记录一下我遇到的问题和解决方法。
本文主要介绍如何在 ArchLinux 上安装和使用 PostgreSQL
。
0. btrfs
文件系统禁用 COW
此小节为 btrfs
文件系统禁用 COW
,如果你的系统分区为 ext4
,可以跳过这一小节。
Btrfs(B-tree 文件系统),一种支持写入时复制(COW)的文件系统。COW
简单说就是 写入 不会就地覆盖数据
;相反,数据块在被复制和修改后会 写入到新的位置
,元数据也会更新以指向新的位置。
如果你的 PostgreSQL
数据库运行在 btrfs
系统分区之上,你应当在创建数据库之前禁用 Copy-on-Write
特性[1],否则可能会导致数据库性能问题。
不应创建数据库之后再禁用,因为这一更改只会影响新创建的文件,而不会影响现有文件。
我们创建一个空目录 /var/lib/postgres/data
:
1 |
|
这个目录就是 PostgreSQL
数据库的数据目录。
展示目录属性:
1 |
|
输出如下:
1 |
|
表示 目录没有设置任何属性
现在设置禁用目录 Copy-on-Write
特性:
1 |
|
展示目录属性:
1 |
|
输出如下:
1 |
|
C
表示 关闭 Copy-on-Write
特性。
至此,我们已经在 /var/lib/postgres/data
目录下禁用了 Copy-on-Write
特性。
1. 安装 PostgreSQL
1 |
|
检查 Postgresql
版本
1 |
|
2. 初始化数据库
PostgreSQL
与 MySQL
不同,它需要初始化数据库。
输入以下命令,来进入 postgres
用户的 shell [postgres]$
中
1 |
|
执行下面的命令来初始化数据库
1 |
|
如果没有报错,可以退出 postgres
shell。
1 |
|
3. 启动 PostgreSQL 服务
输入以下命令来启动 PostgreSQL
服务
1 |
|
确认服务是否启动成功
1 |
|
如果输出中显示 Active: active (running)
就表示服务启动成功了。
4. 创建用户和数据库
PostgreSQL 还需要添加一个新的数据库用户。进入 postgres
shell
1 |
|
输入以下命令
1 |
|
输入要增加的角色名称,新的角色是否是超级用户。
提示:如果创建一个与 Linux 用户名相同的 PostgreSQL 角色/用户,就可以访问 PostgreSQL 数据库 shell,而无需指定用户登录(非常方便)。
5. 创建数据库
使用 createdb 命令,创建一个上述用户可以读写的新数据库。
1 |
|
6. 登录数据库
在 postgres
shell 中,输入以下命令来登录数据库
1 |
|
postgres
shell 中,一些常用的命令:
\help
:列出所有命令\l
:列出所有数据库\c database
:连接到指定数据库\du
:列出所有用户\dt
:列出当前数据库的所有表\q
:退出数据库
参考文章: