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

MogDB远程备份和恢复

由迪 2024-02-19
115

原作者:杨天成

  • 初始化
  • 开始远程备份
  • 查看备份情况
  • 模拟备库损坏
  • 开始恢复
  • 启动数据库
  • 查看数据
  • 小结

初始化

解释mkdir -p /home/omm/gs_bak/
gs_probackup init -B /home/omm/gs_bak

[omm@mogdb117 ~]$ which gs_probackup
/data/mogdb/app/3.0.3/bin/gs_probackup
[omm@mogdb117 ~]$ gs_probackup add-instance -B /home/omm/gs_bak -D /data/mogdb/data --instance='remote_prod' --remote-host=172.20.22.132 --remote-port=22 --remote-proto=ssh --remote-path=/data/mogdb/app/3.0.3/bin/ --remote-user=omm 
LOG: Start SSH client process, pid 8000
INFO: Instance 'remote_prod' successfully inited
[omm@mogdb117 ~]$ 
[omm@mogdb117 ~]$ 

开始远程备份

解释[omm@mogdb117 ~]$ gs_probackup backup -B /home/omm/gs_bak --instance=remote_prod -b full -D /data/mogdb/data -h 172.20.22.117 -p 26000 -d postgres -U tpcc_mogdb -W Tpcc_mogdb@123 --remote-host=172.20.22.117 --remote-proto=ssh --remote-port=22 --remote-user=omm --remote-path=/data/mogdb/app/3.0.3/bin/
INFO: Backup start, gs_probackup version: 2.4.2, instance: remote_prod, backup ID: RRAVQO, backup mode: FULL, wal mode: STREAM, remote: true, compress-algorithm: none, compress-level: 1
LOG: Backup destination is initialized
LOG: This openGauss instance was initialized with data block checksums. Data block corruption will be detected
INFO: Backup RRAVQO is going to be taken from standby
LOG: Start SSH client process, pid 8004
LOG: Database backup start
LOG: started streaming WAL at 0/39000000 (timeline 1)
[2023-03-10 18:28:01]: check identify system success                                                
[2023-03-10 18:28:01]: send START_REPLICATION 0/39000000 success                                    
[2023-03-10 18:28:01]: keepalive message is received                                                
[2023-03-10 18:28:01]: keepalive message is received                                                
LOG: SSH process 8004 is terminated with status 0
INFO: PGDATA size: 930MB
INFO: Start transferring data files
LOG: Start SSH client process, pid 8023
LOG: Creating page header map "/home/omm/gs_bak/backups/remote_prod/RRAVQO/page_header_map"
[2023-03-10 18:28:04]: keepalive message is received                                                
[2023-03-10 18:28:06]: keepalive message is received                                                
[2023-03-10 18:28:09]: keepalive message is received                                                
LOG: SSH process 8023 is terminated with status 0
INFO: Data files are transferred, time elapsed: 10s
[2023-03-10 18:28:12]: keepalive message is received                                                
INFO: wait for pg_stop_backup()
INFO: pg_stop backup() successfully executed
LOG: stop_lsn: 0/39052580
LOG: Looking for LSN 0/39052580 in segment: 000000010000000000000039
INFO: Wait for LSN 0/39052580 in streamed WAL segment /home/omm/gs_bak/backups/remote_prod/RRAVQO/database/pg_xlog/000000010000000000000039
LOG: finished streaming WAL at 0/39052840 (timeline 1)
LOG: Found WAL segment: /home/omm/gs_bak/backups/remote_prod/RRAVQO/database/pg_xlog/000000010000000000000039
INFO: Wait a few minutes to get the target LSN or the last valid record prior to the target LSN
LOG: Found LSN: 0/39052580
LOG: Getting the Recovery Time from WAL
LOG: Start SSH client process, pid 8039
LOG: Current minRecPoint 0/39052E40
LOG: Setting minRecPoint to 0/39052580
LOG: SSH process 8039 is terminated with status 0
INFO: Syncing backup files to disk
INFO: Backup files are synced, time elapsed: 0
INFO: Validating backup RRAVQO
INFO: Backup RRAVQO data files are valid
INFO: Backup RRAVQO resident size: 946MB
INFO: Backup RRAVQO completed
[omm@mogdb117 ~]$ 

查看备份情况

解释
[omm@mogdb117 ~]$ gs_probackup show -B /home/omm/gs_bak/

BACKUP INSTANCE 'remote_prod'
======================================================================================================================================
 Instance     Version  ID      Recovery Time           Mode  WAL Mode  TLI  Time   Data   WAL  Zratio  Start LSN   Stop LSN    Status 
======================================================================================================================================
 remote_prod  9.2      RRAVQO  2023-03-10 18:28:10+08  FULL  STREAM    1/0   18s  930MB  16MB    1.00  0/3904A900  0/39052580  OK     
[omm@mogdb117 ~]$ 

模拟备库损坏

解释
[omm@mogdb117 ~]$ gs_ctl stop -D /data/mogdb/data -l logfile
[2023-03-10 18:39:55.011][8063][][gs_ctl]: gs_ctl stopped ,datadir is /data/mogdb/data 
waiting for server to shut down.... done
server stopped
[omm@mogdb117 ~]$ rm -rf /data/mogdb/data
[omm@mogdb117 ~]$ mkdir -p /data/mogdb/data
[omm@mogdb117 ~]$ 

