玩过Oracle的同学都知道,手动来一次数据库主备切换,再等应用修改连接数据库的信息后重启,最终等到业务确认OK,怎么也得半个小时吧,要是白天切换还好(呵呵,你觉得老板会同意么?),大晚上呢?困不困?偶尔一次还好,要是业务多,增长快,遇到下面的情况,怎么办? 难道说只有一种结局了么? 天无绝人之路,幸亏有DG Broker,我等DB狗才得以幸免于难,今后我们将分系列,从DG Broker的简单介绍和配置,一直讲到如何在半夜主库挂掉时,也可以安心呼呼睡大觉…… 一、DG Broker简介 DG Broker 是一个分布式管理框架,可将DG系统中的主库和所有备库当做一个整体来实现集中自动化管理DG的创建、维护和监控。 1. DGB 管理模型 主要包括: configuration(所有数据库配置的集合)、database 和instance 2. DGB组件 Client Side:我们使用DGMGRL命令行工具来管理DGB Server Side:DG Monitor包括一组进程(主要是DMON)和配置文件。 Data Guard Monitor (DMON) Process DMON进程与本地数据库和其他数据库的DMON进程进行交互,执行请求。DMON进程还负责监控代理配置的健康和确保每个数据库都和配置保持一致。 配置文件: sys@test> show parameter dg_broker_config_file NAME TYPE VALUE ------------------------------------ dg_broker_config_file1 string home/oracle/app/product/11.2. 0/db_1/dbs/dr1test_std.dat dg_broker_config_file2 string home/oracle/app/product/11.2. 0/db_1/dbs/dr2test_std.dat 二、DG B测试环境 OS:linux Redhat 7 oracle:11.2.0.4 10.10.10.22 主库 DB_UNIQUE_NAME test_pri 10.10.10.21 物理备库 DB_UNIQUE_NAME test_std 10.10.10.30 逻辑备库 DB_UNIQUE_NAME test_his DG broker 配置名称为 test sys密码:123456 三、DGB简单配置 1. 前提条件 1) 主备库必须已经存在(官方文档废话,不存在我怎么切?) 2) DG_BROKER_START参数 所有配置中的数据库的 DG_BROKER_START 参数设置为true。 主库和备库都执行 > alter system set DG_BROKER_START=true; System altered. >show parameter DG_BROKER_START NAME TYPE VALUE ------------------------------------ dg_broker_start boolean TRUE 3) 必须使用server parameter file(SPFILE)文件启动数据库。 因为DGB启动的时候需要从spfile中导入参数值到DGB的配置文件中。 CREATE SPFILE FROM PFILE='pfilename'; 未使用spfile的实例,就重启使用spfile。 启动实例后,设置DG_BROKER_START=TRUE。 查看是否使用spfile > show parameter spfile; NAME TYPE VALUE ------------------------------------ spfile string home/oracle/app/product/11.2. 0/db_1/dbs/spfiletest.ora 或者 > select distinct ISSPECIFIED from v$spparameter; ISSPEC ------ TRUE FALSE 4) 连接串 所有主备库都应配置tnsname.ora中的连接串,保证自己可以tnsping通自己并且任意两个库都可以互通。 2. 创建配置文件、添加物理备库 1) 调用DGMGRL -bash-4.2$ dgmgrl DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> 2) 连接到主库 两种情况: 在10.10.10.22(主库)连接到本地 DGMGRL>CONNECT sys; Password:****** Connected. DGMGRL> CONNECT sys; 默认连接到本地,连接远程加@连接串 例如在10.10.10.22连接到远程备库10.10.10.21 DGMGRL> CONNECT sys@test_std; Password:****** Connected. 3) 创建代理配置文件、添加数据库。 创建代理配置文件,首先定义配置包含主库的概要文件,主备库的概要文件名称的设置和DB_UNIQUE_NAME相同。 主库: > show parameter db_unique_name NAME TYPE VALUE ------------------------------------ db_unique_name string TEST_PRI 备库: > show parameter db_unique_name NAME TYPE VALUE ------------------------------------ db_unique_name string test_std 创建配置文件: DGMGRL>CREATE CONFIGURATION 'test' AS PRIMARY DATABASE IS 'TEST_PRI' CONNECT IDENTIFIER IS TEST_PRI; Configuration "test" created with primary database "TEST_PRI" 4) 查看配置信息 DGMGRL> SHOW CONFIGURATION; Configuration - test Protection Mode: MaxPerformance Databases: TEST_PRI - Primary database Fast-Start Failover: DISABLED Configuration Status: DISABLED 5) 在配置文件中添加备库。 DGMGRL>ADD DATABASE test_std AS CONNECT IDENTIFIER IS test_std; Database "test_std" added DGMGRL> show configuration; Configuration - test Protection Mode: MaxPerformance Databases: TEST_PRI - Primary database test_std - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED 添加历史库(逻辑备库): DGMGRL> ADD DATABASE test_HIS AS CONNECT IDENTIFIER IS test_HIS; Database "test_his" added 这一步请确认可以在主库上以sys用户远程登录到备库。否则报: Error: ORA-01017: invalid username/password; logon denied 添加逻辑备库是和物理备库同样的步骤,DGB会自己识别备库是物理还是逻辑。 3. 启用配置文件和数据库 1) 启用配置中所有数据库,用如下命令: DGMGRL>ENABLE CONFIGURATION; 过程如下: 先查看,状态为disabled DGMGRL> show configuration; Configuration - test Protection Mode: MaxPerformance Databases: TEST_PRI - Primary database test_std - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED 启用: DGMGRL> enable configuration; Enabled. 再确认状态:为success DGMGRL> show configuration; Configuration - test Protection Mode: MaxPerformance Databases: TEST_PRI - Primary database test_std - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 2) 启用数据库 这个步骤不是必须的,除非之前用DISABLE DATABASE禁用过备库。通常,启用配置同样会启用备库。 启用备库: DGMGRL> ENABLE DATABASE test_std; Enabled. 确认: DGMGRL> show database test_std; Database - test_std Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 0 seconds ago) Apply Lag: 0 seconds (computed 0 seconds ago) Apply Rate: 16.00 KByte/s Real Time Query: ON Instance(s): test Database Status: SUCCESS DG Broker 简介与简单配置到此为止,预知切换如何,请看下文分解。 往期精彩文章 __________________________ 网易中间件Cetus开源啦 春节大放送|MGR开篇 连接cetus中间件Hang住怎么办 MySQL5.7 XA事务丢失 GTID真的来了 MySQL统计信息简介 网易北京研发中心DBA招募令 DBA女神讲解区块链原理 网易乐得DBA组负责网易乐得电商、网易邮箱、网易技术部数据库日常运维 负责数据库私有云平台的开发和维护 负责数据库及数据库中间件的开发和测试等 分享最前沿实用数据库干货 关注网易乐得DBA 精深数据库神功 |