Building Highly Available Database Applications with Geronimo and Derby



Similar documents
Building Highly Available Database Applications for Apache Derby

C-JDBC: Flexible Database Clustering Middleware

Database replication for commodity database services

Data Management in the Cloud

RAIDb: Redundant Array of Inexpensive Databases

Bryan Tuft Sr. Sales Consultant Global Embedded Business Unit

JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers

Chapter 10: Scalability

be architected pool of servers reliability and

Learn Oracle WebLogic Server 12c Administration For Middleware Administrators

WEBLOGIC ADMINISTRATION

Winning the J2EE Performance Game Presented to: JAVA User Group-Minnesota

Real-time Data Replication

ORACLE DATABASE 10G ENTERPRISE EDITION

A Comparison of Software Architectures for E-Business Applications

Portable Scale-Out Benchmarks for MySQL. MySQL User Conference 2008 Robert Hodges CTO Continuent, Inc.

Tushar Joshi Turtle Networks Ltd

New method for data replication in distributed heterogeneous database systems

RAIDb: Redundant Array of Inexpensive Databases

Comparing MySQL and Postgres 9.0 Replication

Oracle WebLogic Server 11g Administration

Configuration Management of Massively Scalable Systems

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

<Insert Picture Here> Oracle In-Memory Database Cache Overview

Clustering a Grails Application for Scalability and Availability

Using Tomcat with CA Clarity PPM

WebLogic Server Admin

Configuring Apache Derby for Performance and Durability Olav Sandstå

Tier Architectures. Kathleen Durant CS 3200

Active/Active DB2 Clusters for HA and Scalability

In Memory Accelerator for MongoDB

High Availability Solutions for the MariaDB and MySQL Database

MagDiSoft Web Solutions Office No. 102, Bramha Majestic, NIBM Road Kondhwa, Pune Tel: /

WebLogic Server 11g Administration Handbook

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

Blackboard Learn TM, Release 9 Technology Architecture. John Fontaine

ELIXIR LOAD BALANCER 2

Extreme Java G

Direct NFS - Design considerations for next-gen NAS appliances optimized for database workloads Akshay Shah Gurmeet Goindi Oracle

Postgres Plus Advanced Server

Configuring Apache Derby for Performance and Durability Olav Sandstå

ITG Software Engineering

<Insert Picture Here> Getting Coherence: Introduction to Data Grids South Florida User Group

Module 14: Scalability and High Availability

Conflict-Aware Scheduling for Dynamic Content Applications

Linas Virbalas Continuent, Inc.

Oracle Weblogic. Setup, Configuration, Tuning, and Considerations. Presented by: Michael Hogan Sr. Technical Consultant at Enkitec

Database Replication with MySQL and PostgreSQL

Chapter 18: Database System Architectures. Centralized Systems

Ganymed: Scalable Replication for Transactional Web Applications

WEB11 WebSphere extreme Scale et WebSphere DataPower XC10 Appliance : les solutions de caching élastique WebSphere

Cloud DBMS: An Overview. Shan-Hung Wu, NetDB CS, NTHU Spring, 2015

Solving Large-Scale Database Administration with Tungsten

Chapter 1 - Web Server Management and Cluster Topology

Overview of Databases On MacOS. Karl Kuehn Automation Engineer RethinkDB

ActiveVOS Clustering with JBoss

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

WSO2 Business Process Server Clustering Guide for 3.2.0

Cluster Computing. ! Fault tolerance. ! Stateless. ! Throughput. ! Stateful. ! Response time. Architectures. Stateless vs. Stateful.

Enhancing an Application Server to Support Available Components

Design for Failure High Availability Architectures using AWS

Oracle BI EE Implementation on Netezza. Prepared by SureShot Strategies, Inc.

HP OO 10.X - SiteScope Monitoring Templates

Techniques for Scaling Components of Web Application

High Availability Databases based on Oracle 10g RAC on Linux

Centralized Systems. A Centralized Computer System. Chapter 18: Database System Architectures

Eliminate SQL Server Downtime Even for maintenance

Google File System. Web and scalability

Postgres Plus xdb Replication Server with Multi-Master User s Guide

IBM WebSphere Server Administration

High Availability and Scalability for Online Applications with MySQL

Availability Digest. MySQL Clusters Go Active/Active. December 2006

Preparing for the Big Oops! Disaster Recovery Sites for MySQL. Robert Hodges, CEO, Continuent MySQL Conference 2011

