From c7a0a15334e1cf3e9569752c8879990102fb9aee Mon Sep 17 00:00:00 2001
From: Nico Cartron <nicolas@ncartron.org>
Date: Tue, 7 May 2019 15:23:26 +0200
Subject: [PATCH] added LMDB backend info

---
 docs/backends/index.rst |  2 ++
 docs/backends/lmdb.rst  | 73 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+)
 create mode 100644 docs/backends/lmdb.rst

diff --git a/docs/backends/index.rst b/docs/backends/index.rst
index b71c933cd..a4403bccc 100644
--- a/docs/backends/index.rst
+++ b/docs/backends/index.rst
@@ -22,6 +22,8 @@ The following table describes the supported backends and some of their capabilit
 +------------------------------------------------+--------+--------+-------+--------------+-------------+---------------------------------+--------------+
 | :doc:`LDAP <ldap>`                             | Yes    | No     | No    | No           | No          | No                              | ``ldap``     |
 +------------------------------------------------+--------+--------+-------+--------------+-------------+---------------------------------+--------------+
+| :doc:`LMDB <lmdb>`                             | Yes    | Yes    | Yes   | No           | Yes         | Yes                             | ``lmdb``     |
++------------------------------------------------+--------+--------+-------+--------------+-------------+---------------------------------+--------------+
 | :doc:`Lua <lua>`                               | Yes    | Yes    | No    | No           | Yes         | Yes                             | ``lua``      |
 +------------------------------------------------+--------+--------+-------+--------------+-------------+---------------------------------+--------------+
 | :doc:`Lua2 <lua2>`                             | Yes    | Yes    | No    | No           | Yes         | Yes                             | ``lua2``     |
diff --git a/docs/backends/lmdb.rst b/docs/backends/lmdb.rst
new file mode 100644
index 000000000..eec1f7983
--- /dev/null
+++ b/docs/backends/lmdb.rst
@@ -0,0 +1,73 @@
+LMDB backend
+============
+
+* Native: Yes
+* Master: Yes
+* Slave: Yes
+* Superslave: No
+* Case: All lower
+* DNSSEC: Yes 
+* Disabled data: No
+* Comments: No
+* Module name: lmdb
+* Launch name: ``lmdb``
+
+Enabling the backend
+--------------------
+
+When building PowerDNS yourself, append ``lmdb`` to ``--with-modules``
+or ``--with-dynmodules``. It is expected that most pre-built packages
+contain this backend or be separately installable.
+
+
+Settings
+--------
+
+.. _setting-lmdb-filename:
+
+``lmdb-filename``
+^^^^^^^^^^^^^^^^^
+
+Path to the LMDB file (e.g. */var/spool/powerdns/pdns.lmdb*)
+
+.. warning::
+  On systemd systems, 
+  When running PowerDNS via the provided systemd service file,
+  `ProtectSystem <http://www.freedesktop.org/software/systemd/man/systemd.exec.html#ProtectSystem=>`_
+  is set to ``full``, this means PowerDNS is unable to write to e.g.
+  ``/etc`` and ``/home``, possibly being unable to write to the LMDB database.
+
+.. _setting-lmdb-shards:
+
+``lmdb-shards``
+^^^^^^^^^^^^^^^^^
+
+Records database will be split into this number of shards
+e.g. lmdb-shards=64
+
+.. _setting-lmdb-sync-mode:
+
+``lmdb-sync-mode``
+^^^^^^^^^^^^^^^^^
+
+Synchronisation mode: nosync, nometasync, mapasync
+
+* ``parsed successfully at <time>`` or
+
+* ``nosync``: Don't flush systems buffers to disk when committing a transation.
+  This means a system crash can corrupt the database or lose the last
+  transactions if buffers are not yet flushed to disk.
+* ``nometasync``: Flush the data on a commit. Slightly faster  than  doing a
+  full sync, but can potentially lose the last committed transaction if the
+  operating system crashes.
+* ``mapasync``: use asynchronous flushes to disk. As with nosync, a system crash
+  can then corrupt the database or lose the last transactions.
+
+
+LMDB Structure
+--------------
+
+PowerDNS will create the database structure, no need to manually create the
+database schema.
+Also, it is not possible to directly query the LMDB DB, so recommendation is to
+use either the API, or pdnsutil.
-- 
2.40.0