企业运维之云上网络原理与实践-备份与恢复(下)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 企业运维之云上网络原理与实践-备份与恢复

接上篇:

搭建RO

 

您可以通过以下两种方式来搭建RO node。

 

使用initdb来搭建RO

 

主要步骤是使用initdb初始化RO的本地存储目录,然后修改配置文件,启动实例。具体请参考只读节点部署

 

备份RW的本地存储目录来搭建RO

 

这里使用备份RW的本地存储目录。下面通过polar_basebakcup来演示:

 

1. polar_basebackup --host=[主节点所在IP] --port=5432 -D /home/postgres/replica1 -X stream --progress --write-recovery-conf -v  

 

image.png

完成polar_basebackup命令后,我们可以看到/home/postgres/replica1中存在一个polar_shared_data搭建RO时不需要它,将它删除:

 

1. rm -rf /home/postgres/replica1/polar_shared_data  

 

 

打开/home/postgres/replica1/postgresql.conf,修改如下配置项:

 

1.

2. port=5433  

3. polar_hostid=2  

4. polar_enable_shared_storage_mode=on  

5. polar_disk_name='nvme0n1'  

6. polar_datadir='/nvme0n1/shared_data/'  

7. polar_vfs.localfs_mode=off  

8. shared_preload_libraries='$libdir/polar_vfs,$libdir/polar_worker'  

9. polar_storage_cluster_name='disk'  

10. logging_collector=on  

11. log_line_prefix='%p\t%r\t%u\t%m\t'  

12. log_directory='pg_log'  

13. listen_addresses='*'  

14. max_connections=1000  

15. synchronous_standby_names=''

 

打开/home/postgres/replica1/recovery.conf,使用以下配置项替换文件中的所有内容:

 

1. polar_replica='on'  

2. recovery_target_timeline='latest'  

3. primary_slot_name='replica1'  

4. primary_conninfo='host=[主节点所在IP] port=5432 user=postgres dbname=postgres application_name=replica1'  

 

最后,启动只读节点:

 

1. $HOME/tmp_basedir_polardb_pg_1100_bld/bin/pg_ctl start -D $HOME/replica1  

 

检查只读节点能否正常运行:

 

1. $HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql \  

2.    -p 5433 \  

3.    -d postgres \  

4.    -c 'select version();'  

5.            version  

6. --------------------------------  

7. PostgreSQL 11.9 (POLARDB 11.9)  

8. (1 row)  

 

搭建Standby

 

您可以使用全量备份集搭建Standby,这里推荐使用polar_basebackup进行搭建,下面介绍搭建流程。

 

使用polar_basebakcup对实例作全量备份

 

1. polar_basebackup --host=[主节点所在IP] --port=5432 -D /home/postgres/standby --polardata=/nvme0n2/shared_data/  --polar_storage_cluster_name=disk --polar_disk_name=nvme0n2  --polar_host_id=3 -X stream --progress --write-recovery-conf -v  

 

image.png

提示

 

注意这里是构建共享存储的Standby,首先您需要找一台机器部署好PolarDB及其文件系统PolarFS,且已经搭建好了共享存储nvme0n2具体操作请参考准备块设备与搭建文件系统

 

备份完成后如下图所示:

 

image.png

提示

 

如果您没有共享存储设备,则不需要指定--polar_storage_cluster_name,--polar_disk_name,--polar_host_id参数。

 

下面我们简单介绍下其他形态的PolarDB备份:

 

1. -- 单节点本地备份  

2. polar_basebackup -D /polardb/data-standby -X stream  --progress --write-recovery-conf -v  

3. --共享存储本地备份  

4. polar_basebackup -D /polardb/data-standby --polardata=/polardb/data-local  -X stream --progress --write-recovery-conf -v  

5. -- 共享存储写入pfs  

6. polar_basebackup -D /polardb/data-standby --polardata=/nvme7n1/data  --polar_storage_cluster_name=disk --polar_disk_name=nvme7n1  --polar_host_id=3  

 

检查备份是否正常

 

查看本地目录:

 

image.png

查看共享存储目录:

 

image.png

修改postgresql.conf

 

将参数修改为如下所示:

 

1. polar_hostid = 3  

2. polar_disk_name = 'nvme0n2'  

3. polar_datadir = '/nvme0n2/shared_data'  

4. polar_storage_cluster_name = 'disk'  

5. synchronous_standby_names=''  

 

在主库中创建复制槽

 

1. psql --host=[主节点所在IP]  --port=5432 -d postgres -c 'SELECT * FROM pg_create_physical_replication_slot('standby1');'  

