File: rep_ex.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 158,360 kB
  • sloc: ansic: 448,411; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (236 lines) | stat: -rw-r--r-- 9,868 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<?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>Ex_rep: a replication example</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="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="rep.html" title="Chapter 12.  Berkeley DB Replication" />
    <link rel="prev" href="rep_faq.html" title="Replication FAQ" />
    <link rel="next" href="rep_ex_comm.html" title="Ex_rep_base: a TCP/IP based communication infrastructure" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Ex_rep: a replication example</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="rep_faq.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 12. 
		Berkeley DB Replication
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="rep_ex_comm.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="rep_ex"></a>Ex_rep: a replication example</h2>
          </div>
        </div>
      </div>
      <p>Ex_rep, found in the <code class="filename">examples_c/ex_rep</code> subdirectory
of the Berkeley DB distribution, is a simple but complete demonstration of a
replicated application.  The application is a mock stock ticker.  The
master accepts a stock symbol and a numerical value as input, and
stores this information into a replicated database; either master or
clients can display the contents of the database, given an empty input
line.</p>
      <p>There are two versions of the application: ex_rep_mgr uses Replication
Manager, while ex_rep_base uses the replication Base API.  This is
intended to demonstrate that, while the basic function of the
application is the same in either case, the replication support
infrastructure differs markedly.</p>
      <p>The communication infrastructure demonstrated with ex_rep_base has the
same dependencies on system networking and threading support as does
the Replication Manager (see the <a class="xref" href="rep.html#rep_intro" title="Replication introduction">Replication introduction</a>).  The Makefile created by the standard UNIX
configuration will build the ex_rep examples on most platforms.  Enter
"make ex_rep_mgr" and/or "make ex_rep_base" to build them.</p>
      <p>The synopsis for both programs is as follows:</p>
      <code class="literal">ex_rep_xxx <span class="bold"><strong>-h home</strong></span> <span class="bold"><strong>-l host:port</strong></span> [<span class="bold"><strong>-MC</strong></span>] [<span class="bold"><strong>-r host:port</strong></span>] [<span class="bold"><strong>-R host:port</strong></span>] [<span class="bold"><strong>-a all|quorum</strong></span>] [<span class="bold"><strong>-b</strong></span>] [<span class="bold"><strong>-n sites</strong></span>] [<span class="bold"><strong>-p priority</strong></span>] [<span class="bold"><strong>-v</strong></span>]</code>
      <p>
    where "ex_rep_xxx" is either "ex_rep_mgr" or "ex_rep_base". The only
    difference is that:
</p>
      <div class="itemizedlist">
        <ul type="disc">
          <li>
            <p>
            specifying <span class="bold"><strong>-M</strong></span> or 
            <span class="bold"><strong>-C</strong></span> is optional for ex_rep_mgr,
            but one of these options must be specified for ex_rep_base.
        </p>
          </li>
          <li>
            <p>
            The <span class="bold"><strong>-n</strong></span> option is not supported
            supported by ex_rep_mgr. That option specifies the number of
            nodes in the replication group. When you use the Replication
            Manager, this number is automatically determined for you.
        </p>
          </li>
        </ul>
      </div>
      <p>
    The options apply to either version of the program except where noted.
    They are as follows:
</p>
      <div class="variablelist">
        <dl>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-h</strong>
              </span>
            </span>
          </dt>
          <dd>Specify a home directory for the database environment.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-l</strong>
              </span>
            </span>
          </dt>
          <dd>Listen on local host "host" at port "port" for incoming connections.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-M</strong>
              </span>
            </span>
          </dt>
          <dd>Configure this process as a master.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-C</strong>
              </span>
            </span>
          </dt>
          <dd>Configure this process as a client.</dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-r</strong>
              </span>
            </span>
          </dt>
          <dd>
            Identifies the helper site used for joining the group.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-R</strong>
              </span>
            </span>
          </dt>
          <dd>
            Identifies a remote peer to be used for joining the group. This
            peer is used for syncing purposes.  See
            <a class="xref" href="rep_mastersync.html#rep_c2c_sync" title="Client-to-client synchronization">Client-to-client synchronization</a>
            for more information.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-a</strong>
              </span>
            </span>
          </dt>
          <dd>
            Specify repmgr acknowledgement policy of all or quorum.  See
            <a href="../api_reference/C/repmgrset_ack_policy.html" class="olink">DB_ENV-&gt;repmgr_set_ack_policy()</a> for more information (ex_rep_mgr
            only.)
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-b</strong>
              </span>
            </span>
          </dt>
          <dd>
            Indicates that bulk transfer should be used.  See <a class="xref" href="rep_bulk.html" title="Bulk transfer">Bulk transfer</a> for more
            information.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-n</strong>
              </span>
            </span>
          </dt>
          <dd>
            Specify the total number of sites in the replication group
            (ex_rep_base only).
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-p</strong>
              </span>
            </span>
          </dt>
          <dd>Set the
            election priority.  See 
            <a class="xref" href="rep_elect.html" title="Elections">Elections</a> for more
            information.
        </dd>
          <dt>
            <span class="term">
              <span class="bold">
                <strong>-v</strong>
              </span>
            </span>
          </dt>
          <dd>Indicates that additional informational and debugging output should be enabled.</dd>
        </dl>
      </div>
      <p>A typical ex_rep_mgr session begins with a command such as the
following, to start a master:</p>
      <pre class="programlisting">ex_rep_mgr -M -p 100 -h DIR1 -l localhost:30100</pre>
      <p>and several clients:</p>
      <pre class="programlisting">ex_rep_mgr -C  -p 50 -h DIR2 -l localhost:30101 -r localhost:30100
ex_rep_mgr -C -p 10 -h DIR3 -l localhost:30102 -r localhost:30100
ex_rep_mgr -C -p 0 -h DIR4 -l localhost:30103 -r localhost:30100</pre>
      <p>
    In this example, the client with home directory DIR4 can never become a
    master (its priority is 0). Both of the other clients can become
    masters, but the one with home directory DIR2 is preferred. Priorities
    are assigned by the application and should reflect the desirability of
    having particular clients take over as master in the case that the
    master fails.
</p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="rep_faq.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="rep.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="rep_ex_comm.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Replication FAQ </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Ex_rep_base: a TCP/IP based communication infrastructure</td>
        </tr>
      </table>
    </div>
  </body>
</html>