阅读原文请点击:
http://click.aliyun.com/m/23940/
摘要: 标签 PostgreSQL , 中间件 , 连接池 , 平滑切换 , 会话设置 , 会话状态 , 绑定变量语句 , prepared statement 背景 数据库迁移、切换是很普遍的一个话题,但是大多数的方案,对用户来说都是有感知的,所以用户的体验并不好。
标签
PostgreSQL , 中间件 , 连接池 , 平滑切换 , 会话设置 , 会话状态 , 绑定变量语句 , prepared statement
背景
数据库迁移、切换是很普遍的一个话题,但是大多数的方案,对用户来说都是有感知的,所以用户的体验并不好。
例如用户使用了绑定变量语句,主备角色切换后绑定变量语句没有了,会导致调用报错。
我们需要维护主库的硬件,那么可以在中间件层面,将主备数据库的角色进行平滑调换,维护好硬件,再平滑的调换回来。
数据库主备切换时,如何做到会话级无感知?首先我们要了解会话中都有哪些内容,哪些内容是需要随角色切换一起迁移的。从而做到用户无感知。
(本文HA指中间件层级的HA,并非APP直连数据库,VIP切换的那种HA。)
简单的switchover过程举例:
等待所有会话的事务结束,会话都处于idle状态,冻结会话,不允许提交任何SQL,然后进行角色切换,并将每个会话的资源状态平移。
会话资源状态
会话中有些什么状态?通过discard这条SQL就可以了解。
https://www.postgresql.org/docs/10/static/sql-discard.html
DISCARD — discard session state
discard all相当于执行如下
SET SESSION AUTHORIZATION DEFAULT;
RESET ALL;
DEALLOCATE ALL;
CLOSE ALL;
UNLISTEN *;
SELECT pg_advisory_unlock_all();
DISCARD PLANS;
DISCARD SEQUENCES;
DISCARD TEMP;
会话资源中目前可能包含如下(每个PG版本可能有些许差异):
SESSOIN角色、参数设置、绑定变量语句、游标、异步消息监听、AD锁、序列、临时表等。
下面介绍一下每种资源的查询方法,以及在新的主库上进行资源复原的方法。
一、SESSION AUTHORIZATION
超级用户可以将会话用户设置为其他用户,普通用户无权切换用户。
当前用户为postgres,设置SESSION AUTHORIZATION为test
postgres=# set SESSION AUTHORIZATION test;
SET
postgres=> show SESSION AUTHORIZATION;
session_authorization
-----------------------
test
(1 row)
postgres=> select usename from pg_stat_activity where pid=pg_backend_pid();
usename
----------
postgres
(1 row)
查询方法
postgres=> show SESSION AUTHORIZATION;
session_authorization
-----------------------
test
(1 row)
postgres=> select usename from pg_stat_activity where pid=pg_backend_pid();
usename
----------
postgres
(1 row)
复原方法
当pg_stat_activity.usename不等于SESSION AUTHORIZATION时,需要通过如下方法复原它。
postgres=# set SESSION AUTHORIZATION test;
SET
二、参数
阅读原文请点击:
http://click.aliyun.com/m/23940/
分享到:
相关推荐
- **资源准备**: 检查目标数据库有足够的磁盘空间和其他资源来支持新的角色。 - **测试环境**: 在生产环境执行Switchover之前,最好在测试环境中进行充分测试,以确保流程的顺畅和可靠性。 - **监控与日志**: 在...
### Oracle数据库维护和点检手册知识点 #### 一、基础巡检 1. **检查数据库基本状况** - 检查Oracle实例状态 - 检查Oracle在线日志状态 - 检查Oracle表空间的状态 - 检查Oracle所有数据文件状态 - 检查无效...
在Oracle 11.2.0.3版本中,ADG进一步强化了Data Guard的功能,允许备用数据库在不影响主数据库运行的情况下进行读取操作,从而提高资源利用率。 首先,搭建Data Guard环境前,你需要确保以下前提条件: 1. 两台独立...
### Oracle ADG 数据库部署、切换、备份与运维详解 #### 一、部署环境与架构概览 在本文档中,我们将详细介绍如何在阿里云ECS服务器上部署Oracle Active Data Guard (ADG) 并实现节点故障自动切换功能。此外,还将...
- 在备用数据库上执行`ALTER DATABASE COMMIT STANDBY SWITCHOVER TO PRIMARY`命令来完成Switchover。 - 这会将原来的备用数据库变为新的主数据库,而原主数据库变为备用数据库。 #### 1.6 DATAGUARD维护 为了...
在RAC环境中,将备数据库纳入CRS管理可以实现集群级别的故障切换和资源管理。 1.6 备数据库归档日志文件删除 为了优化存储,可以设置策略自动删除不再需要的归档日志。 1.7 应用访问备数据库TNS配置 为允许应用...
1. **Switchover** 是一种计划内的角色切换,它允许你在不丢失数据的情况下,将当前主数据库切换到备用数据库,而原备用数据库则成为新的主数据库。以下是一个 Switchover 的基本步骤: - 首先,你需要在主数据库...
- **Switchover**: 是一个计划内的操作,用于临时将备用数据库提升为主数据库,而原主数据库则降级为备用数据库。Switchover主要用于维护工作,例如数据库升级等。 #### 4. 实验环境 根据提供的部分内容,实验环境...
Switchover是Data Guard中的一个重要操作,允许在不影响应用程序可用性的情况下将主数据库的角色切换到备用数据库,而备用数据库则接替成为新的主数据库。以下是对物理Data Guard Switchover切换的详细讲解。 1. ...
数据库应急预案 数据库应急预案是指在数据库出现故障或宕机的情况下,快速恢复数据库的操作步骤和流程。以下是数据库应急预案的详细说明: 一、数据库故障判断 在数据库出现故障时,需要判断故障的原因是数据库...
- 在备用数据库上设置`FAILOVER DATABASE`或`SWITCHOVER DATABASE`,以允许在主数据库故障时接管。 7. **监控和维护**: - 定期检查DataGuard状态,确保redo日志传输正常且备用数据库处于同步状态。 - 使用`...
最后,文档还提到了重新配置Broker,以及测试switchover的操作,以确保逻辑备用数据库在发生故障时能够顺利接管主数据库的角色。 在实施Data Guard时,管理员需要了解并掌握这些概念和操作步骤,以确保数据库的高...
Oracle DataGuard是一种高可用性和灾难恢复解决方案,它通过在远程位置维护一个或多个数据库副本(standby databases)来保护关键业务数据。以下是基于标题“DG搭建步骤”和描述中的内容,详细阐述DataGuard物理...
- **提高性能**: 通过将资源密集型的备份和报表操作转移到备用数据库上,可以显著提高生产数据库的性能。 - **简化管理**: DataGuard 的自动化特性减少了管理工作的复杂度。 - **增强安全性**: 通过分散数据存储,...
在装载的前主数据库上,使用`ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY`命令将其切换回主数据库角色。这个命令将完成备用数据库到主数据库的转换,并可能需要执行一些额外的系统调整,如更新网络配置和...
- Switchover是在计划内改变主备角色,而Failover是由于主数据库故障而进行的紧急角色切换。 9. **Redo Apply和SQL Apply**: - Redo Apply用于物理standby,应用redo日志记录;SQL Apply用于逻辑standby,解析和...