如何实现Oracle数据库的读写分离

发表于:2015-9-08 09:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:southdom    来源:51Testing软件测试网采编

  在MySQL作为应用系统的后台数据库时,我们常常见到这样的架构,一拖二、一拖三等等。这是用MySQL的读写分离技术,实现数据的写入和读取分别在不同的库上,提升了数据库服务能力。
  同样,在Oracle作为后台数据库的架构中,我们也可以这么做。实现的方式有很多种。
  有基于RAC架构的,使用其中某个节点作为读库;
  有基于Streams数据复制技术的,实时将数据复制到另外一个库供读取;
  有使用第三方数据复制软件的,如Golden Gate(已经被Oracle收入囊中)、DSG的,也是实时复制数据到另外一个库中。
  还有使用Logical standby技术,实时复制数据到一个库,且该库是对应用而言是只读的。
  我们这里介绍最后一个方法,利用dataguard技术中的logical standby实现Oracle数据库的读写分离。
  一、创建物理standby
  配置主库(也就是主要执行写操作的数据库)的初始化参数
  *.log_archive_config='dg_config=(webdb,webdg)'
  *.log_archive_dest_2='service=webdb_standby lgwr sync affirm  valid_for=(online_logfiles,primary_role) db_unique_name=webdg'
  *.log_archive_dest_state_2='enable'
  修改主库的tnsnames.ora文件
  在tnsnames.ora文件中增加一个条目,名称为webdb_standby。这个就是log_archive_dest_2中service的名称。这里的主库版本是10g,所以使用LGWR进程将日志传输到备用节点上,而在11g中使用的进程将是LNS。
WEBDB_STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.65.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = webdb)
)
)
WEBDB_READER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.65.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = webreader)
)
)
  配置备用库(读库)的初始化参数
  *.db_unique_name='webdg'
  *.fal_client='webdb_standby'
  *.fal_server='webdb_primary'
  *.log_archive_config='dg_config=(webdb,webdg)'
  *.log_archive_dest_1='location=+VG2 valid_for=(all_logfiles,all_roles) db_unique_name=webdg'
  修改备用库的tnsnames.ora文件
WEBDB_PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.65.4)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = webdb)
)
)
WEBDB_STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.65.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = webdb)
)
)
  在tnsnames.ora文件中增加两个条目,名称为webdb_standby和webdb_primary,分别是fal_client和fal-_server参数对应的值,用于检测归档日志gap。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号