PG备份方式

参数解析这里介绍一下高频&&常用的参数说明,如果想深挖,建议查看官网进行查看,文章最后会给出官网链接。-f输出文件或目录名-F && –format=c|d|t|p输出文件格式 (定制、目录...
  1. 参数解析

    这里介绍一下高频&&常用的参数说明,如果想深挖,建议查看官网进行查看,文章最后会给出官网链接。

    -f

    输出文件或目录名

    -F && –format=c|d|t|p

    输出文件格式 (定制、目录、tar)、明文 (默认值))

    -j, –jobs=NUM

    多任务并行

    -Z, –compress=0-9

    被压缩格式的压缩级别

    -a, –data-only

    只转储数据,不包括模式

    -c, –clean

    在重新创建之前,先删除数据库对象,默认这个参数是False,如果不进行删除,可以使用drop进行手动删除已存在的数据库

    -C, –create

    备份文件中有create database数据库的sql语句,默认是进行create

    -E, –encoding=ENCODING

    转储以ENCODING形式编码的数据,默认是数据库编码,不常用

    -s, –schema-only

    只备份数据库策略, 不包括数据

    -t, –table=TABLE

    只备份指定数据库指定名称的表

    –inserts

    以inserts命令,而不是copy命令的形式转储数据,pg_dump默认是copy模式

    –column-inserts

    以带有列名的INSERT命令形式转储数据

    -T, –exclude-table=TABLE

    备份的数据中将排除指定名称的表

    –exclude-table-data=TABLE

    不转储指定名称的表中的数据

    –if-exists

    当删除对象时使用IF EXISTS,这个会安全一点,但是时间会延长,不建议使用

  1. 联接选项

    数据库连接参数是必填参数,参数与psql一致。

    -d, –dbname=DBNAME

    数据库

    -h, –host=主机名

    数据库服务器的主机名或IP

    -p, –port=端口号

    数据库的端口号,默认5432

    -U, –username=名字

    用户名

    -w, –no-password

    永远不提示输入口令

    -W, –password

    强制口令提示 (自动)

备份

登陆数据库服务器/远程连接的服务器,使用命令pg_dump,具体参数请查看上面相关详细介绍,下面列出几种常见的情景:

data + schema

导出整个指定的数据库。

pg_dump -h XXXX -p XXXX -U XXXX 数据库名称 > ~/数据库.sql

pg_dump -h XXXX -p XXXX -U XXXX -d XXXX -F t > /home/q/XXXX.tar

schema

导出整个指定数据库的策略。

pg_dump -h XXXX -p XXXX -U XXXX -s 数据库名称 > ~/数据库.sql

data

导出整个指定数据库的表数据。

pg_dump -h XXXX -p XXXX -U XXXX -a 数据库名称 > ~/数据库.sql

table

导出整个指定数据库的指定表。

pg_dump -h XXXX -p XXXX -U XXXX -t 表名 数据库名称 > ~/表.sql

exclude table

导出整个指定数据库的指定表,并排除掉指定的表。

pg_dump -h XXXX -p XXXX -U XXXX -T 数据库名称 > ~/数据库.sql

pg_dump -h XXXX -p XXXX -U XXXX –exclude-table-data 表名 数据库名称 > ~/数据库.sql

迁移数据

在这里介绍3种传输方式:

  • python -m SimpleHTTPServer 8888

  • scp

  • nc

命令的具体不做详细介绍。

恢复

  1. 切换用户

    登陆到需要进行恢复的数据库服务器,切换postgres用户:

    1
    2
    sudo -i
    su postgres
  2. psql

    执行psql,进行客户端。
    新建数据库专属用户
    create user 用户名 with password ‘密码’;
    新建数据库
    create database 数据库名 owner 用户名;
    分配权限
    grant all privileges on database 数据库 to 用户;
    退出psql,执行:psql 数据库名 <数据库.sql
    加访问权限,执行vim pg_hba.conf 加入:host 数据库 用户 all md5

  3. 恢复

    psql -U XXXX -d XXXX -f XXXX.sql

问题集

1 数据库无hstore数据类型
解决:
create extension hstore;
Select pg_terminate_backend(pid) from pg_stat_activity where datname = ‘数据库名称’

2 aborting because of server version mismatch

服务端 & 客户端 版本不一致导致。
解决:

方案一

降级服务端pg版本 <= 客户端
卸载old版本,更新新版本 >= 服务端版本

方案二

版本共存
1.sudo yumdownloader postgresql
2.yum install perl-ExtUtils-Embed
3.sudo yum install uuid
4.sudo yum install libxslt
5.rpm -ivh postgresql rpm包
6.在 /export 软连接/home/q/export下建一个目录 pg100_data ,用户和组都给 postgres
7./opt/pg10/bin/pg_ctl -D /export/pg100_data initdb
8.postgresql.conf 复制到 /export/pg100_data 目录中
9./opt/pg10/bin/pg_ctl -D /export/pg100_data start

  • 发表于 2020-11-14 14:22
  • 阅读 ( 51 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章