技术开发 频道

Oracle基于Android编译过程及SQL高可用

  SQL HA的使用语法

  你可以通过BDB SQL层的PRAGMA指令来配置高可用的相关参数并启动集群。以下是相关的语法:

  ①启动和关闭HA:PRAGMA replication=ON|OFF

  该语句必须在BDB SQL创建或重建数据库之前设置。在此之前,应先设置本地节点的地址和端口,以及本地节点是否是master,如果不是,则应设置一个远程节点的地址和端口。当HA初始化之后,可以关闭replication,但是它仅在下一次重开这个环境的时候起效。

  ②设置本地节点是否master:PRAGMA replication_initial_master=ON|OFF

  该语句只能在初次创建一个HA时使用,本地节点是这个新的HA的第一个节点,其master的角色不是无限期的,当master掉线时,master的角色有可能转移到其后进入HA的节点上。

  ③ 设置本地节点的地址和端口:PRAGMA replication_local_site=”hostname:port”

  ④设置远程节点的地址和端口:PRAGMA replication_remote_site=”hostname:port”

  当加入一个已存在的HA时,本地节点需要知道一个在线的远程节点,以帮助其进入HA。

  ⑤ 设置被删除节点的地址和端口:PRAGMA replication_remove_site=”host:port”

  永久地删除HA中的一个节点。与暂时掉线或者被关闭的节点不同,HA的任何一个有效节点都不再记录该节点,即HA中的节点数量减一。

  ⑥ 设置是否输出HA相关日志信息:PRAGMA replication_verbose_output=ON|OFF

  ⑦ 设置HA相关日志信息的输出文件:PRAGMA replication_verbose_file=filename

  如何在BDB SQL的命令行工具中配置和运行一个三个节点的HA

  ①配置首个节点,即master

  // 创建数据库
  dbsql univ.db
  pragma replication_local_site
="localhost:10001";
  
// 指定为该组的master
  pragma replication_initial_master
=ON;
  
// 启动replication
  pragma
replication=ON;

  ② 加入第二个节点

  // 创建数据库,HA里每个节点的数据库名字应相同
  dbsql univ.db
  pragma replication_local_site
="localhost:10002";
  
// 指定一个在线节点
  pragma replication_remote_site
="localhost:10001";
  pragma
replication=ON;

  ③在第一个节点上插入数据

  INSERT INTO university VALUES(2, "Harvard University", "harvard.edu", "us", "North America", 7 , 2, 12, 1);

  ④ 在第二个节点查询数据

  SELECT * FROM university;

  ⑤ 加入第三个节点

  dbsql univ.db
  pragma replication_local_site
="localhost:10003";
  
// 第一个或者第二个节点都可以成为第三个节点的远程节点
  pragma replication_remote_site
="localhost:10002";
  pragma
replication=ON;

  ⑥ 在第三个节点删除第二个节点

  PRAGMA replication_remove_site="localhost:10002";
  
CREATE TABLE university (
  rank
int,
  name
varchar(75),
  domains
varchar(75),
  country
varchar(30),
  region
varchar(30),
  size
int,
  visibility
int,
  rich
int,
  scholar
int
  );

  第二个节点被删除后,将不再获得第一个节点上的数据更新。

  ⑦第三个节点设置不启动replication,并重新启动第三个节点

  PRAGMA replication=OFF;
  .quit
  dbsql univ.db

  关闭之后的所有HA数据更新都不会再应用到第三个节点上,该节点变成单机数据库,可进行读写操作。

0
相关文章