暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第20天 |逻辑备份与恢复

原创 不了峰 2022-12-13
217

权限要求:需要具有super或者sysadmin权限

1 逻辑备份

gs_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。
gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库, 那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不 会被导出。

1.1 sql格式

使用gs_dump备份数据库,生成sql文件:
-F, --format=c|d|t|p
– p|plain:输出一个文本SQL脚本文件(默认)。
-Z, --compress=0-9
指定使用的压缩比级别。
取值范围:0~9
– 0表示无压缩。
– 1表示压缩比最小,处理速度最快。
– 9表示压缩比最大,处理速度最慢。

[omm@node1 ~]$ gs_dump -p26000 -U test -W kunpeng@1234 postgres -F p -f /home/omm/backup/backup_postgres.sql gs_dump[port='26000'][postgres][2022-12-13 10:55:02]: The total objects number is 435. gs_dump[port='26000'][postgres][2022-12-13 10:55:02]: [100.00%] 435 objects have been dumped. gs_dump[port='26000'][postgres][2022-12-13 10:55:02]: dump database postgres successfully gs_dump[port='26000'][postgres][2022-12-13 10:55:02]: total time: 4087 ms [omm@node1 ~]$ [omm@node1 backup]$ ls -lrt total 4 -rw------- 1 omm dbgrp 2017 Dec 13 10:55 backup_postgres.sql [omm@node1 backup]$ gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F p -f /home/omm/backup/backup_zzzdb.sql [omm@node1 backup]$ gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F p -f /home/omm/backup/backup_zzzdb.sql gs_dump[port='26000'][zzzdb][2022-12-13 10:58:08]: The total objects number is 478. gs_dump[port='26000'][zzzdb][2022-12-13 10:58:08]: [100.00%] 478 objects have been dumped. gs_dump[port='26000'][zzzdb][2022-12-13 10:58:08]: dump database zzzdb successfully gs_dump[port='26000'][zzzdb][2022-12-13 10:58:08]: total time: 4249 ms [omm@node1 backup]$

1.2 逻辑恢复:

-使用用户test,执行用gs_dump生成的sql脚本,将数据恢复到testdb数据库中: gsql -d testdb -U test -W huawei@1234 -f /var/lib/opengauss/backup/backup.sql

恢复验证:

–验证数据库omm的备份已经被恢复到数据库testdb:
–源库(备份的数据库):
gsql -d omm -c “\dt”

–新库(恢复的数据库):
gsql -d testdb -U test -W huawei@1234 -c “\dt”

1.3 dump格式

逻辑备份:使用gs_dump备份数据库,生成归档格式的备份文件

是 -F c 吗?

