Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8a75e2c

Browse files
kvapkelvich
authored andcommitted
Update the mmts README.
1 parentb7ad327 commit8a75e2c

File tree

1 file changed

+51
-50
lines changed

1 file changed

+51
-50
lines changed

‎README.md

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,54 @@
1-
#Postgres Multimaster
1+
#`mmts`
2+
3+
An implementation of synchronous multi-master replication based on**logical decoding** and**xtm**.
4+
5+
##Usage
6+
7+
1. Install`contrib/raftable` and`contrib/mmts` on each instance.
8+
1. Add these required options to the`postgresql.conf` of each instance in the cluster.
9+
```sh
10+
max_prepared_transactions = 200 # should be > 0, because all
11+
# transactions are implicitly two-phase
12+
max_connections = 200
13+
max_worker_processes = 100 # at least (2 * n + p + 1)
14+
# this figure is calculated as:
15+
# 1 raftable worker
16+
# n-1 receiver
17+
# n-1 sender
18+
# 1 mtm-sender
19+
# 1 mtm-receiver
20+
# p workers in the pool
21+
max_parallel_degree = 0
22+
wal_level = logical # multimaster is build on top of
23+
# logical replication and will not work otherwise
24+
max_wal_senders = 10 # at least the number of nodes
25+
wal_sender_timeout = 0
26+
default_transaction_isolation = 'repeatable read'
27+
max_replication_slots = 10 # at least the number of nodes
28+
shared_preload_libraries = 'raftable,multimaster'
29+
multimaster.workers = 10
30+
multimaster.queue_size = 10485760 # 10mb
31+
multimaster.node_id = 1 # the 1-based index of the node in the cluster
32+
multimaster.conn_strings = 'dbname=... host=....0.0.1 port=... raftport=..., ...'
33+
# comma-separated list of connection strings
34+
multimaster.use_raftable = true
35+
multimaster.heartbeat_recv_timeout = 1000
36+
multimaster.heartbeat_send_timeout = 250
37+
multimaster.ignore_tables_without_pk = true
38+
multimaster.twopc_min_timeout = 2000
39+
```
40+
1. Allow replication in`pg_hba.conf`.
41+
42+
##Status functions
43+
44+
`create extension mmts;` to gain access to these functions:
45+
46+
*`mtm.get_nodes_state()` -- show status of nodes on cluster
47+
*`mtm.get_cluster_state()` -- show whole cluster status
48+
*`mtm.get_cluster_info()` -- print some debug info
49+
*`mtm.make_table_local(relation regclass)` -- stop replication for a given table
250

351
##Testing
452

5-
The testing process involves multiple modules that perform different tasks. The
6-
modules and their APIs are listed below.
7-
8-
###Modules
9-
10-
####`combineaux`
11-
12-
Governs the whole testing process. Runs different workloads during different
13-
troubles.
14-
15-
####`stresseaux`
16-
17-
Puts workloads against the database. Writes logs that are later used by
18-
`valideaux`.
19-
20-
*`start(id, workload, cluster)` - starts a`workload` against the`cluster`
21-
and call it`id`.
22-
*`stop(id)` - stops a previously started workload called`id`.
23-
24-
####`starteaux`
25-
26-
Manages the database nodes.
27-
28-
*`deploy(driver, ...)` - deploys a cluster using the specified`driver` and
29-
other parameters specific to that driver. Returns a`cluster` instance that is
30-
used in other methods.
31-
*`cluster->up(id)` - adds a node named`id` to the`cluster`.
32-
*`cluster->down(id)` - removes a node named`id` from the`cluster`.
33-
*`cluster->drop(src, dst, ratio)` - drop`ratio` packets flowing from node
34-
`src` to node`dst`.
35-
*`cluster->delay(src, dst, msec)` - delay packets flowing from node`src` to
36-
node`dst` by`msec` milliseconds.
37-
38-
####`troubleaux`
39-
40-
This is the troublemaker that messes with the network, nodes and time.
41-
42-
*`cause(cluster, trouble, ...)` - causes the specified`trouble` in the
43-
specified`cluster` with some trouble-specific parameters.
44-
*`fix(cluster)` - fixes all troubles caused in the`cluster`.
45-
46-
####`valideaux`
47-
48-
Validates the logs of stresseaux.
49-
50-
####`reporteaux`
51-
52-
Generates reports on the test results. This is usually a table that with
53-
`trouble` vs`workload` axes.
53+
*`make -C contrib/mmts check` to run TAP-tests.
54+
*`make -C contrib/mmts xcheck` to run blockade tests. The blockade tests require`docker`,`blockade`, and some other packages installed, see[requirements.txt](tests2/requirements.txt) for the list.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp