GaussDB 數據庫架構師修煉(九) 邏輯備份實操

1 邏輯備份定義

? ? ?邏輯備份是指與業務有關的對象進行備份,這個對象包括表、表的數據、視圖、索引、過程、函數等等。GaussDB支持邏輯備份的工具為gs_dump、gs_restore,以下舉例說明。

2 創建舉例數據

以下創建testdb庫,創建test1模式,創建test表作為舉例數據,并初始化數據:

gaussdb=> create database testdb encoding 'UTF8' dbcompatibility='A';
CREATE DATABASE
gaussdb=> \c testdb
Password for user root:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "testdb" as user "root".
testdb=> create schema test1;
CREATE SCHEMA
testdb=> create table test1.test(id int);
CREATE TABLE
testdb=> insert into test1.test values(1),(2),(3);
INSERT 0 3
testdb=>
csdn=> create schema test2;
CREATE SCHEMA
csdn=> create table test2.t2(id int);
CREATE TABLE
csdn=>
csdn=> insert into test2.t2 values(100),(200);
INSERT 0 2

3 gs_dump工具

  • GaussDB提供服務器端工具gs_dump,在線導出數據庫的數據,這些數據包括整個數據庫或數據庫 中指定的對象(如:模式、表、視圖等),并且支持導出完整一致的數據。
  • gs_dump可以創建四種不同的導出文件格式,通過[-F或者--format=]選項指定。

格式名稱

-F的參數值

說明

建議

對應導入工具

純文本格式

p

純文本腳本文件包含SQL語句和命令。命令可以由gsql命令行終端程序執行,用于重新創建數據庫對象并加載表數據。

小型數據庫,一般推薦純文本格式。

使用gsql工具恢復數據庫對象前,可根據需要使用文本編輯器編輯純文本導出文件。

自定義歸檔格式

c

一種二進制文件。支持從導出文件中恢復所有或所選的數據庫對象。

中型或大型數據庫,推薦自定義歸檔格式。

使用gs_restore可以選擇要從自定義歸檔/目錄歸檔/tar歸檔導出文件中導入相應的數據庫對象。

目錄歸檔格式

d

該格式會創建一個目錄,該目錄包含兩類文件,一類是目錄文件,另一類是每個表和blob對象對應的數據文件。

-

tar歸檔格式

t

tar歸檔文件支持從導出文件中恢復所有或所選的數據庫對象。tar歸檔格式不支持壓縮對于單獨表大小應小于8GB

  • gs_dump 常用的參數

-U:指定所連接主機的用戶名。

-f:將輸出發送至指定文件或目錄。

-p:指定主機端口。

-F:選擇輸出格式。

-s:僅導出定義。

-a:僅備份數據。

-Z:指定使用的壓縮比級別。

? ? ?取值范圍:0~9

? ? ?針對自定義歸檔格式,該選項指定單個表數據片段的壓縮,默認方式是以中等級別進行壓縮。tar歸檔格式和純文本格式目前不支持壓縮。

? ? ?0表示無壓縮。

? ? 1表示壓縮比最小,處理速度最快。

? ? 9表示壓縮比最大,處理速度最慢。

-n:多指模式名,如果多個模式名的話,分別指定

-N:排除哪些模式不用備份

-t:指定表名稱

-T:排除要導出的表名稱

4 gs_dump使用舉例

1)備份整個庫

導出純文本格式

 gs_dump -h xxx.xx.0.71 -p 8000 -U root -W xxxx testdb -f /home/Ruby/gs_dump/testdb_bak0725.sql -F p

結果:

導出tar格式

 gs_dump -h xxx.xxx.0.71 -p 8000 -U xxx -W xxxx testdb -f /home/Ruby/gs_dump/testdb_bak0725.tar -F t

結果:

導出自定義歸檔模式

gs_dump -h xxx.xxx.0.71 -p 8000 -U xxxx -W ****xx testdb -f /home/Ruby/gs_dump/testdb_bak0725.dmp -F c

結果:

僅備份定義

 gs_dump -h xxx.xxx.0.71 -p 8000 -U root -W h****xxx testdb -f /home/Ruby/gs_dump/testdb_define_bak0725.sql -s -F -c

結果:

僅導出數據