开始恢复

解释
[omm@mogdb117 ~]$ 
[omm@mogdb117 ~]$ gs_probackup restore -B /home/omm/gs_bak --instance remote_prod -D /data/mogdb/data -i RRAVQO
LOG: Restore begin.
LOG: there is no file tablespace_map
LOG: check tablespace directories of backup RRAVQO
LOG: check external directories of backup RRAVQO
WARNING: Process 8002 which used backup RRAVQO no longer exists
INFO: Validating backup RRAVQO
INFO: Backup RRAVQO data files are valid
LOG: Thread [1]: Opening WAL segment "/home/omm/gs_bak/backups/remote_prod/RRAVQO/database/pg_xlog/000000010000000000000039"
INFO: Backup RRAVQO WAL segments are valid
INFO: Backup RRAVQO is valid.
INFO: Restoring the database from backup at 2023-03-10 18:28:00+08
LOG: there is no file tablespace_map
LOG: Restore directories and symlinks...
INFO: Start restoring backup files. PGDATA size: 946MB
LOG: Start thread 1
INFO: Backup files are restored. Transfered bytes: 946MB, time elapsed: 1s
INFO: Restore incremental ratio (less is better): 100% (946MB/946MB)
INFO: Syncing restored files to disk
INFO: Restored backup files are synced, time elapsed: 7s
INFO: Restore of backup RRAVQO completed.
[omm@mogdb117 ~]$ 
[omm@mogdb117 ~]$ 

启动数据库

解释
[omm@mogdb117 data]$ gs_ctl start -M standby
[2023-03-10 18:54:13.247][8101][][gs_ctl]: gs_ctl started,datadir is /data/mogdb/data 
[2023-03-10 18:54:13.345][8101][][gs_ctl]: waiting for server to start...
.0 LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.

0 LOG:  [Alarm Module]Host Name: mogdb117 

0 LOG:  [Alarm Module]Host IP: 172.20.22.117 

0 LOG:  [Alarm Module]Cluster Name: cluster_mogdb 

0 WARNING:  failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.
0 WARNING:  failed to parse feature control file: gaussdb.version.
0 WARNING:  Failed to load the product control file, so gaussdb cannot distinguish product version.
2023-03-10 18:54:13.534 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  when starting as multi_standby mode, we couldn't support data replicaton.
2023-03-10 18:54:13.542 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.

2023-03-10 18:54:13.542 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  [Alarm Module]Host Name: mogdb117 

2023-03-10 18:54:13.542 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  [Alarm Module]Host IP: 172.20.22.117 

2023-03-10 18:54:13.542 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  [Alarm Module]Cluster Name: cluster_mogdb 

2023-03-10 18:54:13.546 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  loaded library "security_plugin"
2023-03-10 18:54:13.549 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2023-03-10 18:54:13.581 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.
2023-03-10 18:54:13.581 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  reserved memory for backend threads is: 340 MB
2023-03-10 18:54:13.581 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  reserved memory for WAL buffers is: 320 MB
2023-03-10 18:54:13.581 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  Set max backend reserve memory is: 660 MB, max dynamic memory is: 3407 MB
2023-03-10 18:54:13.581 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  shared memory 6156 Mbytes, memory context 4067 Mbytes, max process memory 10240 Mbytes
2023-03-10 18:54:14.086 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [CACHE] LOG:  set data cache  size(12582912)
2023-03-10 18:54:14.087 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [CACHE] LOG:  set metadata cache  size(4194304)
2023-03-10 18:54:14.264 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [SEGMENT_PAGE] LOG:  Segment-page constants: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 512
2023-03-10 18:54:14.327 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  mogdb: fsync file "/data/mogdb/data/gaussdb.state.temp" success
2023-03-10 18:54:14.327 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  create gaussdb state file success: db state(STARTING_STATE), server mode(Standby), connection index(1)
2023-03-10 18:54:14.504 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  max_safe_fds = 99975, usable_fds = 100000, already_open = 15
2023-03-10 18:54:14.508 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  the configure file /data/mogdb/app/3.0.3/etc/gscgroup_omm.cfg doesn't exist or the size of configure file has changed. Please create it by root user!
2023-03-10 18:54:14.508 [unknown] [unknown] localhost 47760193130560 0[0:0#0] 0 [BACKEND] LOG:  Failed to parse cgroup config file.
.
[2023-03-10 18:54:15.556][8101][][gs_ctl]:  done
[2023-03-10 18:54:15.556][8101][][gs_ctl]: server started (/data/mogdb/data)

查看数据

解释[omm@mogdb117 data]$ gsql -r
gsql ((MogDB 3.0.3 build 23ba838d) compiled at 2022-10-22 09:50:41 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
tpccdb=# select count(*) from jdbc_reconnect_test ; 
 count 
-------
  2405
(1 row)

小结

通过远程备份,成功恢复数据,依然可以保持主从关系,在某些不能进行build的情况下,是一种极好的方式。

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

文章被以下合辑收录

评论