mirror of
https://github.com/berkeleydb/je.git
synced 2024-11-15 01:46:24 +00:00
288 lines
13 KiB
HTML
288 lines
13 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Upgrading a JE Replication Group</title>
|
||
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
||
<link rel="start" href="index.html" title="Getting Started with Berkeley DB, Java Edition High Availability Applications" />
|
||
<link rel="up" href="administration.html" title="Chapter 7. Administration" />
|
||
<link rel="prev" href="addremovenodes.html" title="Adding and Removing Nodes" />
|
||
<link rel="next" href="groupreset.html" title="Resetting a Replication Group" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 12.2.7.5</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">Upgrading a JE Replication Group</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="addremovenodes.html">Prev</a> </td>
|
||
<th width="60%" align="center">Chapter 7. Administration</th>
|
||
<td width="20%" align="right"> <a accesskey="n" href="groupreset.html">Next</a></td>
|
||
</tr>
|
||
</table>
|
||
<hr />
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title" style="clear: both"><a id="hotupgrade"></a>Upgrading a JE Replication Group</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="toc">
|
||
<dl>
|
||
<dt>
|
||
<span class="sect2">
|
||
<a href="hotupgrade.html#idp1912848">Upgrade Process</a>
|
||
</span>
|
||
</dt>
|
||
<dt>
|
||
<span class="sect2">
|
||
<a href="hotupgrade.html#idp1949392">Things To Remember While Upgrading</a>
|
||
</span>
|
||
</dt>
|
||
<dt>
|
||
<span class="sect2">
|
||
<a href="hotupgrade.html#idp1959392">Handling Problems While Upgrading</a>
|
||
</span>
|
||
</dt>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
After deploying a BDB JE HA application, you may later want to
|
||
upgrade to a new version. Berkeley DB JE supports hot upgrade of a
|
||
replication group, by allowing mixed version operation. That is,
|
||
replication nodes running the newer software version can
|
||
inter-operate with older version nodes and both can be available for
|
||
user operations. However, in some cases, there are certain
|
||
constraints to performing such a hot upgrade.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h3 class="title"><a id="idp1912848"></a>Upgrade Process</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Each release of Berkeley DB JE is tied to a given log file
|
||
on-disk format. Log file formats do not necessarily change
|
||
every release. The Change Log for each release specifies
|
||
whether the log file format has changed or not. There are
|
||
no restrictions on upgrades across releases that use the
|
||
same log file format. For best performance and to take
|
||
advantage of bug fixes, ensure all nodes in a replication
|
||
group run with the same BDB JE version during normal
|
||
operations. Occasionally, a new release of Berkeley DB JE
|
||
includes a log file format change. The constraints that
|
||
apply to upgrades which introduce new log file formats are
|
||
explained in this section.
|
||
</p>
|
||
<p>
|
||
In a replication group, the Master transmits log records that
|
||
must be read by the replicas. If a group is operating with
|
||
mixed version nodes, the Master must be running a version of
|
||
JE that is older than, equal to, or (by default) no more
|
||
than one version greater than the replicas. This is required
|
||
so that the Master can supply the replicas with a version of
|
||
the replication stream that they can understand.
|
||
</p>
|
||
<p>
|
||
Note that some releases may support online upgrades with
|
||
replicas running versions that are more than one log file
|
||
format version different from each other. But any such
|
||
additional flexibility will be called out in the release
|
||
notes.
|
||
</p>
|
||
<p>
|
||
To support the versioning requirement, make sure to upgrade
|
||
all nodes to the version with the next log file format before
|
||
upgrading any nodes to a still later log file format. If you
|
||
cannot meet this restriction, then a hot upgrade should be
|
||
performed. Instead, all nodes in the replication group should
|
||
be taken offline and upgraded before any are restarted.
|
||
</p>
|
||
<p>
|
||
The recommended steps for upgrading Berkeley DB JE HA when
|
||
log file formats have changed are as follows:
|
||
</p>
|
||
<div class="orderedlist">
|
||
<ol type="1">
|
||
<li>
|
||
<p>
|
||
Determine if the upgrade skips any log file format
|
||
versions. If it has, and it is not possible to
|
||
upgrade to the intermediate versions, then plan to
|
||
perform an offline upgrade.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Bring all Replicas up to date with the Master. That
|
||
is, all Replicas must have the same environment
|
||
content as the Master. You can ascertain this by
|
||
using the <a class="ulink" href="../java/com/sleepycat/je/rep/util/DbGroupAdmin.html#dumpGroup()(com.sleepycat.je.rep.util.DbGroupAdmin)" target="_top">DbGroupAdmin.dumpGroup()</a> utility, or
|
||
programmatically using the
|
||
<a class="ulink" href="../java/com/sleepycat/je/ReplicaConsistencyPolicy.html" target="_top">ReplicaConsistencyPolicy</a>.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Perform the following upgrade procedures on each of
|
||
the environments that are part of the replication
|
||
group.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul type="disc">
|
||
<li>
|
||
<p>
|
||
Shut down the old version of the application.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Install the new BDB JE jar file.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Restart the application.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Upgrade each individual data node, both Replicas and
|
||
the Master, and restart them to join the replication
|
||
group.
|
||
</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h3 class="title"><a id="idp1949392"></a>Things To Remember While Upgrading</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
During a hot replication upgrade:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul type="disc">
|
||
<li>
|
||
<p>
|
||
Upgrading BDB JE 4.0 directly to BDB JE 5 and higher
|
||
versions is prohibited. Upgrade BDB JE 4.0 to BDB JE
|
||
4.1 first, and then upgrade BDB JE 4.1 to higher
|
||
versions. There is no constraint if you upgrade from
|
||
BDB JE 4.1 or later versions to a higher BDB JE
|
||
version.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h3 class="title"><a id="idp1959392"></a>Handling Problems While Upgrading</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
There are exceptions that you may run into during the upgrade
|
||
process. The following exceptions may be thrown when a
|
||
replication group node is restarted during the upgrade, and a
|
||
ReplicatedEnvironment object is instantiated:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul type="disc">
|
||
<li>
|
||
<p>
|
||
<a class="ulink" href="../java/com/sleepycat/je/rep/RollbackException.html" target="_top">RollbackException</a>
|
||
</p>
|
||
<p>
|
||
This exception can be thrown by a Replica when its log
|
||
is ahead of the current Master and the Replica is
|
||
unable to rollback without a recovery. As a
|
||
consequence, one or more of the most recently committed
|
||
transactions may need to be rolled back, before the
|
||
Replica can synchronize its state with that of the
|
||
current Master. This exception can also be thrown if
|
||
the current Master crashes. To solve this exception
|
||
restart the ReplicatedEnvironment with the new JE
|
||
version.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
<a class="ulink" href="../java/com/sleepycat/je/rep/RollbackProhibitedException.html" target="_top">RollbackProhibitedException</a>
|
||
</p>
|
||
<p>
|
||
During synchronization, a Replica that has a newer log,
|
||
may have to roll back a number of committed
|
||
tranactions. If the number of rolled back transactions
|
||
exceeds the limit defined by <a class="ulink" href="../java/com/sleepycat/je/rep/ReplicationConfig.html#TXN_ROLLBACK_LIMIT" target="_top">TXN_ROLLBACK_LIMIT</a>, the
|
||
Replica throws a RollbackProhibitedException. To solve
|
||
this exception you may have to truncate logs manually
|
||
by using DbTruncateLog and restart the
|
||
ReplicatedEnvironment with the new JE version.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
<a class="ulink" href="../java/com/sleepycat/je/EnvironmentFailureException.html" target="_top">EnvironmentFailureException</a>
|
||
</p>
|
||
<p>
|
||
EnvironmentFailureException is thrown due to log
|
||
version incompatibility between the Master and the
|
||
Replica. This exception is thrown with the message:
|
||
</p>
|
||
<p>
|
||
"Incompatible log versions. Feeder log version: xxxx,
|
||
Feeder JE version: xxxx, Replica log version: xxxx,
|
||
Replica JE version: xxxx".
|
||
</p>
|
||
<p>
|
||
To solve this exception restart the
|
||
ReplicatedEnvironment with the new JE version.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr />
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"><a accesskey="p" href="addremovenodes.html">Prev</a> </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="u" href="administration.html">Up</a>
|
||
</td>
|
||
<td width="40%" align="right"> <a accesskey="n" href="groupreset.html">Next</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left" valign="top">Adding and Removing Nodes </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> Resetting a Replication Group</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|