gs_dump -h xxx.xxx.0.71 -p 8000 -U root -W h******@1Pwd testdb -f /home/Ruby/gs_dump/testdb_data_bak0725.dmp -a -F c

結果:

2)? 備份schema

壓縮導出schema:test1、test2

gs_dump -h xxx.xxx.0.71 -p 8000 -U root -W xxx**** testdb -n test1 -n test2 -Z 9 -f /home/Ruby/gs_dump/schema_bak.tar.gz -a -F c

結果:

壓縮導出testdb但是排除test2模式

 gs_dump -h xxx.xxx.0.71 -p 8000 -U root -W h***sxxx testdb -n test1 -N test2 -Z 9 -f /home/Ruby/gs_dump/schema_bak2.tar.gz -a -F c

?結果:

3)備份表

導出表test,包含表定義與數據

gs_dump -h xxx.xxx.0.71 -p 8000 -U root -W h*****Pwd testdb -t test1.test -f /home/Ruby/gs_dump/test1_test1_tab.sql -F p

結果:

5 gs_resore工具

?gs_restore是GaussDB提供的針對gs_dump導出數據的導入工具,通過此工具可將gs_dump 導出生成的文件進行導入。

?1)主要功能:

  • ?導入到數據庫:如果連接參數中指定了數據庫,則數據將被導入到指定的數據庫中。其中,并行導入必須指定連接的密碼。導入時生成列會自動更新,并像普通列一樣保存。
  • ?導入到腳本文件:如果未指定導入數據庫,則創建包含重建數據庫所必須的SQL語句腳本并寫 入到文件或者標準輸出。等效于直接使用gs_dump導出為純文本格式。

2)常見參數:

-p:指定服務器所偵聽的TCP端口或本地Unix域套接字后綴。
-d:指定連接數據庫的dbname并直接導入到該數據庫中。

6 gs_restore使用舉例

1)恢復數據庫

將testdb庫的數據恢復到test_db1;

首先:創建test_db1庫

[Ruby@dtest1 gs_dump]$ gsql -dpostgres -p8000 -Uroot -Wxxxx** -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.gaussdb=> create database test_db1 encoding 'UTF8' dbcompatibility='A';
CREATE DATABASE
gaussdb=>

再次:執行恢復

?gs_restore -h 192.168.0.71 -p 8000 -U root -W huawei@1Pwd /home/Ruby/gs_dump/testdb_bak0725.tar -d test_db1

執行結果:

驗證數據:

將testdb庫恢復到test_db1

2)恢復schema

步驟1:刪除schema

[Ruby@dtest1 gs_dump]$ gsql -dpostgres -p8000 -Uroot -W*****1Pwd -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.gaussdb=> \c testdb
Password for user root:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "testdb" as user "root".
testdb=>
testdb=>
testdb=>
testdb=> set search_path=test1;
SET
testdb=> \d+List of relationsSchema | Name | Type  | Owner |    Size    |                             Storage                              | Description
--------+------+-------+-------+------------+------------------------------------------------------------------+-------------test1  | test | table | root  | 8192 bytes | {orientation=row,compression=no,storage_type=ustore,segment=off} |
(1 row)testdb=> drop table test;
DROP TABLE
testdb=>
testdb=> drop schema test1;
DROP SCHEMA
testdb=>
testdb=>
testdb=>

步驟2:恢復schema

gs_restore -h xxx.xxx.0.71 -p 8000 -U root -W xxxxx -d testdb -F c /home/Ruby/gs_dump/testdb_bak0725.dmp 

結果:

步驟3:驗證數據:

原來test1模式下面的對象導入。

3)恢復表定義

步驟1:刪除表test

步驟2:恢復表定義

gs_restore -h xxx.xxx.0.71 -p 8000 -U root -W h******Pwd -d testdb -n test1 -t test -e -c -s /home/Ruby/gs_dump/testdb_bak0725.dmp

執行結果:

步驟3:驗證

原來表結構已導入

4)恢復表數據

步驟1:執行恢復命令

gs_restore -h xxx.xxx.0.71 -p 8000 -U root -W h******1Pwd -d testdb -n test1 -t test -e -a /home/Ruby/gs_dump/testdb_bak0725.dmp

步驟2:執行驗證

原來表的3個記錄已恢復

7 批注