--使用test用户,备份omm数据库,生成归档格式的备份文件: -c gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F c -f /home/omm/backup/backup.dump [omm@node1 backup]$ gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F c -f /home/omm/backup/backup.dump gs_dump[port='26000'][zzzdb][2022-12-13 11:12:16]: The total objects number is 478. gs_dump[port='26000'][zzzdb][2022-12-13 11:12:16]: [100.00%] 478 objects have been dumped. gs_dump[port='26000'][zzzdb][2022-12-13 11:12:16]: dump database zzzdb successfully gs_dump[port='26000'][zzzdb][2022-12-13 11:12:16]: total time: 4581 ms [omm@node1 backup]$ [omm@node1 backup]$ ls -lrt -rw------- 1 omm dbgrp 17642 Dec 13 10:58 backup_zzzdb.sql -rw------- 1 omm dbgrp 15000 Dec 13 11:12 backup.dump [omm@node1 backup]$ more backup.dump PGDMP^L [omm@node1 backup]$ more backup.dump PGDMP^L --More--(1%) LESPACE = enmtbs DBCOMPATIBILITY = 'A'; --More--(3%) --More--(4%) ################## -t gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F t -f /home/omm/backup/backup.tar [omm@node1 backup]$ gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F t -f /home/omm/backup/backup.tar gs_dump[port='26000'][zzzdb][2022-12-13 11:13:29]: The total objects number is 478. gs_dump[port='26000'][zzzdb][2022-12-13 11:13:29]: [100.00%] 478 objects have been dumped. gs_dump[port='26000'][zzzdb][2022-12-13 11:13:29]: dump database zzzdb successfully gs_dump[port='26000'][zzzdb][2022-12-13 11:13:29]: total time: 3857 ms [omm@node1 backup]$ [omm@node1 backup]$ ls -lrt -rw------- 1 omm dbgrp 17642 Dec 13 10:58 backup_zzzdb.sql -rw------- 1 omm dbgrp 15000 Dec 13 11:12 backup.dump -rw------- 1 omm dbgrp 48640 Dec 13 11:13 backup.tar [omm@node1 temp]$ tar -xvf backup.tar toc.dat 4871.dat ----这是数据文件 4872.dat 4867.dat 4879.dat 4881.dat 4882.dat 4868.dat 4869.dat 4873.dat 4874.dat 4876.dat 4877.dat 4875.dat restore.sql >>>>> ################## -d gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F d -f /home/omm/backup/zzz [omm@node1 backup]$ gs_dump -p26000 -U test -W kunpeng@1234 zzzdb -F d -f /home/omm/backup/zzz gs_dump[port='26000'][zzzdb][2022-12-13 11:16:02]: The total objects number is 478. gs_dump[port='26000'][zzzdb][2022-12-13 11:16:02]: [100.00%] 478 objects have been dumped. gs_dump[port='26000'][zzzdb][2022-12-13 11:16:02]: dump database zzzdb successfully gs_dump[port='26000'][zzzdb][2022-12-13 11:16:02]: total time: 4772 ms [omm@node1 backup]$ [omm@node1 backup]$ ls -lrt total 40 -rw------- 1 omm dbgrp 2017 Dec 13 10:55 backup_postgres.sql -rw------- 1 omm dbgrp 17642 Dec 13 10:58 backup_zzzdb.sql -rw------- 1 omm dbgrp 15000 Dec 13 11:12 backup.dump drwx------ 2 omm dbgrp 266 Dec 13 11:14 temp drwx------ 2 omm dbgrp 284 Dec 13 11:16 zzz [omm@node1 backup]$ du -hs * 16K backup.dump 4.0K backup_postgres.sql 20K backup_zzzdb.sql 84K temp 68K zzz [omm@node1 backup]$ [omm@node1 zzz]$ ls -lrt total 68 -rw------- 1 omm dbgrp 0 Dec 13 11:15 dir.lock -rw------- 1 omm dbgrp 13010 Dec 13 11:16 toc.dat -rw------- 1 omm dbgrp 48 Dec 13 11:16 4872.dat.gz -rw------- 1 omm dbgrp 48 Dec 13 11:16 4871.dat.gz -rw------- 1 omm dbgrp 26 Dec 13 11:16 4867.dat.gz -rw------- 1 omm dbgrp 44 Dec 13 11:16 4879.dat.gz -rw------- 1 omm dbgrp 51 Dec 13 11:16 4881.dat.gz -rw------- 1 omm dbgrp 1562 Dec 13 11:16 4882.dat.gz -rw------- 1 omm dbgrp 37 Dec 13 11:16 4868.dat.gz -rw------- 1 omm dbgrp 42 Dec 13 11:16 4869.dat.gz -rw------- 1 omm dbgrp 35 Dec 13 11:16 4874.dat.gz -rw------- 1 omm dbgrp 26 Dec 13 11:16 4873.dat.gz -rw------- 1 omm dbgrp 48 Dec 13 11:16 4877.dat.gz -rw------- 1 omm dbgrp 53 Dec 13 11:16 4876.dat.gz -rw------- 1 omm dbgrp 39 Dec 13 11:16 4875.dat.gz [omm@node1 zzz]$

2 逻辑还原

2.1 使用sql格式进行,恢复zzzdb数据库到 re_zzz_sql

testdb100=# create database re_zzz_sql; CREATE DATABASE testdb100=# gsql -p26000 -d re_zzz_sql -U test -W kunpeng@1234 -f /home/omm/backup/backup_zzzdb.sql [omm@node1 backup]$ gsql -p26000 -d re_zzz_sql -U test -W kunpeng@1234 -f /home/omm/backup/backup_zzzdb.sql SET ... GRANT GRANT total time: 392 ms testdb100=# \c re_zzz_sql Non-SSL connection (SSL connection is recommended when requiring high-security) You are now connected to database "re_zzz_sql" as user "omm". re_zzz_sql=# \dt List of relations Schema | Name | Type | Owner | Storage --------+----------------------+-------+--------+---------------------------------- public | invoice | table | user10 | {orientation=row,compression=no} public | newtestwithdata | table | user10 | {orientation=row,compression=no} public | t1 | table | user10 | {orientation=row,compression=no} public | t_seq | table | user10 | {orientation=row,compression=no} public | t_seq_pri | table | user10 | {orientation=row,compression=no} public | t_tab | table | user10 | {orientation=row,compression=no} public | test001 | table | user10 | {orientation=row,compression=no} public | test002 | table | user10 | {orientation=row,compression=no} public | testnewwithoutdata | table | user10 | {orientation=row,compression=no} public | zyf_col_con | table | user10 | {orientation=row,compression=no} public | zyf_col_default | table | user10 | {orientation=row,compression=no} public | zyf_col_null_default | table | user10 | {orientation=row,compression=no} public | zyf_tab_con | table | user10 | {orientation=row,compression=no} (13 rows)

2.2 使用dump格式进行,恢复zzzdb数据库到 re_zzz_dump

create database re_zzz_dump; gs_restore -p26000 -d re_zzz_dump -U test -W kunpeng@1234 /home/omm/backup/backup.dump [omm@node1 backup]$ gs_restore -p26000 -d re_zzz_dump -U test -W kunpeng@1234 /home/omm/backup/backup.dump start restore operation ... table invoice complete data imported ! table newtestwithdata complete data imported ! table t1 complete data imported ! table t_seq complete data imported ! table t_seq_pri complete data imported ! table t_tab complete data imported ! table test001 complete data imported ! table test002 complete data imported ! table testnewwithoutdata complete data imported ! table zyf_col_con complete data imported ! table zyf_col_default complete data imported ! table zyf_col_null_default complete data imported ! table zyf_tab_con complete data imported ! Finish reading 51 SQL statements! end restore operation ... restore operation successful total time: 302 ms [omm@node1 backup]$ re_zzz_sql=# \c re_zzz_dump Non-SSL connection (SSL connection is recommended when requiring high-security) You are now connected to database "re_zzz_dump" as user "omm". re_zzz_dump=# \dt No relations found. re_zzz_dump=# re_zzz_dump=# re_zzz_dump=# \dt List of relations Schema | Name | Type | Owner | Storage --------+----------------------+-------+--------+---------------------------------- public | invoice | table | user10 | {orientation=row,compression=no} public | newtestwithdata | table | user10 | {orientation=row,compression=no} public | t1 | table | user10 | {orientation=row,compression=no} public | t_seq | table | user10 | {orientation=row,compression=no} public | t_seq_pri | table | user10 | {orientation=row,compression=no} public | t_tab | table | user10 | {orientation=row,compression=no} public | test001 | table | user10 | {orientation=row,compression=no} public | test002 | table | user10 | {orientation=row,compression=no} public | testnewwithoutdata | table | user10 | {orientation=row,compression=no} public | zyf_col_con | table | user10 | {orientation=row,compression=no} public | zyf_col_default | table | user10 | {orientation=row,compression=no} public | zyf_col_null_default | table | user10 | {orientation=row,compression=no} public | zyf_tab_con | table | user10 | {orientation=row,compression=no} (13 rows) re_zzz_dump=#

2.3 还原 tar格式

create database re_zzz_tar; gs_restore -p26000 -d re_zzz_tar -U test -W kunpeng@1234 /home/omm/backup/backup.tar [omm@node1 backup]$ gs_restore -p26000 -d re_zzz_tar -U test -W kunpeng@1234 /home/omm/backup/backup.tar start restore operation ... table invoice complete data imported ! table newtestwithdata complete data imported ! table t1 complete data imported ! table t_seq complete data imported ! table t_seq_pri complete data imported ! table t_tab complete data imported ! table test001 complete data imported ! table test002 complete data imported ! table testnewwithoutdata complete data imported ! table zyf_col_con complete data imported ! table zyf_col_default complete data imported ! table zyf_col_null_default complete data imported ! table zyf_tab_con complete data imported ! Finish reading 51 SQL statements! end restore operation ... restore operation successful total time: 260 ms [omm@node1 backup]$ re_zzz_dump=# \c re_zzz_tar Non-SSL connection (SSL connection is recommended when requiring high-security) You are now connected to database "re_zzz_tar" as user "omm". re_zzz_tar=# \dt List of relations Schema | Name | Type | Owner | Storage --------+----------------------+-------+--------+---------------------------------- public | invoice | table | user10 | {orientation=row,compression=no} public | newtestwithdata | table | user10 | {orientation=row,compression=no} public | t1 | table | user10 | {orientation=row,compression=no} public | t_seq | table | user10 | {orientation=row,compression=no} public | t_seq_pri | table | user10 | {orientation=row,compression=no} public | t_tab | table | user10 | {orientation=row,compression=no} public | test001 | table | user10 | {orientation=row,compression=no} public | test002 | table | user10 | {orientation=row,compression=no} public | testnewwithoutdata | table | user10 | {orientation=row,compression=no} public | zyf_col_con | table | user10 | {orientation=row,compression=no} public | zyf_col_default | table | user10 | {orientation=row,compression=no} public | zyf_col_null_default | table | user10 | {orientation=row,compression=no} public | zyf_tab_con | table | user10 | {orientation=row,compression=no} (13 rows) re_zzz_tar=#
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论