2. slot_name | lsn  

3. -----------+-----  

4. standby1  |  

5. (1 row)  

 

修改Standby本地目录配置

 

在Standby的本地存储目录中recovery.conf文件中增加如下参数:

 

1. recovery_target_timeline = 'latest'  

2. primary_slot_name = 'standby1'  

 

启动Standby

 

1. $HOME/tmp_basedir_polardb_pg_1100_bld/bin/pg_ctl start -D $HOME/standby  

 

验证Standby

 

1. psql --host=[master所在IP] --port=5432 -d postgres -c "create table t(t1 int primary key, t2 int);insert into t values (1, 1),(2, 3),(3, 3);"  

2. CREATE TABLE  

3. INSERT 0 3  

 

1. psql --host=[standby所在IP] --port=5432 -d postgres -c ' select * from t;'  

2. t1 | t2  

3. ----+----  

4. 1 |  1  

5. 2 |  3  

6. 3 |  3  

7. (3 rows)  

 

按时间点恢复

 

可以参考PostgreSQL按时间点恢复PITR。其原理如图所示,使用备份集加上归档日志,可以恢复出任意历史时刻的PolarDB实例:

 

image.png

相关文章
|
1天前
|
运维 监控 Kubernetes
现代企业中的自动化运维技术
在当今快节奏的商业环境中,企业需要利用先进的自动化运维技术来提升效率和可靠性。本文探讨了自动化运维技术的发展趋势、关键技术和实施挑战,以及如何通过这些技术实现持续集成、持续交付和高效的系统管理。
8 0
|
2天前
|
运维 监控 Devops
DevOps实践:构建高效运维流程
【6月更文挑战第29天】在现代软件开发周期中,DevOps已成为推动开发和运维团队紧密合作的重要哲学。本文将探讨如何通过DevOps实践来构建一个更高效的运维流程,从而提升软件交付速度、提高产品质量,并确保系统的稳定性和安全性。我们将从持续集成、自动化测试、配置管理、容器化部署、监控与告警等关键方面入手,深入分析DevOps实施过程中的关键环节及其对运维工作的影响。
15 3
|
2天前
|
运维 监控 测试技术
自动化运维实践:CI/CD流程详解
【6月更文挑战第30天】CI/CD实践推动软件开发自动化,通过持续集成确保代码质量,自动部署提升交付速度。核心流程包括:代码管理(Git等)、自动化构建与测试、代码审查、部署。关键点涉及选择工具、测试覆盖率、监控及团队协作。采用CI/CD能减少错误,但需应对挑战,如工具选型、全面测试和团队沟通。
|
3天前
|
运维 Kubernetes 安全
自动化运维在现代IT架构中的角色与实践
【6月更文挑战第28天】随着企业对信息技术的依赖日益加深,高效、可靠的运维体系变得至关重要。本文将探讨自动化运维如何优化现代IT架构,提升运维效率和系统稳定性。我们将从实际案例出发,分析自动化工具的选择、部署策略以及面临的挑战,为读者提供一套可行的自动化运维解决方案。
|
4天前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
12 0
|
4天前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
12 0
|
4天前
程序技术好文:计算机网络(九)——STP原理
程序技术好文:计算机网络(九)——STP原理
|
29天前
|
运维 Linux Shell
运维:Linux服务器崩了怎么办,快来看看这份”急救命令指南“吧!
当服务器出现问题,如崩溃、内存耗尽或CPU使用率过高时,运维工程师需要保持冷静,并通过一系列Shell命令来诊断和解决。首先,检查是否有异常SSH登录活动,查看`/etc/passwd`和`.bash_history`文件,以及用户最近的登录信息。接着,监控网络连接和端口,使用`netstat`和`lsof`命令找出资源占用高的进程,并查看进程启动时间和详细信息。同时,排查可能的恶意文件,检查定时任务和服务配置以确保没有异常启动项。最后,分析系统日志,如`/var/log`目录下的各种日志文件,找出潜在问题。通过这些步骤,可以有效定位和解决服务器故障。
|
2月前
|
运维 关系型数据库 MySQL
day03-Linux运维-Xshell优化和Linux系统命令入门(2)
day03-Linux运维-Xshell优化和Linux系统命令入门(2)
day03-Linux运维-Xshell优化和Linux系统命令入门(2)
|
2月前
|
运维 Linux Shell
day03-Linux运维-Xshell优化和Linux系统命令入门(1)
day03-Linux运维-Xshell优化和Linux系统命令入门(1)
day03-Linux运维-Xshell优化和Linux系统命令入门(1)