GaussDB邏輯備份在一定的場景下非常的有用,如開發有SQL腳本與數據遷移到測試庫,還有分布式環境下分布鍵重新定義的場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90947.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c# Winform發布成獨立文件

改造前&#xff1a; 通過發布頁面&#xff0c;修改部署模式為獨立&#xff0c;輸出文件目錄沒有完全包含所有dll改造后&#xff1a;通過修改項目文件方式修改csproj前&#xff1a;<PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net…

Android基礎(一) 運行HelloWorld

Android基礎&#xff08;一&#xff09; 運行HelloWorld一、創建你的第一個Android項目二、創建HelloWorld項目三、安裝并啟動模擬器四、安裝三方模擬器五、使用真機一、創建你的第一個Android項目 學習任何一門編程語言&#xff0c;編寫的第一個程序都是Hello World&#xff0…

MongoDB 和 Elasticsearch(ES)區別

MongoDB 和 Elasticsearch&#xff08;ES&#xff09;都是流行的 NoSQL 數據庫&#xff0c;但設計目標和適用場景有顯著區別。以下是它們的核心差異和典型使用場景對比&#xff1a;1. 核心定位特性MongoDBElasticsearch數據庫類型文檔數據庫&#xff08;通用型 OLTP&#xff09…

【C++算法】89.多源BFS_01 矩陣

文章目錄題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a;題目鏈接&#xff1a; 542. 01 矩陣 題目描述&#xff1a; 解法 先看懂題目 解法一&#xff1a;一個位置一個位置求&#xff08;最差的情況下會非常恐怖&#xff09; 解法二&#xff1a;多源BFS正…

數據結構之 【排序】(歸并排序)

目錄 1.遞歸實現歸并排序的思想及圖解 2.遞歸實現歸并排序的代碼邏輯 2.1嵌套子函數 2.2遞歸過程 2.3遞歸結束條件 2.4歸并及拷貝過程 3.非遞歸實現歸并排序的思想及圖解 4.非遞歸實現歸并排序的代碼邏輯 4.1邊歸并邊拷貝 4.2某一gap下歸并完成才進行拷貝 5.歸并排…

企業如何選擇適合的高防服務器?

高防服務器租用哪家好&#xff1f;這個問題困擾著許多站長&#xff0c;建立的網站經常受到各種網絡攻擊&#xff0c;雖然高防服務器有著較高的防御性能&#xff0c;十分適合經常被攻擊的行業網站&#xff0c;但是如何租到滿意的高防服務器呢&#xff01;徐州高防服務器是部署在…

告別重復勞動:Ansible 自動化運維超詳細學習路線圖

在運維的世界里&#xff0c;我們總是在與重復性任務作斗爭&#xff1a;部署同一套環境 N 次、在幾十臺服務器上修改同一個配置文件、一遍又一遍地執行相同的發布流程……這些工作不僅枯燥&#xff0c;還極易出錯。 如果你也為此感到煩惱&#xff0c;那么 Ansible 就是為你量身打…

UDS 0x29 身份驗證服務 Authentication service

背景 0x29服務的目的是為客戶端提供一種證明其身份的方法&#xff0c;在ECU端&#xff0c;有些服務或者數據因信息安全、排放或功能安全原因而受到嚴格限制。 只有身份驗證通過之后&#xff0c;才能夠允許其訪問數據和/或診斷服務。 例如&#xff0c;用于將數據下載/上傳到ECU以…

【python高階】-1- python工程和線程并發

一、項目工程守則1.pdm新建一個項目命令行終端&#xff1a;pip install pdmpdm init版本號&#xff1a;x.y.zx:兼容版本y:新增功能z:補丁版本pdm add pytest requests (添加依賴)pdm是協助管理我們的項目 2. black就是規范我們的代碼風格的&#xff1a;pdm add blackblackblack…

YOLOv8 剪枝模型加載踩坑記:解決 YAML 覆蓋剪枝結構的問題

1. 問題背景模型剪枝是實現模型輕量化、加速推理的關鍵步驟。然而&#xff0c;在 Ultralytics YOLOv8 的生態中&#xff0c;在成功剪枝后&#xff0c;進行微調&#xff08;Fine-tuning&#xff09;時會遇到一個令人困惑的現象&#xff1a;明明加載的是剪枝后的模型&#xff08;…

