关于postgresql,在执行脚本的时候,往往我们需要先备份数据库,但有些数据库整库备份需要花很长时间,因此采用单表或多表备份的方式更方便。
多表备份
PGPASSWORD=123456 pg_dump -h 127.0.0.1 -U postgres -F c -v -f
test-$(date +%Y-%m-%d-%H-%M).sql test -t test_log_202402_0 -t
test_log_202402_1 -t test_log_202401_0 -t test_log_202401_1
PGPASSWORD=123456
: 这是一个环境变量,用于指定连接到 PostgreSQL 数据库时所使用的密码。在这里,密码是123456
。pg_dump
是一个用于备份 PostgreSQL 数据库的工具。-h 127.0.0.1
: 指定数据库服务器的主机地址为127.0.0.1
,也就是本地主机。-U postgres
: 使用postgres
用户连接到数据库。-F c
: 以自定义格式(custom format)输出备份文件。这种格式支持压缩和并行备份/恢复,并且包含足够的元数据以重新创建数据库对象。-v
: 启用详细输出模式,显示更多的操作信息。-f test-$(date +%Y-%m-%d-%H-%M).sql
: 指定输出文件的名称。这里使用了 shell 命令替换来生成一个包含当前日期和时间的文件名。test
: 要备份的数据库名称。-t test_log_202402_0 -t test_log_202402_1 -t test_log_202401_0 -t test_log_202401_1
: 这些-t
选项用于指定要备份的表。这里,备份了test_log_202402_0
、test_log_202402_1
、test_log_202401_0
和test_log_202401_1
这四张表。
还原表
和还原数据库是一样的,不需要单独指定还原哪张表,直接把备份的文件当库还原就可以,会自动覆盖之前的表
pg_restore -h 127.0.0.1 -U postgres --if-exists -c -v -d
test test-2024-03-22-09-39.sql
pg_restore
: 用于从pg_dump
创建的备份文件中恢复数据的工具。-h 127.0.0.1
: 同样指定数据库服务器的主机地址为127.0.0.1
。-U postgres
: 使用postgres
用户连接到数据库。--if-exists
: 如果目标数据库已存在,则不报错。这通常用于确保在恢复过程中不会因为数据库已存在而导致失败。-c
: 在恢复之前,先创建一个新的数据库连接,这意味着它会先断开现有的连接,然后再重新连接。这有助于确保恢复过程中的数据一致性。-v
: 启用详细输出模式。-d test
: 指定要恢复到的数据库名称,这里是test
。test-2024-03-22-09-39.sql
: 这是要恢复的备份文件的名称。