Files
help365/platform/postgresql.html
2025-05-27 21:32:35 +04:00

302 lines
29 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>PostgreSQL</title>
<meta name="generator" content="Help+Manual" />
<meta name="keywords" content="" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The article describes how to: Install PostgreSQL for Ubuntu Linux 20.04. Prepare a PostgreSQL database for restoration. You can also refer to the official PostgreSQL documentati" />
<meta name="picture" content="" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
<meta property="og:url" content="https://brix365.com/en/help" />
<meta property="og:image" content="" />
<link rel="icon" href="favicon.png" type="image/png" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="./jquery-ui.min.css" />
<link rel="stylesheet" href="default.css" />
<link rel="stylesheet" href="./search-yandex.css" />
<link rel="stylesheet" href="./article.css" />
<link rel="stylesheet" href="./glossary.css" />
<link rel="stylesheet" href="./theme.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="helpman_settings.js"></script>
<script type="text/javascript" src="helpman_topicinit.js"></script>
<script type="text/javascript" src="highlight.js"></script>
<script type="text/javascript">
$(document).ready(function(){highlight();});
</script>
</head>
<body>
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
<header class="header elma-365">
<div class="container">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-en.svg" alt="header logo">
</a>
<!-- <div class="hero__search-form" id="search-panel">
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
<label class="search-form__label">
<span id="reset-search" class="search__icon"></span>
<input class="search-form__input" type="text">
</label>
<input class="search-form__submit" type="submit" value="Submit">
</form>
</div> -->
<div class="hero__search-form" id="search-panel"> <form class="search-form"> <label class="search-form__label"> <span id="reset-search" class="search__icon"></span> <input class="search-form__input" type="text"> </label> <input class="search-form__submit" type="submit" value="Submit"> </form> </div>
<div class="hero__search">
<a href="#" id="search-icon" class="hero__search-icon">
<img src="search-icon-white.svg" alt="search string">
</a>
<a href="#" id="side-menu-icon" class="hero__side-icon">
<img src="side_menu.svg" alt="side menu">
</a>
</div>
<div class="header__navi">
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
</div>
</div>
</header>
<main class="main container">
<aside class="sidebar" id="sidebar">
<div class="sidebar__header">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-light-en.svg">
</a>
<span class="sidebar__close elma-365-close" id="close"></span>
</div>
<div class="sidebar__wrapper" id="side-menu">
</div>
</aside>
<article class="article" id="article">
<div class="article-inner">
<div class="content">
<header class="article__header">
<div class="article__bread" style="display:flex; gap:10px;">
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
<div class="topic__breadcrumbs">
<p><a href="elma365-on-premises.html">BRIX On-Premises</a> &gt; <a href="infrastructure-preparation.html">Prepare infrastructure</a> &gt; Databases &gt; Prepare external databases / PostgreSQL</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">PostgreSQL</span></h1>
</div>
</header>
<section class="article__content">
<div class="scroll-top-inner">
<a href="#h1-article" class="scroll-top"></a>
</div>
<!-- Placeholder for topic body. -->
<p class="p_Normal">The article describes how to:</p>
<ul style="list-style-type:disc">
<li class="p_Normal">Install PostgreSQL for Ubuntu Linux 20.04.</li><li class="p_Normal"><a href="postgresql.html#prepare-to-restore" class="topiclink">Prepare a PostgreSQL database for restoration</a>.</li></ul>
<p class="p_Normal">You can also refer to the <a href="https://www.postgresql.org/download/linux/ubuntu/" target="_blank" class="weblink">official PostgreSQL documentation</a> for a brief guide. BRIX requires PostgreSQL version 11-15 for proper operation. &nbsp;</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало&nbsp;внимание&nbsp;</span></p>
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">In this example, the database name is </span><span style="font-size: 15px; font-weight: bold;">elma365</span><span style="font-size: 15px;">, the user is </span><span style="font-size: 15px; font-weight: bold;">elma365</span><span style="font-size: 15px;">, and the password is </span><span style="font-size: 15px; font-weight: bold;">SecretPassword</span><span style="font-size: 15px;">. When configuring, set these data according to the security policy adopted in your organization.</span></p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец&nbsp;внимание</span></p>
<p class="p_Normal">Installation consists of six steps:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal"><a href="postgresql.html#install-postgresql" class="topiclink">Install PostgreSQL</a>.</li><li value="2" class="p_Normal"><a href="postgresql.html#set-up-postgresql" class="topiclink">Configure PostgreSQL</a>.</li><li value="3" class="p_Normal"><a href="pdf-convert.html" class="topiclink">Configure connection to PostgreSQL</a>.</li><li value="4" class="p_Normal"><a href="postgresql.html#set-limits-to-postgresql" class="topiclink">Configure restrictions and limits for PostgreSQL</a>.</li><li value="5" class="p_Normal"><a href="postgresql.html#prepare-pgbouncer" class="topiclink">Prepare PGBouncer (optional)</a>.</li><li value="6" class="p_Normal"><a href="postgresql.html#connect-to-postgresql" class="topiclink">Connect to PostgreSQL</a>.</li></ol>
<h2 class="p_Heading2"><a id="install-postgresql" class="hmanchor"></a><span class="f_Heading2">Step 1: Install PostgreSQL</span></h2>
<p class="p_Normal">To install PostgreSQL, add the official repository:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;sh&nbsp;-c&nbsp;'echo&nbsp;&quot;deb&nbsp;http://apt.postgresql.org/pub/repos/apt&nbsp;$(lsb_release&nbsp;-cs)-pgdg&nbsp;main&quot;&nbsp;&gt;&nbsp;/etc/apt/sources.list.d/pgdg.list'</span><br />
<span class="f_CodeExample">wget&nbsp;--quiet&nbsp;-O&nbsp;-&nbsp;https://www.postgresql.org/media/keys/ACCC4CF8.asc&nbsp;|&nbsp;sudo&nbsp;apt-key&nbsp;add&nbsp;-</span><br />
<span class="f_CodeExample">sudo&nbsp;apt&nbsp;update</span></p>
<p class="p_Normal">Then install PostgreSQL:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt&nbsp;install&nbsp;postgresql-15</span></p>
<h2 class="p_Heading2"><a id="set-up-postgresql" class="hmanchor"></a><span class="f_Heading2">Step 2: Configure PostgreSQL</span></h2>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;примечание</span></p>
<p class="p_Normal"><span style="font-weight: bold;">Note</span></p>
<p class="p_Normal">The password can contain the following characters:</p>
<ul style="list-style-type:disc">
<li class="p_Normal">Uppercase Latin letters: A to Z</li><li class="p_Normal">Lowercase Latin letters: a to z</li><li class="p_Normal">Digits: 0 to 9</li><li class="p_Normal">Symbols: -_</li></ul>
<p class="p_Normal">Reserved (invalid) characters: ! * ' ( ) ; : @ &amp; = + $ , / ? % # [ ]</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;примечание</span></p>
<p class="p_Normal">To configure PostgreSQL, use the following commands:</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Create a separate <span style="font-weight: bold;">elma365</span> user with the <span style="font-weight: bold;">SecretPassword</span> password for working in the database. The username and password are given as an example:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;&quot;CREATE&nbsp;ROLE&nbsp;elma365&nbsp;WITH&nbsp;login&nbsp;password&nbsp;'SecretPassword';&quot;</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal"><a id="create-db" class="hmanchor"></a>Create a separate <span style="font-weight: bold;">elma365</span> database and assign the dedicated user <span style="font-weight: bold;">elma365</span> as its owner. Do not use an existing database, as the system creates tables and schemas:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;&quot;CREATE&nbsp;DATABASE&nbsp;elma365&nbsp;WITH&nbsp;OWNER&nbsp;elma365;&quot;</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Add the necessary extensions for the <span style="font-weight: bold;">elma365</span> database:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-d&nbsp;elma365&nbsp;-c&nbsp;&quot;CREATE&nbsp;EXTENSION&nbsp;\&quot;uuid-ossp\&quot;;&nbsp;CREATE&nbsp;EXTENSION&nbsp;pg_trgm;&quot;</span></p>
<h2 class="p_Heading2"><a id="set-up-connection-to-postgresql" class="hmanchor"></a><span class="f_Heading2">Step 3: Configure connection to PostgreSQL</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Add the IP address of the server where PostgreSQL is running to the configuration file <code><b>/etc/postgresql/15/main/postgresql.conf</b></code> in the parameter <code><b>listen_addresses</b></code>, for example, <code><b>192.168.10.10</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/etc/postgresql/15/main/postgresql.conf</span><br />
<span class="f_CodeExample">listen_addresses&nbsp;=&nbsp;'localhost,&nbsp;192.168.10.10'</span></p>
<p class="p_Normal"><a class="dropdown-toggle" style="font-style: normal; font-weight: normal; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A1')">Configuration of TLS/SSL in PostgreSQL</a></p>
<div id="TOGGLE0186A1" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">To enable TLS/SSL support in PostgreSQL in the configuration file <code><b>postgresql.conf</b></code>, you need to:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Enable SSL support by setting the value <code><b>on</b></code> in the parameter <code><b>ssl</b></code>.</li></ol>
<ol style="list-style-type:decimal" start="2">
<li value="2" class="p_Normal">Specify the path to the root CA file in the parameter <code><b>ssl_ca_file</b></code>.</li></ol>
<ol style="list-style-type:decimal" start="3">
<li value="3" class="p_Normal">Specify the path to the server certificate file in the parameter <code><b>ssl_cert_file</b></code>.</li></ol>
<ol style="list-style-type:decimal" start="4">
<li value="4" class="p_Normal">Specify the path to the private key file in the parameter <code><b>ssl_key_file</b></code>.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">ssl&nbsp;=&nbsp;on</span><br />
<span class="f_CodeExample">ssl_ca_file&nbsp;=&nbsp;'/etc/ssl/certs/CA.pem'</span><br />
<span class="f_CodeExample">ssl_cert_file&nbsp;=&nbsp;'/etc/ssl/certs/ssl-cert.pem'</span><br />
<span class="f_CodeExample">ssl_key_file&nbsp;=&nbsp;'/etc/ssl/private/server.key'</span></p>
<p class="p_Normal">For more details on TLS/SSL configuration in PostgreSQL, refer to the <a href="https://www.postgresql.org/docs/13/ssl-tcp.html" target="_blank" class="weblink">official PostgreSQL documentation</a>.</p>
</td>
</tr>
</table>
</div>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Add the network address of the elma365 nodes to the end of the authentication configuration file <code><b>/etc/postgresql/15/main/pg_hba.conf</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/etc/postgresql/15/main/pg_hba.conf</span><br />
<span class="f_CodeExample">host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.0.0/16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;md5</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Reload the PostgreSQL service:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;postgresql</span></p>
<h2 class="p_Heading2"><a id="set-limits-to-postgresql" class="hmanchor"></a><span class="f_Heading2">Step 4: Configure restrictions and limits for PostgreSQL</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal"> Open the configuration file <code><b>/etc/postgresql/15/main/postgresql.conf</b></code> for editing:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/etc/postgresql/15/main/postgresql.conf</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Increase the maximum number of connections by changing the value of the parameter <code><b>max_connections</b></code> to <code><b>2000</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">max_connections&nbsp;=&nbsp;2000</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Increase the maximum number of locks per transaction by changing the value of the parameter <code><b>max_locks_per_transaction</b></code> to <code><b>512</b></code>. Also, uncomment this line (remove the # sign):</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">max_locks_per_transaction&nbsp;=&nbsp;512</span></p>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_Normal">Reload the PostgreSQL service:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;postgresql</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_CodeExample" style="page-break-inside: avoid;">In&nbsp;some&nbsp;distribution&nbsp;packages&nbsp;of&nbsp;PostgreSQL,&nbsp;the&nbsp;<code><b>standard_conforming_strings</b></code>&nbsp;parameter&nbsp;that&nbsp;interprets&nbsp;backslash&nbsp;symbols&nbsp;is&nbsp;disabled.&nbsp;Check&nbsp;and&nbsp;enable&nbsp;the&nbsp;parameter:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">standard_conforming_strings&nbsp;=&nbsp;on</span></p>
<h2 class="p_Heading2"><a id="prepare-pgbouncer" class="hmanchor"></a><span class="f_Heading2">Step 5: Prepare PGBouncer (optional)</span></h2>
<p class="p_Normal">PGBouncer is designed to manage the connection pool to PostgreSQL and helps minimize the costs associated with establishing new connections to PostgreSQL. PGBouncer, refer to the <a href="pgbouncer-installation.html" class="topiclink">Install PGBouncer</a>.</p>
<h2 class="p_Heading2"><a id="connect-to-postgresql" class="hmanchor"></a><span class="f_Heading2">Step 6: Connect to PostgreSQL</span></h2>
<p class="p_Normal">PostgreSQL connection string:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">postgresql://elma365:SecretPassword@&lt;postgresql-server-address&gt;:5432/elma365?sslmode=disable</span></p>
<p class="p_Normal">PostgreSQL connection string with TLS/SSL:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">postgresql:</span><span class="f_CodeExample">//elma365:SecretPassword@&lt;postgresql-server-address&gt;:5432/elma365?sslmode=require</span></p>
<p class="p_Normal"><a class="dropdown-toggle" style="font-style: normal; font-weight: normal; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A2')">Connection to PostgreSQL via PGBouncer.</a></p>
<div id="TOGGLE0186A2" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">Connection to PostgreSQL via PGBouncer:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">postgresql:</span><span class="f_CodeExample">//elma365:SecretPassword@&lt;postgresql-server-address&gt;:6432/elma365?sslmode=disable</span></p>
<p class="p_Normal">PGBouncer connection string with TLS/SSL:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">postgresql:</span><span class="f_CodeExample">//elma365:SecretPassword@&lt;postgresql-server-address&gt;:6432/elma365?sslmode=require</span></p>
</td>
</tr>
</table>
</div>
<h2 class="p_Heading2"><a id="prepare-to-restore" class="hmanchor"></a><span class="f_Heading2">Prepare a PostgreSQL database for restoration</span></h2>
<p class="p_Normal">If you need to restore a database from backup, first prepare the database for restoration.</p>
<p class="p_Normal">For more details on backup, refer to the following articles:</p>
<ul style="list-style-type:disc">
<li class="p_Normal"><a href="dump_db.html" class="topiclink">External BRIX backup</a>.</li><li class="p_Normal"><a href="database-backup-and-recovery.html" class="topiclink">Backup and recover databases</a>.</li><li class="p_Normal"><a href="backup-restore-elma365standard.html" class="topiclink">Backup and restore databases for BRIX Standard</a>.</li></ul>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">Ensure you have a backup copy of the database you are deleting. Only after that, proceed with deleting the database.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Delete the <span style="font-weight: bold;">elma365</span> database:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">sudo -u postgres psql -c &quot;DROP DATABASE elma365 WITH (FORCE);&quot;</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Create an empty <span style="font-weight: bold;">elma365</span> database to restore the database from backup. To do this, use the commands from <a href="postgresql.html#create-db" class="topiclink">Step 2: Configure PostgreSQL</a>.</li></ol>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">After that, depending on your BRIX On-Premises edition and backup method, perform data restoration:</li></ol>
<ul style="list-style-type:disc">
<li class="p_Normal"><a href="database-backup-and-recovery.html#recovery-database" class="topiclink">Restore a backup copy using the utility</a>.</li><li class="p_Normal"><a href="backup-and-recovery-with-wal-g-and-rclone.html#walg-pgsql" class="topiclink">Restore a backup copy using WAL-G</a>.</li><li class="p_Normal"><a href="dump_db.html#restore" class="topiclink">Restore a backup copy when using external means</a>.</li><li class="p_Normal"><a href="backup-restore-elma365standard.html#restore" class="topiclink">Restore a backup copy in the Standard edition</a>.</li></ul>
<div class="bottom-nav">
<a id="prev-link" class="topic__navi_prev" href="embedded-databases-settings.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">embedded-databases-settings.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="mongodb.html">
<span class="bottom-nav__link">mongodb.html</span> <span
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
</a>
</div>
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
</section>
</div>
<aside class="article__sidebar" style="display:none">
<input type="checkbox" />
<div class="article__arrow"></div>
<div class="table-of-contents elma365-right" id="toc2Content">
<h3 class="h3-toc">In this topic</h3>
<nav id="toc2"></nav>
</div>
</aside>
</div>
</article>
</main>
<footer class="footer">
<div class="footer-container">
<div class="footer-mobile">
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li></ul>
</div>
<div class="footer-wrap">
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
<div class="footer-flex-b">
<span class="footer-copy">&copy; 2025 BRIX</span>
<ul class="footer-list">
<li class="footer-item">
<a href="#" class="arrow-top" style="display: block;"></a>
</li>
</ul>
</div>
</div>
</div>
</footer>
<iframe name="hmnavigation" style="display:none!important"></iframe>
<script src="./jquery-ui.js"></script>
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
<script src="./jquery.tocify.min.js"></script>
<script src="./TypoReporter.min.js"></script>
<script src="./google-search.js"></script>
<script src="./main.js"></script>
<script type="text/javascript">
HMInitToggle('TOGGLE0186A1','hm.type','dropdown','hm.state','0');
HMInitToggle('TOGGLE0186A2','hm.type','dropdown','hm.state','0');
</script>
</body>
</html>