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

MogDB学习笔记-从3开始(gs_dump)

1049

写在前面

在现实世界中,对数据进行导入导出非常频繁的,比如oracle有expdp、impdp对数据进行二进制格式的导入导出,也有sqluldr2.bin(非Oracle出品)和sqllloader提供文本文件格式的导出导入,mysql中有mysqldump、select .. into outfile对格式化的文本文件以及SQL语句进行导入导出,Oceanbase有obdumper和obloader等等,可见所有的数据库都有自己的逻辑导入导出工具,因为逻辑备份、数据迁移都会用到这些工具。

学习环境

NODE1(主库)

NODE2(从库)

Hostname

pkt_mogdb1

pkt_mogdb2

IP

10.80.9.249

10.80.9.250

磁盘

20G

20G

内存

2G

2G

数据导出

1、创建测试表

使用《MogDB学习笔记-从0开始》创建的数据库和模式连接主库操作,可以使用命令 gs_om -t status --detail确定那台服务器是主库

[omm@pkt_mogdb1 ~]$ gs_om -t status --detail

[ Cluster State ]

cluster_state : Normal

redistributing : No

current_az : AZ_ALL

[ Datanode State ]

node node_ip port instance state

------------------------------------------------------------------------------------------

1 pkt_mogdb1 10.80.9.249 26000 6001 /opt/mogdb/data/data P Primary Normal

2 pkt_mogdb2 10.80.9.250 26000 6002 /opt/mogdb/data/data S Standby Normal

其中state显示P primary的为主库,如果安装了MogHA高可用软件,可以直接连接VIP进行操作。

创建两个测试表dump_tables和dump_tables_1

[omm@pkt_mogdb1 data]$ gsql -d db_mogdb -h 10.80.9.249 -U zkh -p 26000 -W Zkh12345678

db_mogdb=>create table dump_tables as select * from pg_catalog.pg_tables;

db_mogdb=> create table dump_tables_1 as select * from pg_catalog.pg_tables;

db_mogdb=> select count(*) from dump_tables;

count

-------

128

(1 row)

登录从库查看同步情况

[omm@pkt_mogdb2 ~]$ gsql -d db_mogdb -h 10.80.9.250 -U zkh -p 26000 -W Zkh12345678

gsql ((MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr )

Non-SSL connection (SSL connection is recommended when requiring high-security)

Type "help" for help.

db_mogdb=> select count(*) from dump_tables;

count

-------

128

(1 row)

可见从库还是比较稳定,因为今天出差导致网络变化MogHA出现问题,从库状态变成了need repair的状态,于是通过gs_ctr build data_dir重建了从库,担心从库有问题,所以重新验证了一下。

2、数据导出命令gs_dump

根据官方文档中https://docs.mogdb.io/zh/mogdb/v3.0/5-gs_dump的描述,支持导出4中文件格式,接下来将对这四种格式一一进行测试,查看文件内容。

  1. 测试一:文本文件格式

通过指定-F参数 p表示导出文本文件格式,默认也是这种格式

3.1、导出库中的所有信息包括表结构和数据

[omm@pkt_mogdb1 data]$ gs_dump -p 26000 db_mogdb -f dump1.sql

这个命令是导出了数据库中用户定义的数据库对象,比如模式、表的ddl语句

文件中导出的表结构如下:

数据格式如下:

通过文件格式查看,这种文件形式是无法给其他异构数据库直接使用。

3.2、导出库中的所有表结构

[omm@pkt_mogdb1 data]$ gs_dump -p 26000 db_mogdb --schema-only -f dump2.sql

3.3、导出库中的所有表数据

[omm@pkt_mogdb1 data]$ gs_dump -p 26000 db_mogdb -a -f dump3.sql

3.4、导出某个表

[omm@pkt_mogdb1 data]$ gs_dump -p 26000 db_mogdb -U zkh -W Zkh12345678 --table=dump_tables -f dump3.sql

注意:导出表示需要指定-u参数,这样会去指定的模式中去查找,否则会提示表不存在

3.5、导出表数据为sql语句格式

以上几种导出方式都是按照cope的方式导出,也可以指定导出insert格式的结构,这样如果数据量小的话可以在其他异构数据库中执行。

gs_dump -p 26000 db_mogdb -U zkh -W Zkh12345678 --table=dump_tables -f dump4.sql --insert

查看文件内容如下都是insert语句

4、测试二:自定义归档模式

通过F指定c参数导出自定义归档模式,支持从导出文件中恢复所有或所选数据库对象,使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象,这种格式是二进制格式。

如果数据量打建议不要使用文本格式的文件,建议使用这种格式。当然这种格式也只是针对与MogDB/openguass使用.

4.1、导出整个数据库

[omm@pkt_mogdb1 ~]$ gs_dump -h 10.80.9.249 -p 26000 -U zkh -W Zkh12345678 db_mogdb -F c -f /home/omm/datadump

4.2、导出某个表

gs_dump -h 10.80.9.249 -p 26000 -U zkh -W Zkh12345678 db_mogdb -F c -f /home/omm/datadump/dumpc2 --table=dump_tables

4.3、只导出某个表数据

gs_dump -h 10.80.9.249 -p 26000 -U zkh -W Zkh12345678 db_mogdb -a -F c -f /home/omm/datadump/dumpc3 --table=dump_tables

5、测试三:目录归档格式

通过-F参数指定d选项,此选项会创建一个目录.

5.1、导出整个数据库

[omm@pkt_mogdb1 ~]$ gs_dump -h 10.80.9.249 -p 26000 -U zkh -W Zkh12345678 db_mogdb -F d -f /home/omm/datadump

  1. 测试四:tar归档模式

通过-F参数指定t选项,tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。

6.1、导出整个数据库

[omm@pkt_mogdb1 ~]$ gs_dump -h 10.80.9.249 -p 26000 -U zkh -W Zkh12345678 db_mogdb -F t -f /home/omm/datat.tar

加压生成的datat.tar

[omm@pkt_mogdb1 ~]$ tar -xvf datat.tar

toc.dat

4755.dat

4757.dat

4758.dat

4756.dat

restore.sql

其中restore.sql是ddl语句,其余的是每个表对应一个二进制dat文件。

最后

接下来就是通过导入或者恢复工具,测试上面导出的文件。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论