This commit is contained in:
273
platform/dump_db.html
Normal file
273
platform/dump_db.html
Normal file
@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>External BRIX backup</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="BRIX backup must be done for: PostgreSQL. The database stores main system data: users, app items, settings of apps and workspaces, processes, pages, widgets, tasks, events and..." />
|
||||
<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> > <a href="elma365-enterprise.html">BRIX On-Premises Enterprise</a> / External BRIX backup</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">External BRIX backup</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">BRIX backup must be done for:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal">PostgreSQL. The database stores main system data: users, app items, settings of apps and workspaces, processes, pages, widgets, tasks, events and other configuration settings.</li><li class="p_Normal">MongoDB. The database stores unstructured system settings, data from chats and activity stream.</li><li class="p_Normal">S3 Object Storage. It stores the uploaded files as well as files created in BRIX of any type and size, such as documents, photos, audio and video files.</li></ul>
|
||||
<p class="p_Normal">To access the database inside a cluster, forward the port of corresponding services:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl port-forward postgres-0 5432:5432 --address 0.0.0.0</span><br />
|
||||
<span class="f_CodeExample">kubectl port-forward mongo-0 27017:27017 --address 0.0.0.0</span><br />
|
||||
<span class="f_CodeExample">kubectl port-forward minio-<name-pod> 9000:9000 --address 0.0.0.0</span></p>
|
||||
<p class="p_Normal">To obtain information about connection strings for databases, run the following command. For the command to be executed, you need to install the <span style="font-weight: bold;">jq</span> package.</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal">To install BRIX with a Helm package to an existing Kubernetes cluster:</li></ul>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl get secrets/BRIX-db-connections -o json | jq '.data | map_values(@base64d)'</span></p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal">To install BRIX to Kubernetes-in-Docker:</li></ul>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">docker exec BRIX kubectl get secrets/BRIX-db-connections -o json | jq '.data | map_values(@base64d)'</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Backup</span></h2>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">PostgreSQL backup</span></h3>
|
||||
<p class="p_Normal">There are several ways to create backup copies of PostgreSQL databases.</p>
|
||||
<p class="p_Normal"><span style="font-weight: bold;">Option 1: Physical backup copy</span></p>
|
||||
<p class="p_Normal">The <span style="font-weight: bold;">pg_basebackup</span> utility helps make a backup copy of database files. It can be used for point-in-time recovery (PITR) which guarantees that data is copied from tables continuously. The copies are created for the entire cluster, individual databases cannot be backed up.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало внимание</span></p>
|
||||
<p class="p_Normal"><span style="font-size: 15px;">The backup copy is created over a regular </span><span style="font-size: 15px;">PostgreSQL</span><span style="font-size: 15px;"> connection that uses the replication protocol. The connection must be made by a user with </span><span style="font-size: 15px; font-family: 'Courier New',Courier,monospace;">REPLICATION</span><span style="font-size: 15px;"> permissions or by a superuser</span>.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец внимание</span></p>
|
||||
<p class="p_Normal">Use the following command to create a complete backup copy:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">pg_basebackup -h <postgresql-server-address> -p 5432 -U postgres -D /backup/<backup-postgresql-folder-name> -Ft -z -Xs -P</span></p>
|
||||
<p class="p_Normal">To run <span style="font-weight: bold;">pg_basebackup</span> from a remote server (for example, from 192.168.1.10), set it up to accept the connection. For that, add the following line to the <code><b>pg_hba.conf</b></code> file: </p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">host replication all 192.168.1.10/32 md5</span></p>
|
||||
<p class="p_Normal">After making changes in the <code><b>pg_hba.conf</b></code><span style="font-weight: bold;"> </span>file, restart PostgreSQL to apply them.</p>
|
||||
<p class="p_Normal">For continious archiving of <span style="font-size: 15px;">PostgreSQL</span>, enable WAL. To do that, configure the following parameters in the<span style="font-weight: bold;"> </span><code><b>/etc/postgresql/10/main/postgresql.conf</b></code> configuration file:</p>
|
||||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">wal_level</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">replica</span><br />
|
||||
<span class="f_CodeExample">archive_mode</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">on</span><br />
|
||||
<span class="f_CodeExample">archive_command</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">'test ! -f /backup/<backup-postgresql-folder-name>/postgresql_archives/%f && cp %p /backup/<backup-postgresql-folder-name>/postgresql_archives/%f'</span><br />
|
||||
<span class="f_CodeExample">archive_timeout</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">300</span></p>
|
||||
<p class="p_Normal">In the same file, configure the value of the <code><b>data_directory</b></code><span style="font-weight: bold;"> </span>parameter if it is not defined. If it is not configured, the backup module will not be able to determine the locations of database files, for example, for PostgreSQL 10:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">data_directory = '/var/lib/postgresql/10/main' </span></p>
|
||||
<p class="p_Normal">After making the changes, run the following command to restart PostgreSQL:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">service postgresql restart</span></p>
|
||||
<p class="p_Normal">The value of the <code><b>archive_command</b></code> parameter must contain the catalog in the PostgreSQL server to which WAL records will be archived.</p>
|
||||
<p class="p_Normal"><span style="font-weight: bold;">Option 2: Logical copy</span></p>
|
||||
<p class="p_Normal">The <span style="font-weight: bold;">pg_dump </span>utilty dumps a single database, and does not include information about roles and tablespaces. When <span style="font-weight: bold;">pg_dump</span> is running, the only operations locked are those requiring exclusive locks. This means that any changes made to the database during the dump will not be added to the output archive file.</p>
|
||||
<p class="p_Normal">To create a backup copy, run the following command:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">pg_dump <postgresqlURL> -C -c --if-exists -F directory -f /backup/<backup-postgresql-folder-name></span></p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">MongoDB backup </span></h3>
|
||||
<p class="p_Normal">The <span style="font-weight: bold;">mongodump</span> utility is a basic tool for logical backups. It is included in MongoDB and creates a binary export of a database's contents or a collection.</p>
|
||||
<p class="p_Normal">To create a backup copy, run the following command:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mongodump --uri <mongodbURL> --gzip --quiet --out /backup/<backup-mongodb-folder-name></span></p>
|
||||
<p class="p_Normal">Enable <code><b>--oplog</b></code> for backing up replica sets. The output data will contain the <code><b>oplog.bson</b></code> file with the <code><b>oplog</b></code><span style="font-weight: bold;"> </span>entries with data that occur during the <code><b>mongodump</b></code> operation<span style="color: #001e2b; background-color: #ffffff;">. </span></p>
|
||||
<p class="p_Normal">The <code><b>oplog.bson</b></code> file is created as part of the <code><b>mongodump</b></code> output and <span style="color: #001e2b; background-color: #ffffff;">provides an effective point-in-time snapshot of the state of the </span><code><b>mongodb</b></code><span style="color: #001e2b; background-color: #ffffff;"> instance</span>. This option <span style="color: #001e2b; background-color: #ffffff;">only works for nodes that maintain an </span><code><b>oplog</b></code><span style="color: #001e2b; background-color: #ffffff;">, this includes all members of a replica set.</span></p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">S3 backup</span></h3>
|
||||
<p class="p_Normal">Files can be copied with any utility that is connected to S3, for example, <span style="font-weight: bold;">mc</span>.</p>
|
||||
<p class="p_Normal">Add host to <span style="font-weight: bold;">mc</span> configurations:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mc alias set <alias> <s3-endpoint> <access-key> <secret-key> --api <api-signature></span></p>
|
||||
<p class="p_Normal">Sync the bucket contents with the file system catalog.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mc mirror <alias>/<bucket> /backup/<backup-s3-folder-name></span></p>
|
||||
<h3 class="p_Heading3"><a id="restore" class="hmanchor"></a><span class="f_Heading3">Recovery</span></h3>
|
||||
<p class="p_Normal">Before recovering databases, you have to stop all the application services completely, for example, with the following commands</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl scale deploy --replicas=0 --all -l 'app notin (minio)' [--</span><span class="f_CodeExample" style="font-weight: bold;">namespace </span><span class="f_CodeExample"><BRIX-</span><span class="f_CodeExample" style="font-weight: bold;">namespace</span><span class="f_CodeExample">>]</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl [--</span><span class="f_CodeExample" style="font-weight: bold;">namespace </span><span class="f_CodeExample"><BRIX-</span><span class="f_CodeExample" style="font-weight: bold;">namespace</span><span class="f_CodeExample">>] patch daemonset billing -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'</span></p>
|
||||
<p class="p_Normal">Recreate PostgreSQL and MongoDB databases. To learn more, see <a href="postgresql.html#prepare-to-restore" class="topiclink">PostgreSQL</a> and <a href="mongodb.html#prepare-to-restore" class="topiclink">MongoDB</a>.</p>
|
||||
<p style="line-height: 1.20; margin: 16px 0 16px 0;"><span style="font-size: 15px; color: #394149;">Then recover the databases.</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">PostgreSQL recovery</span></h2>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Recover PostgreSQL physical copy</span></h3>
|
||||
<p class="p_Normal">To recover a backup copy created via <span style="font-weight: bold;">pg_basebackup, </span>or to run it in a new location, all you have to do is stop the PostgreSQL server, unpack, and replace the contents of its database directory with the backup copy and the WAL archive. For example, for PostgreSQL version 10 : </p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">systemctl stop postgresql</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.old</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mkdir /var/lib/postgresql/10/main</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">tar xvf /backup/<backup-postgresql-folder-name>/base.tar.gz -C /var/lib/postgresql/10/main</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">tar xvf /backup/<backup-postgresql-folder-name>/pg_wal.tar.gz -C /var/lib/postgresql/10/main/pg_wal</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">chown -R postgres:postgres /var/lib/postgresql </span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">chmod -R go-rwx /var/lib/postgresql/</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">systemctl start postgresql</span></p>
|
||||
<p class="p_Normal">To restore the PostgreSQL cluster to the state it was in at a certain point in time, stop the PostgreSQL server, restore the latest complete backup copy, mount the WAL archive files to the file system and create the <code><b>/var/lib/postgresql/10/main/recovery.conf</b></code> file with the following contents:</p>
|
||||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">restore_command</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">'cp /backup/<backup-postgresql-folder-name>/postgresql_archives/%f%p'</span><br />
|
||||
<span class="f_CodeExample">recovery_target_time</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">'2022-02-08 11:20:00 UTC'</span><br />
|
||||
<span class="f_CodeExample">recovery_target_inclusive</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample">=</span><span class="f_CodeExample" style="color: #ffffff;"> </span><span class="f_CodeExample" style="font-weight: bold;">false</span></p>
|
||||
<p class="p_Normal">Restart the PostgreSQL server. When restarting, it will call the <code><b>restore_command</b></code> script multiple times to get the WAL files for restoring the database at a certain stopping point.</p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Recover PostgreSQL logical copy</span></h3>
|
||||
<p class="p_Normal">The <span style="font-weight: bold;">pg_restore</span> utility restores the backup created with <span style="font-weight: bold;">pg_dump</span>.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">pg_restore -d <postgresqlURL> -j 1 -F directory /backup/<backup-postgresql-folder-name></span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Recover MongoDB</span></h2>
|
||||
<p class="p_Normal">To recover the database, use the <span style="font-weight: bold;">mongorestore </span>utility. Recovery is done as follows:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mongorestore --uri <mongodbURL> --dir /backup/<backup-mongodb-folder-name> --drop --gzip --preserveUUID --excludeCollection=head.settings.view</span></p>
|
||||
<p class="p_Normal">To reciver the database up to a certain point in time, use <code><b>oplogs</b></code>. Copy only the the <code><b>oplog.bson</b></code><span style="font-weight: bold;"> </span>file that you obtained earlier to the recovery catalog using the following command:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mongodump --oplog</span></p>
|
||||
<p class="p_Normal">Run <span style="font-weight: bold;">mongorestore</span> with the <code><b>--oplogReplay</b></code> parameter<span style="font-weight: bold;"> </span>(make sure that the folder only contains <code><b>oplog.bson</b></code>)</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mongorestore --uri <mongodbURL> --oplogReplay --dir /backup/<backup-mongodb-olplog-folder-name></span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Recover S3</span></h2>
|
||||
<p class="p_Normal">Database can be recovered with any utility that is connected to S3, for example, <span style="font-weight: bold;">mc</span>.</p>
|
||||
<p class="p_Normal">Add host to the <span style="font-weight: bold;">mc</span> configuration:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mc alias set <alias> <s3-endpoint> <access-key> <secret-key> --api <api-signature></span></p>
|
||||
<p class="p_Normal">Sync the bucket contents with the file system catalog.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">mc mirror /backup/<backup-s3-folder-name> <alias>/<bucket></span></p>
|
||||
<p class="p_Normal">After the backup copy has been restored, restart all the application services using the following commands:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl scale deploy --replicas=1 --all [--namespace <BRIX-namespace>]</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl [--namespace <BRIX-namespace>] patch daemonset billing --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'</span></p>
|
||||
<p class="p_Normal"> </p>
|
||||
|
||||
<div class="bottom-nav">
|
||||
|
||||
<a id="prev-link" class="topic__navi_prev" href="backup-and-recovery-with-wal-g-and-rclone.html">
|
||||
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
|
||||
class="bottom-nav__link">backup-and-recovery-with-wal-g-and-rclone.html</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a id="next-link" class="topic__navi_next" href="embedded-to-external-database-enterprise.html">
|
||||
<span class="bottom-nav__link">embedded-to-external-database-enterprise.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">© 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>
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user