js的學習1

1.數組 數組方法 push()數組尾部添加unshift()數組頭部添加pop()數組尾部刪除shift()數組頭部刪除splice(起始位置&#xff0c;刪除幾個元素&#xff0c;要替換的元素)刪除指定的元素&#xff0c;改變了原數組&#xff0c;返回值是被刪除的元素indexOf()第一次查到的索引&#…

LeetCode 2563.統計公平數對的數目

給你一個下標從 0 開始、長度為 n 的整數數組 nums &#xff0c;和兩個整數 lower 和 upper &#xff0c;返回 公平數對的數目 。 如果 (i, j) 數對滿足以下情況&#xff0c;則認為它是一個 公平數對 &#xff1a; 0 < i < j < n&#xff0c;且 lower < nums[i] n…

ZABBIX配置自動發現與自動注冊,網易郵箱告警和釘釘告警

一、自動發現zabbix server 主動的去發現所有的客戶端&#xff0c;然后將客戶端的信息登記在服務端上。缺點是如果定義的網段中的主機數量多&#xff0c;zabbix server 登記耗時較久&#xff0c;且壓力會較大。1、部署準備準備三臺虛擬機192.168.80.151&#xff1b;192.168.80.…

QT(五)常用類

1. QString字符串類(掌握) QString是Qt的字符串類&#xff0c;與C的string相比&#xff0c;不再使用ASCII編碼&#xff0c;QString使用的是Unicode編碼。 QString中每個字符都是一個16位的QChar&#xff0c;而不是8位的char。 QString完全支持中文&#xff0c;但是由于不同的技…

EXCEL怎么提取表名

錯誤的方法&#xff1a;使用以下方法提取表名的時候&#xff0c;會存在1個問題&#xff0c;公式只在當前工作表生效&#xff0c;換工作表會出現表名覆蓋的情況。RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename&quo…

springboot校園外賣配送系統

目 錄 第一章 緒 論 1.1背景及意義 1.2國內外研究概況 1.3 研究的內容 第二章 關鍵技術的研究 2.1開發技術 2.2 Springboot框架介紹 2.3 Vue.js 主要功能 2.4 MVVM模式介紹 2.4 B/S體系工作原理 2.5 MySQL數據庫 第三章 系統分析 3.1 系統設計目標 3.2 系統可行性…

【智慧物聯網平臺】安裝部署教程——仙盟創夢IDE

一、部署前準備1. 環境要求基礎環境&#xff1a;JDK 1.8、MySQL 5.7/8.0、Maven 3.6、Redis&#xff08;用于緩存&#xff09;、Node.js&#xff08;用于前端構建&#xff0c;可選&#xff09;。依賴服務&#xff1a;若需對接門禁、道閘等硬件設備&#xff0c;需確保設備網絡可…

【安全漏洞】防范未然:如何有效關閉不必要的HTTP請求方法,保護你的Web應用

在構建和維護Web應用的過程中&#xff0c;安全問題總是我們最關心的話題之一。今天&#xff0c;我們要探討的是一個經常被忽視的Web漏洞——未關閉或限制不必要的HTTP請求方法。 雖然我們在日常開發中主要使用 GET 和 POST 這兩種請求方法&#xff0c;但像 PUT、DELETE、HEAD、…

嵌入式Linux裸機開發筆記8(IMX6ULL)主頻和時鐘配置實驗(1)

引言在前幾章實驗中我們都沒有涉及到 I.MX6U 的時鐘和主頻配置操作&#xff0c;全部使用的默認配置&#xff0c; 默認配置下 I.MX6U 工作頻率為 396MHz。但是 I.MX6U 系列標準的工作頻率為 528MHz&#xff0c;有些 型號甚至可以工作到 696MHz。本章學習 I.MX6U 的時鐘系統&…

設計模式(四)創建型:生成器模式詳解

設計模式&#xff08;四&#xff09;創建型&#xff1a;生成器模式詳解生成器模式&#xff08;Builder Pattern&#xff09;是 GoF 23 種設計模式中的核心創建型模式之一&#xff0c;其核心價值在于將一個復雜對象的構建過程與其表示分離&#xff0c;使得同樣的構建過程可以創建…