lncfg: add postgres
This commit is contained in:
4 files changed
+151
-1
No files matched your search
@@ -0,0 +1,31 @@
|
||||
# Postgres support in LND
|
||||
|
||||
With the introduction of the `kvdb` interface, LND can support multiple database
|
||||
backends. One of the supported backends is Postgres. This document
|
||||
describes how it can be configured.
|
||||
|
||||
## Building LND with postgres support
|
||||
|
||||
To build LND with postgres support, include the following build tag:
|
||||
|
||||
```shell
|
||||
⛰ make tags="kvdb_postgres"
|
||||
```
|
||||
|
||||
## Configuring Postgres for LND
|
||||
|
||||
In order for LND to run on Postgres, an empty database should already exist. A
|
||||
database can be created via the usual ways (psql, pgadmin, etc). A user with
|
||||
access to this database is also required.
|
||||
|
||||
Creation of a schema and the tables is handled by LND automatically.
|
||||
|
||||
## Configuring LND for Postgres
|
||||
|
||||
LND is configured for Postgres through the following configuration options:
|
||||
|
||||
* `db.backend=postgres` to select the Postgres backend.
|
||||
* `db.postgres.dsn=...` to set the database connection string that includes
|
||||
database, user and password.
|
||||
* `db.postgres.timeout=...` to set the connection timeout. If not set, no
|
||||
timeout applies.
|
||||
@@ -38,6 +38,27 @@ instantaneous. Read the [guide on leader
|
||||
election](https://github.com/lightningnetwork/lnd/blob/master/docs/leader_election.md)
|
||||
for more information.
|
||||
|
||||
### Postgres database support
|
||||
|
||||
This release adds [support for Postgres as a database
|
||||
backend](https://github.com/lightningnetwork/lnd/pull/5366) to lnd. Postgres
|
||||
has several advantages over the default bbolt backend:
|
||||
* Better handling of large data sets.
|
||||
* On-the-fly database compaction (auto vacuum).
|
||||
* Database replication.
|
||||
* Inspect data while lnd is running (bbolt opens the database exclusively).
|
||||
* Usage of industry-standard tools to manage the stored data, get performance
|
||||
metrics, etc.
|
||||
|
||||
Furthermore, the SQL platform opens up possibilities to improve lnd's
|
||||
performance in the future. Bbolt's single-writer model is a severe performance
|
||||
bottleneck, whereas Postgres offers a variety of locking models. Additionally,
|
||||
structured tables reduce the need for custom serialization/deserialization code
|
||||
in `lnd`, saving developer time and limiting the potential for bugs.
|
||||
|
||||
Instructions for enabling Postgres can be found in
|
||||
[docs/postgres.md](../postgres.md).
|
||||
|
||||
## Protocol Extensions
|
||||
|
||||
### Explicit Channel Negotiation
|
||||
|
||||
Reference in new issue
Block a user