AIOps 一场颠覆传统运维的盛筵
969
2022-11-09
华为openGauss gs_restore
背景信息
gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。
gs_restore工具由操作系统用户omm执行。
主要功能包含:
导入到数据库如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入到脚本文件如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs_dump导出为纯文本格式。
命令格式
gs_restore [OPTION]... FILE
参数说明
通用参数:
导入参数:
连接参数:
-h, --host=HOSTNAME指定的主机名称。如果取值是以斜线开头,他将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。-p, --port=PORT指定服务器所监听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。在开启线程池情况下,建议使用 pooler port,即监听端口+1。-U, --username=NAME所连接的用户名。-w, --no-password不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。-W, --password=PASSWORD指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W参数;如果没有-W参数,并且不是系统管理员,“gs_restore”会提示用户输入密码。--role=ROLENAME指定导入操作使用的角色名。选择该参数,会使gs_restore连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs_restore要求的权限时,该参数会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以初始用户身份登录,而使用该参数能够在不违反该规定的情况下完成导入。--rolepassword=ROLEPASSWORD指定具体角色用户的角色密码。
示例
特例:执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的MPPDB_backup.sql文件到postgres数据库。
gsql -d postgres -p 8000 -W Bigdata@123 -f /home/omm/test/MPPDB_backup.sqlSETSETSETSETSETALTER TABLEALTER TABLEALTER TABLEALTER TABLEALTER TABLECREATE INDEXCREATE INDEXCREATE INDEXSETCREATE INDEXREVOKEREVOKEGRANTGRANTtotal time: 30476 ms
gs_restore用来导入由gs_dump生成的导出文件。
示例1:执行gs_restore,将导出的MPPDB_backup.dmp文件(自定义归档格式)导入到postgres数据库。
gs_restore -W Bigdata@123 backup/MPPDB_backup.dmp -p 8000 -d postgresgs_restore: restore operation successfulgs_restore: total time: 13053 ms
示例2:执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到postgres数据库。
gs_restore backup/MPPDB_backup.tar -p 8000 -d postgres gs_restore[2017-07-21 19:16:26]: restore operation successfulgs_restore[2017-07-21 19:16:26]: total time: 21203 ms
示例3:执行gs_restore,将导出的MPPDB_backup文件(目录格式)导入到postgres数据库。
gs_restore backup/MPPDB_backup -p 8000 -d postgresgs_restore[2017-07-21 19:16:26]: restore operation successfulgs_restore[2017-07-21 19:16:26]: total time: 21003 ms
示例4:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。 导入PUBLIC模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。
gs_restore backup/MPPDB_backup.dmp -p 8000 -d postgres -e -c -n PUBLICgs_restore: [archiver (db)] Error while PROCESSING TOC:gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdbags_restore: [archiver (db)] could not execute query: ERROR: cannot drop table table1 because other objects depend on itDETAIL: view t1.v1 depends on table table1HINT: Use DROP ... CASCADE to drop the dependent objects too. Command was: DROP TABLE public.table1;
手工删除依赖,导入完成后再重新创建。
gs_restore backup/MPPDB_backup.dmp -p 8000 -d postgres -e -c -n PUBLICgs_restore[2017-07-21 19:16:26]: restore operation successfulgs_restore[2017-07-21 19:16:26]: total time: 2203 ms
示例5:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的定义。
gs_restore backup/MPPDB_backup.dmp -p 8000 -d postgres -e -c -s -n PUBLIC -t table1gs_restore[2017-07-21 19:16:26]: restore operation successfulgs_restore[2017-07-21 19:16:26]: total time: 21000 ms
示例6:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的数据。
gs_restore backup/MPPDB_backup.dmp -p 8000 -d postgres -e -a -n PUBLIC -t table1gs_restore[2017-07-21 19:16:26]: restore operation successfulgs_restore[2017-07-21 19:16:26]: total time: 20203 ms
相关命令
gs_dump,gs_dumpall
发表评论
暂时没有评论,来抢沙发吧~