The Future of PostgreSQL High Availability Robert Hodges - Continuent, Inc. Simon Riggs - 2ndQuadrant

JBS-102: Jboss Application Server Administration. Course Length: 4 days

Database Replication: A Survey of Open Source and Commercial Tools

StreamServe Persuasion SP5 StreamStudio

High Availability for Database Systems in Cloud Computing Environments. Ashraf Aboulnaga University of Waterloo

Basic TCP/IP networking knowledge of client/server concepts Basic Linux commands and desktop navigation (if don't know we will cover it )

High Availability Technical Notice

J2EE Applications DEployment : A first Experiment. Abstract

<Insert Picture Here> WebLogic High Availability Infrastructure WebLogic Server 11gR1 Labs

Qualogy M. Schildmeijer. Whitepaper Oracle Exalogic FMW Optimization

Open Source DBMS CUBRID 2008 & Community Activities. Byung Joo Chung bjchung@cubrid.com

Specification and Implementation of Dynamic Web Site Benchmarks. Sameh Elnikety Department of Computer Science Rice University

Clustering Versus Shared Nothing: A Case Study

SQL Server Training Course Content

Kony MobileFabric. Sync Windows Installation Manual - WebSphere. On-Premises. Release 6.5. Document Relevance and Accuracy

Oracle Exam 1z0-599 Oracle WebLogic Server 12c Essentials Version: 6.4 [ Total Questions: 91 ]

Comparing Microsoft SQL Server 2005 Replication and DataXtend Remote Edition for Mobile and Distributed Applications

No.1 IT Online training institute from Hyderabad URL: sriramtechnologies.com

Data Replication and Snapshot Isolation. Example: Cluster Replication

Scalability and Reliability Features of MySQL Connector/J

JBoss AS Administration Console User Guide. by Shelly McGowan and Ian Springer

WebSphere Server Administration Course

Java DB Performance. Olav Sandstå Sun Microsystems, Trondheim, Norway Submission ID: 860

Liferay Portal Performance. Benchmark Study of Liferay Portal Enterprise Edition

This training is targeted at System Administrators and developers wanting to understand more about administering a WebLogic instance.

MID-TIER DEPLOYMENT KB

Dependency Free Distributed Database Caching for Web Applications and Web Services

Transcription:

Building Highly Available Applications with Geronimo and Emmanuel Cecchet Principal architect - Continuent Sequoia is an open source software (Apache v2 License) hosted by Continuent.org. Sequoia is the continuation of the C-JDBC project hosted by the ObjectWeb consortium (http://c-jdbc.objectweb.org). 1

Motivations tier should be scalable highly available without modifying the client application database vendor independent on commodity hardware Internet JDBC JDBC JDBC 2

Single database issue Clients connect to the application server Application server builds web pages with data coming from the database Application server clustering solves application server failure outage causes overall system outage Application servers Internet Disk 3

Disk replication/clustering Eliminates the single point of failure (SPOF) on the disk Disk failure does not cause database outage outage problem still not solved Application servers Internet Disks 4

Master/slave replication Lazy replication at the disk or database level No scalability Data lost at failure time System outage during failover to slave Failover can take several hours Application servers Master Disks log shipping hot standby Internet Slave 5

Scaling the database tier Master-slave replication Cons failover time/data loss on master failure read inconsistencies scalability Web frontend App. server Master Internet MySQL replication uses a master/slave replication scheme. Writes must be directed to the master node and updates are lazily replicated to slave nodes. 6

Scaling the database tier Atomic broadcast Cons atomic broadcast scalability no client side load balancing heavy modifications of the database engine Internet Atomic broadcast Queries are sent atomically in the same total order to all replicas. Optimizations may include executing the write query at one node and propagate only the modified rows to the other nodes. This requires heavy modifications of the database engine and makes locking management very tedious. 7

Scaling the database tier SMP Cons Cost Scalability limit Web frontend App. server Internet Well-known database vendor here Well-known hardware + database vendors here This is the most common solution in commercial setups: large SMP machine and prohibitive DB license costs 8

clustering with shared disk Multiple database instances share the same disk Disk can be replicated to prevent SPOF on disk No dynamic load balancing failure not transparent to users (partial outage) Failed instance leaves incorrect data in the disks Manual failover + manual cleanup needed Application servers s Disks Internet 9

Sequoia competitive advantages High availability with fully transparent failover Scalability with dynamic load balancing Commodity hardware No modification to existing client application vendor independent Heterogeneity support Platform independent 10

Outline RAIDb Sequoia Geronimo/Sequoia/ Scalability High availability 11

RAIDb concept Redundant Array of Inexpensive s RAIDb controller gives the view of a single database to the client balance the load on the database backends RAIDb levels offers various tradeoff of performance and fault tolerance RAIDb is to databases what RAID is to disks. 12

RAIDb levels RAIDb-0 partitioning no duplication and no fault tolerance at least 2 nodes SQL requests RAIDb controller table 1 table 2 & 3 table... table n-1 table n 13

RAIDb levels RAIDb-1 mirroring performance bounded by write broadcast at least 2 nodes SQL requests RAIDb controller Full DB Full DB Full DB Full DB Full DB 14

RAIDb levels RAIDb-2 partial replication at least 2 copies of each table for fault tolerance at least 3 nodes SQL requests RAIDb controller Full DB table x table y table x & y table z 15

RAIDb levels composition RAIDb-1-0 no limit to the composition deepness RAIDb-0 controller SQL requests RAIDb-1 controller RAIDb-0 controller table w table x & y table z table w table y table x & z RAIDb-0 controller table w table x table y table z 16

Outline RAIDb Sequoia Geronimo/Sequoia/ Scalability High availability 17

Sequoia overview Middleware implementing RAIDb 100% Java implementation open source (Apache v2 License) Two components generic JDBC (Sequoia ) Sequoia Controller Read-one, Write all approach provides eager (strong) consistency Supports heterogeneous databases 18

Sequoia architectural overview Sequoia JDBC Driver JVM Sequoia controller JVM Sequoia can be seen as a JDBC proxy between the application and the database native. 19

Sequoia vs C-JDBC License Bug tracking Hosting Write scalability C-JDBC LGPL GForge ObjectWeb Single threaded Sequoia APL v2 JIRA Continuent.org Multi threaded Group communication Tribe/JGroups Hedera/JGroups C/C++ support Mgt console - Text Carob Text + Oak Eclipse plugin Sequoia is the continuation of the C-JDBC project (http://c-jdbc.objectweb.org). This slide shows the main differences between Sequoia and C-JDBC. 20

Inside the Sequoia Controller Client application (Servlet, EJB,...) Sequoia Client application (Servlet, EJB,...) Sequoia Client application (Servlet, EJB,...) Sequoia Sequoia Controller Virtual database 1 Virtual database 2 HTTP RMI... JMX administration console Configuration Monitoring JMX Server Authentication Recovery Log Request Scheduler Query result cache Load balancer Authentication Recovery Log Request Scheduler Query result cache Load balancer dumps management Checkpointing service DB2 JDBC DB2 JDBC DB2 JDBC MS SQL JDBC Oracle JDBC DB2 DB2 DB2 MS SQL Oracle The Sequoia controller is a Java application. It can be co-located with the or the database or run on a separate machine. 21

Virtual Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer Gives the view of a single database Establishes the mapping between the database name used by the application and the backend specific settings s can be added and removed dynamically s can be transferred between controllers configured using an XML configuration file DB2 JDBC DB2 JDBC DB2 JDBC DB2 DB2 DB2 22

Authentication Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer Matches real login/password used by the application with backend specific login/ password Administrator login to manage the virtual database DB2 JDBC DB2 JDBC DB2 JDBC DB2 DB2 DB2 23

Scheduler Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer Manages concurrency control Assigns unique id to requests and transactions Ensure serializable transactional order Relies on database (row-level) locking DB2 JDBC DB2 JDBC DB2 JDBC DB2 DB2 DB2 24

Request cache DB2 JDBC Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer DB2 JDBC DB2 JDBC 3 optional caches tunable sizes parsing cache parse request skeleton only once INSERT INTO t VALUES (?,?,?) metadata cache column metadata fields of a request result cache caches results from SQL requests tunable consistency fine grain invalidations optimizations for findbypk requests DB2 DB2 DB2 25

Result cache Cache contains a list of SQL ResultSet Policy defined by querypattern Policy 3 policies EagerCaching: variable granularities for invalidations RelaxedCaching: invalidations based on timeout NoCaching: never cached RUBiS bidding mix No cache Coherent Relaxed with 450 clients cache cache Throughput (rq/min) 3892 4184 4215 Avg response time 801 ms 284 ms 134 ms CPU load 100% 85% 20% C-JDBC CPU load - 15% 7% Eager caching accepts database, table, column and column unique granularities. Basically, every request is parsed and C-JDBC checks which tables or rows are needed to compute the result. When a write queries is executed, it invalidates all results that required the data that has been invalidated. The finer grain invalidation requires more extensive parsing (more cpu) but have better hit ratio. Relaxed caching can further enhance the cache performance by relaxing the consistency of queries that can accept a given staleness (for example a page whose content is only refreshed every minute). 26

Load balancer 1/2 DB2 JDBC Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer DB2 JDBC DB2 JDBC RAIDb-0 query directed to the backend having the needed tables RAIDb-1 read executed by current thread write executed in parallel by a dedicated thread per backend result returned if one, majority or all commit if one node fails but others succeed, failing node is disabled RAIDb-2 same as RAIDb-1 except that writes are sent only to nodes owning the updated table DB2 DB2 DB2 RAIDb-0 is for partitioning (tables distributed on the different backends). RAIDb-1 is for full mirroring. RAIDb-2 is for partial replication. 27

Load balancer 2/2 Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer Static load balancing policies Round-Robin (RR) Weighted Round-Robin (WRR) Least Pending Requests First (LPRF) request sent to the node that has the shortest pending request queue efficient even if backends do not have homogeneous performance DB2 JDBC DB2 JDBC DB2 JDBC DB2 DB2 DB2 28

DB2 JDBC Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer DB2 JDBC DB2 JDBC Sequoia JDBC provides transparent connection pooling pooling for a backend no pooling blocking pool non-blocking pool dynamic pool pools defined on a per login basis resource management per login dedicated connections for admin DB2 DB2 DB2 29

Recovery Log Java client program (Servlet, EJB,...) Sequoia Virtual database Authentication Recovery Log Request Scheduler Request Cache Load balancer Checkpoints are associated with database dumps Record all updates and transaction markers since a checkpoint Used to resynchronize a database from a checkpoint Store log information in a database Can be re-injected in a Sequoia cluster for fault tolerance DB2 JDBC DB2 JDBC DB2 JDBC DB2 DB2 DB2 30

Functional overview establishment Read request Write request Failure handling Recovery Summary 31

establishment Sequoia JDBC URL jdbc:sequoia://controller1[:port1],controller2[:port2]/vdbname Driver connection to a controller according to a policy defined in the URL (random, round-robin, ordered, ) Controller connections to a physical database use a connection pool defined per backend All queries on a connection go to the same controller but controller load balance queries on the underlying backends 32

Sequoia read request connect execute SELECT login, connect password * mydb FROM t Client application Client application ordering (Servlet, EJB,...) (Servlet, EJB,...) Sequoia Sequoia Sequoia Controller update Virtual database 1 (if available) cache RR, WRR, Authentication exec get from connection LPRF, pool Request Scheduler Recovery Query result cache Log Load balancer JDBC JDBC JDBC The connection is first authentified by the authentication manager. Then SELECT requests are scheduled, checked again the cache (a cache hit immediately returns) and then given to the load balancer that chooses a backend to execute the query. Upon completion, the cache is updated and the result is returned to the client. 33

Write request Query broadcast using total order between controllers s execute query in parallel (possibly asynchronously) Automatically disable backends that fail if others succeed Update recovery log (transactional log) asynchronously Non-conflicting transactions execute in parallel table-based locking used as a hint for detecting conflicts conflicting queries execute in a single-threaded queue stored procedures execute one at a time 34

Controller replication Client application (Servlet, EJB,...) p/cluster Client application (Servlet, EJB,...) p/cluster Client application (Servlet, EJB,...) p/cluster jdbc:sequoia://node1,node2/mydb Total order reliable multicast p/cluster Controller Distributed Request Virtual database 1 Authentication p/cluster Controller Distributed Request Virtual database 2 Authentication Request Request Recovery HSQLDB Recovery Log Scheduler Query result cache Load balancer Scheduler Query result cache Load balancer Recovery Log Recovery HSQLDB PostgreSQL JDBC PostgreSQL JDBC PostgreSQL JDBC PostgreSQL JDBC Postgre SQL Postgre SQL Postgre SQL Postgre SQL The distributed request manager wraps the regular (centralized) virtual database by sending queries in the same total order at all controllers. Queries are then execute locally as if we were in a centralized case. Upon completion, an acknowledgement message is sent to the initiator of the request. 35

Sequoia failure handling (1/2) Failure of a connection to a controller transparently reconnected to another controller (according to user defined policy) failure inside a transaction restores the transactional context upon reconnection backend failure backend removed from load balancer (no noticeable failover time) failure during read: retry on another backend failure during write: ignored if successful on other backends 36

Sequoia failure handling (2/2) controller failure database backends attached to dead controller are lost clients are transparently reconnected to another controller (according to user defined policy) failure during read: transparently retried (even within a transaction) failure during write: exception thrown to the application telling that the write might have been executed but we cannot be sure 37

Node failure with Sequoia execute INSERT INTO t Client application (Servlet, EJB,...) C-JDBC Client application (Servlet, EJB,...) C-JDBC No 2 phase-commit parallel transactions failed nodes are automatically disabled C-JDBC Controller Virtual database 1 Authentication Recovery Log Request Scheduler Query result cache Load balancer JDBC JDBC JDBC If a node fails to execute an update query but other backends succeed, the failing backend is automatically disabled. 38

Outline RAIDb Sequoia Geronimo/Sequoia/ Scalability High availability 39

Highly available web site Apache clustering L4 switch, RR-DNS, One-IP techniques, LVS, Tomcat clustering mod_jk (T4), mod_proxy/mod_rewrite (T5), session replication clustering C-JDBC RR-DNS Internet mod-jk Parsing cache Result cache Metadata cache embedded Even with a single database backend, C-JDBC can significantly improve performance with its various caches that prevent requests from going to the database. This is well-suite for ecommerce applications that have read-mostly workloads. 40

Result cache Cache contains a list of SQL ResultSet Policy defined by querypattern Policy 3 policies EagerCaching: variable granularities for invalidations RelaxedCaching: invalidations based on timeout NoCaching: never cached RUBiS bidding mix No cache Coherent Relaxed with 450 clients cache cache Throughput (rq/min) 3892 4184 4215 Avg response time 801 ms 284 ms 134 ms CPU load 100% 85% 20% C-JDBC CPU load - 15% 7% Eager caching accepts database, table, column and column unique granularities. Basically, every request is parsed and C-JDBC checks which tables or rows are needed to compute the result. When a write queries is executed, it invalidates all results that required the data that has been invalidated. The finer grain invalidation requires more extensive parsing (more cpu) but have better hit ratio. Relaxed caching can further enhance the cache performance by relaxing the consistency of queries that can accept a given staleness (for example a page whose content is only refreshed every minute). 41

Highly available web applications choosing RAIDb level recovery log for adding nodes dynamically recovering from failures Internet Sequoia 42

<connector <resourceadapter> <dependency> configid="my" sequoia/jars/sequoia-.jar Geronimo <name>postgresqldatasource</name> xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector" <uri>sequoia/jars/sequoia sequoia/jars/sequoia-.jar parentid="org/apache/geronimo/server">.jar</uri> </dependency> version="1.5" configuration Copy sequoia-.jar in setting><config-property-setting org.continuent.sequoia..driver</config-property-setting> name="password"> name="driver"> name="username"> dbpw</config-property-setting> dbuser</config-property- </connector> jdbc:sequoia://c1,c2/mydb</config-property-setting> </resourceadapter> <config-property-setting name="url"> 43

Configuring Sequoia with Network server Virtual database configuration file <Virtual name="mydb"> <Distribution> <MessageTimeouts/> </Distribution> < name= derby1 = org.apache.derby.jdbc.clientdriver url= jdbc:derby:net://localhost:1527/xpetstore;create=tru e;retrievemessagesfromserverongetmessage=true; connectionteststatement="values 1"> < /> 44

Configuring Sequoia Clustering with (1/2) <Request> <RequestScheduler> <RAIDb-1Scheduler level= passthrough"/> </RequestScheduler> <RequestCache> <MetadataCache/> <ParsingCache/> <ResultCache granularity="table" /> </RequestCache> <LoadBalancer> <RAIDb-1> <RAIDb-1-LeastPendingRequestFirst/> </RAIDb-1> </LoadBalancer> RAIDb-1 scheduler and load balancer ensures proper database replication. 45

Configuring Sequoia Clustering with (2/2) <RecoveryLog> <JDBCRecoveryLog ="org.apache.derby.jdbc.clientdriver url="jdbc:derby:net://localhost:1529/xpetstore; create=true;retrievemessagesfromserverongetmessage=true;" login="app" password="app"> <RecoveryLogTable tablename="recovery" idcolumntype="bigint NOT NULL" sqlcolumnname="sqlstmt sqlcolumntype="varchar(8192) NOT NULL extrastatementdefinition=",primary KEY (id)"/> <CheckpointTable tablename="checkpoint"/> <Table tablename="backendtable"/> <DumpTable tablename= DUMPTABLE /> </JDBCRecoveryLog> </RecoveryLog> </Request> </Virtual> Note that it is also possible to use an embedded for the recovery log. 46

Outline RAIDb C-JDBC Geronimo/Sequoia/ Scalability High availability 47

Sequoia vertical scalability allows nested RAIDb levels allows tree architecture for scalable write broadcast necessary with large number of backends Sequoia re-injected in Sequoia controller 48

Advanced Configurations Vertical Scalability Mixed Horizontal and Vertical Scalability Client program Sequoia JVM Client program Sequoia JVM Client program Sequoia JVM Client program Sequoia JVM Client program Sequoia JVM Client program Sequoia JVM Sequoia controller Partial replication Sequoia Sequoia controller Full replication DB native Sequoia JDBC Sequoia controller Full replication Sequoia Sequoia controller Full replication DB native JDBC Sequoia controller Full replication DB native JDBC Sequoia controller Full replication DB native JDBC DB 1 DB 2 Sequoia controller Full replication DB native Sequoia JDBC DB 1 DB 2 DB 3 DB 4 DB 5 DB 6 DB7 DB 3 DB 4 Sequoia controller Full replication DB native JDBC DB 5 DB 6 DB 7 49

TPC-W benchmark (Amazon.com) Nearly linear speedups with the shopping mix Throughput in requests per minute 1600 1400 1200 1000 800 600 400 200 0 0 2 4 6 Number of nodes Single Full replication Partial replication TPC-W is a database benchmark that models an online bookstore like amazon.com. More information can be found at http://www.tpc.org 50

Outline RAIDb C-JDBC Geronimo/Sequoia/ Scalability High availability 51

Building initial checkpoint Dump initial database using any tools (tar, zip, ) Initial checkpoint inserted in RecoveryLog EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM disabled dump for initial checkpoint C-JDBC Controller Recovery Log JDBC disabled 52

Logging is enabled All database updates are logged (SQL statement, user, transaction, ) JDBC Recovery Log dump for initial checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM C-JDBC Controller Recovery Log JDBC enabled enabled 53

Adding new backends 1/3 Add new backends while system online Restore dump corresponding to initial checkpoint JDBC Recovery Log dump for initial checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC disabled enabled disabled 54

Adding new backends 2/3 Replay updates from the log EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled JDBC Recovery Log dump for initial checkpoint C-JDBC Controller Recovery Log JDBC disabled enabled disabled 55

Adding new backends 3/3 Enable backends when done EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled JDBC Recovery Log dump for initial checkpoint C-JDBC Controller Recovery Log JDBC enabled enabled enabled 56

Making new checkpoints (1/3) Disable one backend to have a coherent snapshot Mark the new checkpoint entry in the log Dump with tar/zip dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for last checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC disabled enabled enabled 57

Making new checkpoints (2/3) Replay missing updates from log EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for for last checkpoint C-JDBC Controller Recovery Log JDBC disabled enabled enabled 58

Making new checkpoints (3/3) Re-enable backend when done dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for for last checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC enabled enabled enabled 59

Handling failures A node fails! Automatically disabled but administrator fix needed dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for for last checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC disabled enabled enabled 60

Recovery 1/3 Restore latest dump EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for last checkpoint C-JDBC Controller Recovery Log JDBC disabled enabled enabled 61

Recovery 2/3 Replay missing updates from log dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for for last checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC disabled enabled enabled 62

Recovery 3/3 Re-enable backend when done dump for initial checkpoint... JDBC Recovery Log dump for dump last checkpoint for for last checkpoint EJB Container JOnAS, WebLogic, JBoss, WebSphere,... C-JDBC JVM enabled C-JDBC Controller Recovery Log JDBC enabled enabled enabled 63

Current limitations Distributed joins Out parameters for stored procedures Some JDBC 3.0 extensions XA support through XAPool only network partition/reconciliation not supported 64

Conclusion RAIDb RAID-like scheme for databases Sequoia open source middleware for database replication performance scalability high availability Geronimo/Sequoia/ End-to-end open source highly available web applications 65

Q&A Thanks to all users and contributors... http://sequoia.continuent.org 66