openGauss数据库备份与恢复 | 您所在的位置:网站首页 › 数据库数据恢复实验报告 › openGauss数据库备份与恢复 |
openGauss数据库备份与恢复
作者:李强 Email:[email protected] 版本:1.0 2020-08-10 初稿 ![]() 【参考】https://opengauss.org/zh/docs/1.0.0/docs/Administratorguide/gs_basebackup.html gs_basebackup仅支持数据库全量热备份,不支持增量和压缩备份。数据库需要处于开启状态,gs_basebackup会连接数据,读取各文件路径信息,然后开始文件二进制拷贝工作。 对于使用绝对路径创建的表空间,不能在同一台机器上进行备份,否则会出现路径冲突报错。若pg_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg_xlog目录下。若打开增量检测点功能且打开双写, gs_basebackup也会备份双写文件。 1.1 命令帮助BACKUP_DIR=/opt/huawei/backup/`date '+%Y%m%d_%H%M%S'` mkdir -p $BACKUP_DIR 1.2.2 检查数据库状态,确认IP和端口号gs_om -t status –detail 1.2.3 执行备份 gs_basebackup -D $BACKUP_DIR -p 26000 -P -l $BACKUP_DIR gs_om -t status --detail 1.3.2 关闭数据库gs_om -t stop 1.3.3 原数据库目录改名mv /opt/huawei/install/data/db1 /opt/huawei/install/data/db1.old 1.3.4 用备份文件覆盖原数据库目录cp -r /opt/huawei/backup/20200810_141813 /opt/huawei/install/data/db1 1.3.5 修改软链接,指向新的表空间路径cd /opt/huawei/install/data/db1/pg_tblspc ll ln -snf /opt/huawei/install/data/db1/pg_location/sugon_ts 16389 1.3.6 重启启动数据库gs_om -t start 1.3.7 其他编辑postgresql.conf文件,可修改数据库的端口号; 2. 逻辑备份:gs_dump【参考】:https://opengauss.org/zh/docs/1.0.0/docs/Administratorguide/gs_dump.html gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或是其中的对象(模式、表、视图等)。gs_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。 2.1 导出文件格式gs_dump可以创建四种不同的导出文件格式,通过[-F或者–format=]选项指定。 格式名称 -F的参数值 说明 建议 对应导入工具 纯文本格式 p 纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。 小型数据库,一般推荐纯文本格式。 使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。 自定义归档格式 c 一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。 中型或大型数据库,推荐自定义归档格式。 使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。 目录归档格式 d 该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 - tar归档格式 t tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。 - 为了保证数据一致性和完整性,gs_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。 2.2 gs_dump命令下面以sugon_db下的customer_t1表为例,说明gs_dump备份与恢复。 2.3 -F p,导出与恢复(1) 导出 gs_dump -f gsdump_f.sql -p 26000 sugon_db -t customer_t1 (2) 恢复 --删除原表 sugon_db=# drop table customer_t1 cascade; --利用gsql导入数据 gsql -d sugon_db -p 26000 -f gsdump_f.sql --检查数据 \d select count(*) from customer_t1; 3. 逻辑备份与恢复:gs_dumpall/gsqlgs_dumpall是openGauss用于导出所有数据库相关信息工具,其内部是在调用gs_dump命令。 gs_dumpall导出的结果为纯文本格式的SQL脚本文件,即gs_dump -F p格式,使用gsql运行该脚本文件可以恢复openGauss数据库。 3.1 gs_dumpall命令(1)备份 gs_dumpall -f gsdumpall.sql -p 26000 (2)恢复 --删除原数据库 postgres=# drop database sugon_db; --利用gsql恢复数据库 gsql -p 26000 -f gsdumpall.sql postgres --检查数据库 \l 4. 逻辑恢复:gs_restoregs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。 gs_restore可以将dump文件导入到数据库(-d),也可以生成dump文件对应的sql建库脚本(-f),-f和-d不能一起使用。 gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用”-c” 参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 4.1 gs_restore命令(1) 导出 gs_dump -f gsdump_c.dmp -p 26000 sugon_db -t customer_t1 -F c (2) 恢复 --删除原表 sugon_db=# drop table customer_t1 cascade; --利用gs_restore导入数据 gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_c.dmp --检查数据 \d select count(*) from customer_t1; 4.3 -F d,导出与恢复(1)导出 gs_dump -f gsdump_d -p 26000 sugon_db -t customer_t1 -F d (2) 恢复 --删除原表 sugon_db=# drop table customer_t1 cascade; --利用gs_restore导入数据 gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_d --检查数据 \d select count(*) from customer_t1; 4.4 -F t,导出与恢复(1) 导出 gs_dump -f gsdump_t.tar -p 26000 sugon_db -t customer_t1 -F t (2) 恢复 --删除原表 sugon_db=# drop table customer_t1 cascade; --利用gs_restore导入数据 gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_t.tar --检查数据 \d select count(*) from customer_t1; 5. 数据库主机备份与恢复:gs_backupgs_backup工具可以备份和恢复openGauss数据库软件相关的二进制文件和参数文件,当数据库主机出现故障时,用于恢复openGauss软件环境。 5.1 gs_backup命令gs_backup -t backup --backup-dir=gs_backup_`date '+%Y%m%d'` --all 5.3 gs_backup软件恢复(1) 破坏部分数据库程序 rm `which gsql` rm /opt/huawei/install/data/db1/{pg_hba.conf,postgresql.conf} (2)恢复程序 gs_backup -t restore --backup-dir=gs_backup_20200811 --all (3) 全部破坏 当/opt/huawei/install/app下的文件完全丢失时,可将gs_backup备份的程序解包后,恢复到原位置。 |
CopyRight 2018-2019 实验室设备网 版权所有 |