{"id":341464,"date":"2022-11-19T15:00:09","date_gmt":"2022-11-19T15:00:09","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=341464"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=341464","title":{"rendered":"<span>PostgreSQL. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0439 \u0442\u043e, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439 \u044d\u0442\u043e, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439 \u043d\u0435 \u0431\u043e\u044f\u0441\u044c<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e2b\/4e4\/1ab\/e2b4e41ab5d9b69ffae46b8468560310.png\" width=\"772\" height=\"482\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e2b\/4e4\/1ab\/e2b4e41ab5d9b69ffae46b8468560310.png\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h3>\n<p>\u042f \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0414\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0441 \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435\u043c \u0436\u0434\u0430\u043b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435 &#8212; Database Lab Engine. \u041d\u043e \u0432\u0440\u0435\u043c\u044f \u0448\u043b\u043e, \u0441\u0442\u0430\u0442\u0435\u0439 \u0432\u0441\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c. \u0422\u0440\u0443\u0434\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u043d\u0438\u0435,\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u043c. \u0418 \u043c\u043e\u0451 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e \u043a \u043a\u043e\u043d\u0446\u0443. \u0422\u0430\u043a \u0447\u0442\u043e \u0441\u0445\u0432\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043f\u043e\u043a\u0440\u0435\u043f\u0447\u0435 \u0437\u0430 \u0440\u0443\u0447\u043a\u0438 \u043a\u0440\u0435\u0441\u0435\u043b, \u0447\u0442\u043e\u0431\u044b\u00a0\u0432\u0430\u0441 \u043d\u0435 \u0443\u043d\u0435\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0441\u0430\u043a\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u043c\u0435\u0442\u0430\u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0443\u044e, \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<\/p>\n<h3>\u0412\u0432\u043e\u0434\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p><a href=\"https:\/\/github.com\/postgres-ai\/database-lab-engine\" rel=\"noopener noreferrer nofollow\">Database Lab Engine<\/a> (\u0434\u0430\u043b\u0435\u0435 DLE) &#8212; \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0411\u0414 (\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u0442\u0435\u0441\u0442\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0442.\u0434.). \u041e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u041a\u0442\u043e-\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439 \u0411\u0414 \u0441 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041e. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043b\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e\u043c \u043a \u043d\u0435\u043c\u0443. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 DLE \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0411\u0414 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0414\u0430\u043b\u0435\u0435 \u0440\u0435\u0447\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e &#171;\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c&#187; \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b DLE + \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 WAL-G. DLE \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043f\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u043b\u043e\u0432 ZFS \u0434\u043b\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043c\u043a\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0430\u0445 <a href=\"https:\/\/postgres.ai\/docs\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<\/blockquote>\n<ol>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/wal-g\/wal-g\" rel=\"noopener noreferrer nofollow\">WAL-G<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/pgbackrest.org\/\" rel=\"noopener noreferrer nofollow\">PGBACKREST<\/a> <\/p>\n<ul>\n<li>\n<p>\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 ZFS \u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043f\u0443\u043b ZFS.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 DLE \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a S3, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0438 \u0442\u043e\u0447\u043a\u0430 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f ZFS \u043f\u0443\u043b\u0430. <\/p>\n<blockquote>\n<p>\u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 S3 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043f\u043e\u0434 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c, \u0430 \u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435<\/p>\n<\/blockquote>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 DLE, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 ZFS \u043f\u0443\u043b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044f WAL-\u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0438\u0437 S3. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f hot-standby \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL. \u041d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u043e\u0442 &#171;\u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445&#187; (\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441 PostgreSQL) &#171;\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c&#187; \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u044d\u0442\u0430\u043b\u043e\u043d&#187;.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 (\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 DLE) \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u043c\u043e\u043a (snaphot \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 ZFS). \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0441\u043d\u0438\u043c\u043a\u0435 \u0441\u0432\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f <code>.sql<\/code> \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u0441\u043d\u0438\u043c\u043a\u0443. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 &#8212; \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0442\u0430\u043a \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c &#171;\u043a\u043b\u043e\u043d\u044b&#187; &#8212; \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b PostgreSQL. \u0412\u0441\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u0434\u043e\u043b\u0433\u0430\u044f&#187; \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043d\u0438\u043c\u043a\u0430, \u0430 \u043a\u043b\u043e\u043d (\u0442\u043e\u0436\u0435 snapshot ZFS) \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u041a\u043b\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u0430 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u041d\u043e \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u043e\u043d\u0435 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u0421\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e ZFS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c CoW (Copy-On-Write), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u0436\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u043e\u043d\u044b &#171;\u0442\u043e\u043d\u043a\u0438\u043c\u0438&#187;<\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043a\u0440\u0435\u043f\u0438\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e:<br \/> <em>\u0421\u043d\u0438\u043c\u043e\u043a<\/em> &#8212; \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 PostgreSQL, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\/\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0442.\u043f.. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u043b\u043e\u043d\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0411\u0414 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 PostgreSQL, \u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u043d\u0438\u043c\u043a\u0430<\/p>\n<p><em>\u041a\u043b\u043e\u043d<\/em> &#8212; \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u043d\u0438\u043c\u043a\u0430. \u041a\u043b\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430. \u041d\u043e \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u043e\u043d\u0435, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 &#171;\u0440\u0430\u0437\u043c\u0435\u0440&#187; \u043a\u043b\u043e\u043d\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043d\u0438\u043c\u043a\u043e\u0432, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0440\u0435\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u043e\u043d\u043e\u0432 (\u0447\u0438\u0442\u0430\u0439: \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 PostgreSQL), \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u044e\u0431\u044b\u0445 \u043d\u0430\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. \u041b\u044e\u0431\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043a\u043b\u043e\u043d\u043e\u0432 \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u043e\u043d\u044b. \u0420\u0430\u0441\u043f\u043b\u0430\u0442\u043e\u0439 \u0437\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 DLE. \u0422\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e ZFS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0436\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0432 3-5 \u0440\u0430\u0437), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041d\u043e \u0434\u0438\u0441\u043a\u0438 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSD, \u0442.\u043a. \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u043e\u043d\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u044f\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 HDD \u0432 \u043a\u043e\u043c\u0443.<\/p>\n<h3>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u0445\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0435\u043d\u0434, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>MinIO &#8212; S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 <a href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/9.5\/wal-intro\" rel=\"noopener noreferrer nofollow\">WAL<\/a><\/p>\n<\/li>\n<li>\n<p>PostgreSQL &#8212; \u0421\u0423\u0411\u0414<\/p>\n<\/li>\n<li>\n<p>Keycloak &#8212; Identity Provider (IdP). \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<\/li>\n<li>\n<p>DLE &#8212; \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u043d\u043a\u0438\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>DLE GUI &#8212; \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 OIDC \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/p>\n<\/li>\n<\/ol>\n<p>DLE \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 CLI \u0438 API, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0421 \u0432\u0435\u0440\u0441\u0438\u0438 2.5 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f GUI \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. GUI \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u043c SaaS \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u043b\u043e\u043d\u0430\u043c\u0438. \u041d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043e \u043b\u0438\u0431\u043e \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b CI, \u043b\u0438\u0431\u043e \u043d\u0430 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442.\u043a. \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443, \u0438\u043c\u0435\u044e\u0449\u0435\u043c\u0443 \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u043d\u0435\u0442. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445, \u0433\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, AD, LDAP \u0438 \u0442.\u043f.) \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a DLE. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u0442\u0435\u043d\u0434\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IdP Keycloak, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e OIDC, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044e\u044e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 DLE GUI, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e OIDC, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u043a\u043b\u043e\u043d\u0430\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e DLE GUI \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/gitlab.com\/ssi444\/dle-gui\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0411\u0414 \u0438 WAL \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MinIO. \u0412 MinIO \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u043e\u0440\u0437\u0438\u043d\u0430 (bucket) \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 2 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0423\u0417):<\/p>\n<ol>\n<li>\n<p>postgres-backup-rw &#8212; \u0423\u0417 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 &#171;\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c&#187;, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>postgres-backup-ro &#8212; \u0423\u0417 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 &#171;\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435&#187;, \u0434\u043b\u044f DLE<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f MinIO, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0440\u043e\u043b\u0438.<\/p>\n<\/blockquote>\n<p>\u0412 Keycloak \u0431\u0443\u0434\u0435\u0442 5 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0440\u043e\u043b\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 DLE:<\/p>\n<ol>\n<li>\n<p>dg-admin &#8212; \u0440\u043e\u043b\u044c &#171;\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440&#187;<\/p>\n<\/li>\n<li>\n<p>dg-operator &#8212; \u0440\u043e\u043b\u044c &#171;\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440&#187;<\/p>\n<\/li>\n<li>\n<p>dg-user1 &#8212; \u0440\u043e\u043b\u044c &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<li>\n<p>dg-user2 &#8212; \u0440\u043e\u043b\u044c &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<li>\n<p>dg-viewer &#8212; \u0440\u043e\u043b\u044c &#171;\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0430\u0440\u043e\u043b\u044c \u0423\u0417 \u0432 Keycloak \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439:<\/p>\n<ol>\n<li>\n<p>\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 (admin)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<\/ul>\n<ol start=\"2\">\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (operator)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<ol start=\"3\">\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (user)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<ol start=\"4\">\n<li>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c (viewer)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043c\u0438\u043c\u043e \u0440\u043e\u043b\u0438 &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;, \u0440\u043e\u043b\u044c &#171;\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c&#187;, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430 (\u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u043e\u043d\u0430 \u0441 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0438\u043c\u0435\u043d\u0435\u043c\/\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043a\u043b\u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d).<\/p>\n<blockquote>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Keycloak, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0433\u0440\u0443\u043f\u043f\u044b.<\/p>\n<\/blockquote>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0442\u0435\u043d\u0434\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0411\u0414 \u043e\u0442 PostgresPRO &#8212; <a href=\"https:\/\/postgrespro.ru\/education\/demodb\" rel=\"noopener noreferrer nofollow\">https:\/\/postgrespro.ru\/education\/demodb<\/a><\/p>\n<p>\u042f \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 Macbook Pro M1, \u0438\u043c\u0435\u044e\u0449\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 <code>arm64<\/code>, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432 Docker Desktop \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <code>rshared<\/code>, \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0442.\u043a. \u043e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0431\u043e\u0440\u043e\u043a \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 <code>amd64<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 <code>amd64<\/code>, \u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043e \u0447\u0451\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u043c\u0430\u0440\u043a\u0430.<\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c ZFS 2.x, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c. \u041d\u0430 Ubuntu 20.04 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 0.8.4 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 OpenZFS \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"https:\/\/openzfs.github.io\/openzfs-docs\/Developer%20Resources\/Building%20ZFS.html\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u0423 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u044f\u0434\u0440\u043e 5.8.0-63 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u043d\u0435\u0441\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u0435\u0440\u0441\u0438\u044f OpenZFS \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f<\/p>\n<pre><code class=\"bash\">sudo apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-generic python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging git libcurl4-openssl-dev git clone https:\/\/github.com\/openzfs\/zfs cd .\/zfs git checkout master sh autogen.sh .\/configure .\/configure --with-linux=\/usr\/src\/linux-headers-5.8.0-63-generic --with-linux-obj=\/usr\/src\/linux-headers-5.8.0-63-generic make -s -j$(nproc) deb sudo dpkg -i kmod-zfs-5.8.0-63-generic_2.1.99-1566_amd64.deb libzfs5_2.1.99-1566_amd64.deb libzpool5_2.1.99-1566_amd64.deb zfs_2.1.99-1566_amd64.deb echo \"search extra updates ubuntu built-in\" | sudo tee \/etc\/depmod.d\/ubuntu.conf sudo ldconfig; sudo depmod; sudo modprobe zfs zfs version<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430<\/p>\n<pre><code class=\"bash\">git clone https:\/\/gitlab.com\/ssi444\/dblab-article.git cd dblab-article<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c<\/p>\n<pre><code class=\"bash\">cp .env-template .env<\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430<\/p>\n<pre><code class=\"bash\"># \u041b\u043e\u0433\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0442\u0435\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c \u0433\u0434\u0435 \u0435\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c (MinIO, Keycloak) # \u0412 PostgreSQL \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 postgres, \u0430 \u043f\u0430\u0440\u043e\u043b\u044c ${ADMIN_PASSWORD} ADMIN_USER=admin ADMIN_PASSWORD=password  # \u0410\u0434\u0440\u0435\u0441 \u0438 \u0442\u043e\u043a\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430 DLE DBLAB_URL=http:\/\/192.168.144.138:2345 DBLAB_TOKEN=super-secret  # \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0438\u0437 keycloak \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 DLE GUI LOCAL_IP=192.168.144.114 <\/code><\/pre>\n<p>\u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 DLE \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 (\u0412\u041c) \u0441 Debian Linux, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0430\u0434\u0440\u0435\u0441 <strong>192.168.144.138<\/strong>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0435\u0433\u043e \u0432 <code>DBLAB_URL<\/code>. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442\u0430 &#8212; <strong>192.168.144.114<\/strong>. \u041d\u0430 \u044d\u0442\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u044b MinIO, Keycloak, DLE GUI. \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441 \u0412\u041c. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>LOCAL_IP<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e DNS-\u0438\u043c\u0435\u043d\u0430\u043c, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445.<\/p>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/p>\n<pre><code class=\"bash\">source .env<\/code><\/pre>\n<h4>\u0414\u0435\u043c\u043e-\u0431\u0430\u0437\u0430<\/h4>\n<p>\u0421\u043a\u0430\u0447\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u043c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0411\u0414<\/p>\n<pre><code class=\"bash\">wget https:\/\/edu.postgrespro.ru\/demo-small.zip -O .\/demo-small.zip &amp;&amp; unzip demo-small.zip<\/code><\/pre>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432<\/h4>\n<p>\u0421\u043a\u0430\u0447\u0430\u0435\u043c DLE \u0438 GUI \u0434\u043b\u044f DLE<\/p>\n<pre><code class=\"bash\">git clone https:\/\/gitlab.com\/postgres-ai\/database-lab -b v3.2.0 .\/dblab git clone https:\/\/gitlab.com\/ssi444\/dle-gui<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u0442\u044c docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/p>\n<pre><code class=\"bash\">docker network create dletest<\/code><\/pre>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/h4>\n<blockquote>\n<p>docker-compose \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 >= 2.12<\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0431\u0435\u0440\u0451\u043c \u043e\u0431\u0440\u0430\u0437\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0442\u0435, \u0447\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c.<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml build postgres docker-compose --env-file=.env -p dletest -f docker-compose.yml build keycloak docker-compose --env-file=.env -p dletest -f docker-compose.yml build keycloak-config-import docker-compose --env-file=.env -p dletest -f docker-compose.yml build dlegui docker-compose --env-file=.env -p dletest -f docker-compose.yml pull docker pull minio\/mc<\/code><\/pre>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f:<\/p>\n<ul>\n<li>\n<p>Keyclok &#8212; \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0411\u0414 PostgreSQL \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Prometheus<\/p>\n<\/li>\n<li>\n<p>PostgreSQL &#8212; \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 WAL-G \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 <code>ru_RU.UTF-8<\/code>. \u0411\u0443\u0434\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0411\u0414.<\/p>\n<\/li>\n<li>\n<p>DLE GUI &#8212; \u0442\u0443\u0442 \u043d\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>DLE &#8212; \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043e\u043a \u0434\u043b\u044f <code>arm64<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>Extended PostgreSQL &#8212; \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u043e\u043d\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b DLE \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u043b\u043e\u0433\u0438 \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0431\u044b\u043b\u0430 <code>C<\/code> \u0438\u043b\u0438 <code>en_US.UTF-8<\/code>. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e checkpoint-\u0430 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043b\u043e\u043d\u0435, \u043a\u043e\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u043b\u043e\u0433\u043e\u0432, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f <code>Time of latest checkpoint<\/code><\/p>\n<pre><code class=\"bash\">$ \/usr\/lib\/postgresql\/14\/bin\/pg_controldata -D \/db\/data pg_control version number:            1100 Catalog version number:               201809051 Database system identifier:           6706409297065165594 Database cluster state:               in production pg_control last modified:             Tue 27 Sep 2022 04:29:39 PM UTC Latest checkpoint location:           4600\/4B000028 Latest checkpoint's REDO location:    4600\/4B000028 Latest checkpoint's REDO WAL file:    00000009000046000000004B Latest checkpoint's TimeLineID:       9 Latest checkpoint's PrevTimeLineID:   9 Latest checkpoint's full_page_writes: on Latest checkpoint's NextXID:          0:2120415942 Latest checkpoint's NextOID:          202362995 Latest checkpoint's NextMultiXactId:  37450860 Latest checkpoint's NextMultiOffset:  94046646 Latest checkpoint's oldestXID:        1976274274 Latest checkpoint's oldestXID's DB:   1 Latest checkpoint's oldestActiveXID:  0 ... **Time of latest checkpoint:            Tue 27 Sep 2022 04:29:39 PM UTC** ... <\/code><\/pre>\n<blockquote>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0431\u044b\u043b\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 <code>ru_RU.UTF-8<\/code> \u0438 \u0411\u0414 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432 \u043d\u0435\u0439. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b <code>extended-postgres<\/code> \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f, \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 <code>ru_RU.UTF-8<\/code>. \u0417\u0430\u043e\u0434\u043d\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0451 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0411\u0414 \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c  <code>C<\/code> \u0438\u043b\u0438 <code>en_US.UTF-8<\/code>  <\/p>\n<\/blockquote>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 MinIO<\/h4>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c MinIO<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d minio docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc alias set s3 \"http:\/\/${LOCAL_IP}:9000\" ${ADMIN_USER} ${ADMIN_PASSWORD} docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc mb s3\/postgres-backup docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc admin user add s3 postgres-backup-ro postgres-backup-ro docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc admin user add s3 postgres-backup-rw postgres-backup-rw docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc -v $(pwd)\/conf\/minio:\/conf minio\/mc admin policy add s3 postgres-backup-ro \/conf\/role_postgres-backup_ro.json docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc -v $(pwd)\/conf\/minio:\/conf minio\/mc admin policy add s3 postgres-backup-rw \/conf\/role_postgres-backup_rw.json docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc admin policy set s3 postgres-backup-ro user=postgres-backup-ro docker run --rm --name minio-client -v $(pwd)\/data\/minio-client:\/root\/.mc minio\/mc admin policy set s3 postgres-backup-rw user=postgres-backup-rw<\/code><\/pre>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0411\u0414<\/h4>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d postgres docker-compose --env-file=.env -p dletest -f docker-compose.yml logs -f postgres<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442\u0430 \u0434\u0435\u043c\u043e \u0431\u0430\u0437\u044b. \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 &#171;database system is ready to accept connections&#187; \u0438\u043b\u0438 &#171;\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0411\u0414 \u0433\u043e\u0442\u043e\u0432\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&#187;, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 PostgreSQL-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c (\u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>LANG<\/code> \u0438 <code>LC_ALL<\/code> \u0432 \u0444\u0430\u0439\u043b\u0435 <code>docker-compose.yml<\/code>).<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 PostgreSQL, \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>\/docker-entrypoint-initdb.d\/<\/code> \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b <code>01-init.sql<\/code> \u0438 <code>demo-small-20170815.sql<\/code>. \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0411\u0414. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0435\u0441\u043b\u0438 \u0411\u0414 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>01-init.sql<\/code><\/p>\n<pre><code class=\"sql\">SELECT 'CREATE DATABASE demo' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'demo')\\gexec SELECT 'CREATE DATABASE keycloak' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'keycloak')\\gexec SELECT 'CREATE DATABASE dlegui' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'dlegui')\\gexec SELECT 'CREATE ROLE keycloak WITH LOGIN SUPERUSER PASSWORD ''password''' WHERE NOT EXISTS (SELECT FROM pg_roles WHERE rolname='keycloak')\\gexec<\/code><\/pre>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u043e\u043c <code>01-init.sql<\/code> \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0411\u0414 \u0432 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0411\u0414 <code>demo<\/code>. \u0411\u0414 <code>keycloak<\/code> \u0438 <code>dlegui<\/code> \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<blockquote>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\/\u0440\u043e\u043b\u0438 <code>keycloak<\/code> \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u0434\u0430\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 <code>.env<\/code><\/p>\n<\/blockquote>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Keycloak<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c Keycloak \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0438\u043c \u0438\u043c\u043f\u043e\u0440\u0442-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0418\u0437<br \/> \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u043c\u0430 <code>dlegui<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 <code>dlegui<\/code> \u0438 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f <code>Admins<\/code>, <code>Operators<\/code>, <code>Users<\/code>, <code>Viewers<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 <code>dg-admin<\/code>, <code>dg-operator<\/code>, <code>dg-user1<\/code>, <code>dg-user2<\/code>, <code>dg-viewer<\/code> \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0433\u0440\u0443\u043f\u043f<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d keycloak-config-import docker-compose --env-file=.env -p dletest -f docker-compose.yml logs -f keycloak-config-import<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043b\u043e\u0433\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 &#171;INFO  [io.quarkus] (main) Keycloak stopped in 0.087s&#187; \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u043c\u043f\u043e\u0440\u0442\u0430<\/p>\n<pre><code class=\"bash\">docker rm -f dletest-keycloak-config-import-1<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Keycloak<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d keycloak<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445, \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 \u043d\u0435 \u0438\u0437 \u0441\u0435\u0440\u044b\u0445 \u0437\u043e\u043d, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b keycloak \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u0435\u0437 HTTPS<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres psql -U postgres -d keycloak -c \"update REALM set ssl_required='none'\"<\/code><\/pre>\n<h4>\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0411\u0414<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u043b\u043d\u0443\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 PostgreSQL, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0447\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432 DLE<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres su -l postgres -c '\/bin\/wal-g --config \/wal-g\/.wal-g.json backup-push \/var\/lib\/postgresql\/data'<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres su -l postgres -c '\/bin\/wal-g --config \/wal-g\/.wal-g.json backup-list'<\/code><\/pre>\n<p>\u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0435\u0434\u0438\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0430\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WAL-G \u0438 \u0434\u0430\u043b\u0435\u0435, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a 2 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438<\/p>\n<pre><code class=\"bash\"># \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres su -l postgres -c '\/bin\/wal-g --config \/wal-g\/.wal-g.json backup-push \/var\/lib\/postgresql\/data' # \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres su -l postgres -c '\/bin\/wal-g --config \/wal-g\/.wal-g.json delete --confirm retain FULL 4'<\/code><\/pre>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a DLE GUI<\/h4>\n<p>\u0421\u0442\u0430\u0440\u044b\u0439 <code>libpq<\/code> \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438 \u0432 <code>scram-sha-256<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>md5<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f postgres, \u0447\u0442\u043e\u0431\u044b DLE GUI \u043c\u043e\u0433 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f. \u0425\u043e\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u0431\u044b\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u043f\u0446\u0438\u044f &#171;password_encryption=md5&#187;, \u043d\u043e \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f postgres \u0432 14 PostgreSQL \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u0432\u0438\u0434\u0438\u043c\u043e, \u0434\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043d\u043e\u0432\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c.<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml exec postgres psql -U postgres -c \"alter role postgres password '${ADMIN_PASSWORD}';\" docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d dlegui<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b:<\/p>\n<ol>\n<li>\n<p>S3 (MinIO). \u041f\u043e\u0440\u0442\u044b <code>9000-9001<\/code>. \u0417\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430<code>http:\/\/${LOCAL_IP}:9000<\/code> \u0441 \u043b\u043e\u0433\u0438\u043d\u043e\u043c <code>${ADMIN_USER}<\/code> \u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u043c<code>${ADMIN_PASSWORD}<\/code><\/p>\n<\/li>\n<li>\n<p>PostgreSQL, \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u0432 S3. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <code>http:\/\/${LOCAL_IP}:5432<\/code>. \u041b\u043e\u0433\u0438\u043d <code>posgtres<\/code>, \u043f\u0430\u0440\u043e\u043b\u044c <code>${ADMIN_PASSWORD}<\/code><\/p>\n<\/li>\n<li>\n<p>IdP Keycloak. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <code>http:\/\/${LOCAL_IP}:8080<\/code>. \u041b\u043e\u0433\u0438\u043d <code>${ADMIN_USER}<\/code> \u0438 \u043f\u0430\u0440\u043e\u043b\u044c <code>${ADMIN_PASSWORD}<\/code><\/p>\n<\/li>\n<li>\n<p>DLE GUI. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <code>http:\/\/${LOCAL_IP}:8008<\/code>.<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 DLE GUI \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d, \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 DLE, \u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 \u043d\u0430 Keycloak.<\/p>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a DLE<\/h4>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c DLE. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0441\u044c \u043d\u0430 \u0412\u041c (\u0432 \u0432\u0430\u0448\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0441\u0442), \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u044e \u0442\u0443\u0434\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/gitlab.com\/ssi444\/dblab-article\" rel=\"noopener noreferrer nofollow\">https:\/\/gitlab.com\/ssi444\/dblab-article<\/a> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <code>extended-postres<\/code> \u0438 <code>DLE<\/code>. \u041e\u0441\u043d\u043e\u0432\u0430 \u0434\u043b\u044f <code>extended-postres<\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/postgres-ai\/custom-images\/-\/blob\/master\/extended-postgres\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u042d\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 PostgreSQL, WAL-G \u0438 \u0442\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435. \u041c\u0430\u0436\u043e\u0440\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f PostgreSQL \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435, \u043a\u0430\u043a \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435, \u0442.\u043a. \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 WAL-G \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>pg_basebackup<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0411\u0414 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Citus \u0434\u043b\u044f Postgres, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0432 <a href=\"https:\/\/gitlab.com\/postgres-ai\/custom-images\/-\/blob\/master\/extended-postgres\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a>, \u0438\u043c\u0435\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b amd64. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0434\u043b\u044f \u0434\u0435\u043c\u043e \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u0430 <code>extended-postgres<\/code>. \u0415\u0441\u043b\u0438 \u043e\u043d\u043e \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0443\u043b ZFS. \u0412 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 DLE \u0443\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0441\u0451 \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e<\/p>\n<pre><code class=\"bash\">mkdir -p \/var\/lib\/dblab\/pools\/test1 mkdir -p \/data\/dblab\/test1 cp -r conf\/dle\/test1\/* \/data\/dblab\/test1\/ sudo zpool create -f   -O compression=on   -O atime=off   -O recordsize=128k   -O logbias=throughput   -m \/var\/lib\/dblab\/pools\/test1\/dblab_pool_test1   dblab_pool_test1  \/dev\/sdb<\/code><\/pre>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e <code>\/dev\/sdb<\/code> \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0443\u043b ZFS. \u0415\u0441\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u043d\u0435\u0442, \u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\"># \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 10\u0413\u0431 sudo mkdir -p \/zfs sudo dd if=\/dev\/zero of=\/zfs\/file.img bs=1G count=10 # \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432 \u043d\u0451\u043c \u043f\u0443\u043b ZFS sudo zpool create -f   -O compression=on   -O atime=off   -O recordsize=128k   -O logbias=throughput   -m \/var\/lib\/dblab\/pools\/test1\/dblab_pool_test1   dblab_pool_test1  \/zfs\/file.img # \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u0443\u043b \u0435\u0441\u0442\u044c sudo zpool list<\/code><\/pre>\n<blockquote>\n<p>\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415! \u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f ZFS \u0432\u0435\u0440\u0441\u0438\u0438 2.0. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f DLE \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f 0.8, \u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e ZFS \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e 2.<\/p>\n<\/blockquote>\n<p><strong>\u0434\u043b\u044f amd64<\/strong><\/p>\n<pre><code class=\"bash\">docker build -t dblab-ext-pg:v1 -f Dockerfile.dblab-ext-pg .<\/code><\/pre>\n<p><strong>\u0434\u043b\u044f arm64<\/strong><\/p>\n<pre><code class=\"bash\">docker build --build-arg ARCH=arm64 -t dblab-ext-pg:v1 -f Dockerfile.dblab-ext-pg . sed -i 's\/GOARCH = amd64\/GOARCH = arm64\/; s\/ARCHITECTURES=amd64\/ARCHITECTURES=arm64\/' dblab\/engine\/Makefile # \u0432 macos sed \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a # sed -i '' 's\/GOARCH = amd64\/GOARCH = arm64\/; s\/ARCHITECTURES=amd64\/ARCHITECTURES=arm64\/' dblab\/engine\/Makefile docker-compose --env-file=.env -p dletest -f docker-compose.yml build dle<\/code><\/pre>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <code>conf\/dle\/test1\/engine\/configs\/server.yml<\/code> \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 MinIO (<code>${LOCAL_IP}<\/code>) \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>AWS_ENDPOINT<\/code> (\u0432 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u0442\u0430\u0445)<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre><code class=\"yaml\">server:   # \u0422\u043e\u043a\u0435\u043d, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a API DLE    verificationToken: \"super-secret\"   host: \"\"   port: 2345 embeddedUI:   # GUI, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u0441 DLE.    # \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f arm64 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u043c\u0435\u043d\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442.\u043a. \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u0440\u0443\u0433\u043e\u0439 GUI    enabled: false   dockerImage: \"postgresai\/ce-ui:latest\"   host: \"\"   port: 3345 global:   # \u0414\u0440\u0443\u0433\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0438, \u043a\u0440\u043e\u043c\u0435 postgres, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0430\u043a \u0435\u0441\u0442\u044c    engine: postgres   # \u0412\u0410\u0416\u041d\u041e! \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 `true`, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043b\u0435\u0433\u0447\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u0446\u044b.   debug: true   database:     username: postgres     dbname: postgres   telemetry:     # \u0422\u0443\u0442 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c     enabled: false     url: \"https:\/\/postgres.ai\/api\/general\" poolManager:   # \u0422\u043e\u0447\u043a\u0430 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0443\u043b\u0430 ZFS. \u041b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e \u0442\u0435\u043c \u0436\u0435 \u043f\u0443\u0442\u044f\u043c,    # \u043a\u0430\u043a \u0438 \u043d\u0430 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u0435.   # \u0412\u043d\u0443\u0442\u0440\u0438 mountDir \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u0443\u043b\u044b, \u043b\u0438\u0431\u043e Dataset-\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430.    mountDir: \/var\/lib\/dblab\/pools\/test1   dataSubDir: data   clonesMountSubDir: clones   socketSubDir: sockets   observerSubDir: observer   preSnapshotSuffix: \"_pre\"   # \u0415\u0441\u043b\u0438 \u0432 mountDir, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u043b\u043e\u0432\/Dataset-\u043e\u0432, \u0442\u043e \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439.   # \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043b\u044b\/Dataset-\u044b \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430   selectedPool: \"\" databaseContainer: &amp;db_container   # \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0411\u0414 \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430,    # \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u0430\u043b\u043e\u043d\u0430 \u0441 \u0430\u0440\u0445\u0438\u0432\u043e\u043c, \u043a\u043b\u043e\u043d\u044b.    dockerImage: \"dblab-ext-pg:v1\"   # \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 \u0411\u0414.   # \u042d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u043d\u0435 PostgreSQL   containerConfig:     \"shm-size\": \"2gb\" databaseConfigs: &amp;db_configs   # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c PostgreSQL.   # \u0412 \u0430\u0440\u0445\u0438\u0432, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 WAL-G, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PostgreSQL \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.   # \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 PostgreSQL, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.   # \u041a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442:   # https:\/\/postgres.ai\/docs\/how-to-guides\/administration\/postgresql-configuration#postgresql-configuration-in-clones   configs:     shared_buffers: 2GB     shared_preload_libraries: \"pg_stat_statements, auto_explain, logerrors\"     work_mem: \"32MB\"     max_connections: 500     lc_messages: \"en_US.UTF-8\"     lc_monetary: \"ru_RU.UTF-8\"     lc_numeric: \"ru_RU.UTF-8\"     lc_time: \"ru_RU.UTF-8\"     datestyle: \"iso, dmy\"     timezone: \"W-SU\" provision:   &lt;&lt;: *db_container   # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0440\u0442\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 DLE.   # \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u043e\u043b\u0435\u0435 100 \u043a\u043b\u043e\u043d\u043e\u0432, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d.   portPool:     from: 6001     to: 6100   useSudo: false   # \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u043e\u043d\u0430 \u0442\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0443\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f,   # \u0430 \u0432\u0441\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0423\u0417 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u043b\u0438 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0411\u0414   # \u043f\u043e\u0434 \u0423\u0417 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0434\u0430\u0447\u0438 \u043f\u0440\u0430\u0432 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0411\u0414,    # \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 `true`    keepUserPasswords: true retrieval:   jobs:      # \u041a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.      # \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (\u0438\u043c\u0435\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 _phr_), \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0430\u0440\u0445\u0438\u0432 \u0438\u0437 S3.       # \u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0432\u0430 \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.       # \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (\u0438\u043c\u0435\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 _sync_), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442 S3 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432      # \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0445 \u043a \u044d\u0442\u0430\u043b\u043e\u043d\u0443.     - physicalRestore     # \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0411\u0414 \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u043d\u0438\u0436\u0435),      # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u0430      - physicalSnapshot   spec:     # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430\u0434\u0430\u0447, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435.     physicalRestore:       options:         &lt;&lt;: *db_container         tool: walg         sync:           enabled: true           healthCheck:             interval: 5             maxRetries: 200           configs:             shared_buffers: 2GB           recovery:         envs:           # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a S3 \u0434\u043b\u044f WAL-G            AWS_ENDPOINT: \"http:\/\/192.168.144.114:9000\"           AWS_S3_FORCE_PATH_STYLE: \"true\"           AWS_ACCESS_KEY_ID: \"postgres-backup-ro\"           AWS_SECRET_ACCESS_KEY: \"postgres-backup-ro\"           WALG_S3_PREFIX: \"s3:\/\/postgres-backup\"           # \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \"\u0441\u0438\u0441\u0442\u0435\u043c\u044b\" \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0427\u0442\u043e\u0431\u044b DLE \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443           LANG: \"en_US.UTF-8\"           LC_ALL: \"en_US.UTF-8\"         walg:           backupName: LATEST     physicalSnapshot:       options:         skipStartSnapshot: false         &lt;&lt;: *db_configs         promotion:           &lt;&lt;: *db_container           enabled: true           healthCheck:             interval: 5             maxRetries: 200           queryPreprocessing:             # \u041a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f .sql-\u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u043c\u0443 \u0441\u043d\u0438\u043c\u043a\u0443             queryPath: \"\/home\/dblab\/configs\/preprocessing\/\"             maxParallelWorkers: 2           configs:             shared_buffers: 2GB           recovery:         # \u0421\u043a\u0440\u0438\u043f\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u0430.         # \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043b\u043e\u0433\u0438, \u0434\u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u043a\u043b\u043e\u043d\u0443 \u043e\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u0430         preprocessingScript: \"\/home\/dblab\/configs\/scripts\/clear_old_log.sh\"         scheduler:           # \u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432           snapshot:              # 04:15 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e              timetable: \"15 4 * * *\"           # \u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432           retention:             # 05:25 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e             timetable: \"25 5 * * *\"             # \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 N-\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 + \u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438,              # \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043a\u043b\u043e\u043d\u044b             limit: 3         envs:           # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a S3 \u0434\u043b\u044f WAL-G           AWS_ENDPOINT: \"http:\/\/192.168.144.114:9000\"           AWS_S3_FORCE_PATH_STYLE: \"true\"           AWS_ACCESS_KEY_ID: \"postgres-backup-ro\"           AWS_SECRET_ACCESS_KEY: \"postgres-backup-ro\"           WALG_S3_PREFIX: \"s3:\/\/postgres-backup\"           # \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \"\u0441\u0438\u0441\u0442\u0435\u043c\u044b\" \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0427\u0442\u043e\u0431\u044b DLE \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443           LANG: \"en_US.UTF-8\"           LC_ALL: \"en_US.UTF-8\" cloning:   accessHost: \"192.168.144.138\"   # \u0427\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043b\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0438\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.   # \u0410\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043b\u043e\u0433\u0430\u043c PostgreSQL \u0438 \u0434\u0430\u0442\u0430\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439.   # \u0423\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u043b\u043e\u043d\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f.   maxIdleMinutes: 120  <\/code><\/pre>\n<p>\u0421 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c\u0438 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043b\u043e\u043d\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043b\u043e\u043d \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <a href=\"https:\/\/postgres.ai\/products\/joe\" rel=\"noopener noreferrer nofollow\">JoeBot<\/a> \u0432 SaaS \u0441\u0435\u0440\u0432\u0438\u0441\u0435 <a href=\"http:\/\/postgres.ai\" rel=\"noopener noreferrer nofollow\">postgres.ai<\/a>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f maxIdleMinutes \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u043e\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0437\u0430\u0447\u0438\u0449\u0430\u043b\u0438\u0441\u044c (\u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 15 \u043c\u0438\u043d\u0443\u0442, \u0435\u0441\u043b\u0438 \u044f \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c).<\/p>\n<p>\u041c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0445\u043e\u0434: \u043f\u0440\u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u0435 \u043a\u043e\u0434\u0430 \u0432 \u0432\u0435\u0442\u043a\u0443 staging \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0431\u043e\u0440\u043a\u0430 \u041f\u041e, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u0432 \u0438\u043c\u0435\u043d\u0438, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u041f\u041e, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u043e\u043d. \u041a\u043b\u043e\u043d\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u041f\u041e, \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432, \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u0432 \u0438\u043c\u0435\u043d\u0438, \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 \u043a\u043b\u043e\u043d. \u0414\u0430\u043b\u0435\u0435 \u0443\u0436\u0435 \u0430\u0432\u0442\u043e\u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442 \u0441\u0442\u0430\u0432\u0448\u0438\u0435 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043a\u043b\u043e\u043d\u044b (\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 maxIdleMinutes \u043c\u0438\u043d\u0443\u0442).<\/p>\n<p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a CI \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u0435\u0431\u0435 \u043a\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0417\u0430\u0449\u0438\u0442\u0430 \u043d\u0430 \u043d\u0438\u0445 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043b\u043e\u043d\u043e\u043c, \u043e\u043d \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043e\u0447\u0438\u0441\u0442\u043a\u043e\u0439. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c maxIdleMinutes \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 1440 \u043c\u0438\u043d\u0443\u0442 (\u0441\u0443\u0442\u043a\u0438).<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/gitlab.com\/ssi444\/dblab-article\/-\/blob\/master\/create-clone.sh\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a><\/p>\n<p>\u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0438\u0448\u0435\u043d\u043a\u0443 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0442\u043e\u0440\u0442\u0435 &#8212; DLE<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml build dle docker-compose --env-file=.env -p dletest -f docker-compose.yml up -d dle docker-compose --env-file=.env -p dletest -f docker-compose.yml logs -f dle<\/code><\/pre>\n<h4>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0435\u043d\u0434\u0430<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <code>dletest-dle-1<\/code> \u0438 <code>dblab_phr_ccq5nieficds73d508u0<\/code>, \u043f\u043e\u0442\u043e\u043c <code>dblab_phr_ccq5nieficds73d508u0<\/code> \u0441\u043c\u0435\u043d\u0438\u0442\u0441\u044f <code>dblab_promote_ccq5nieficds73d508u0<\/code> \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e  <code>dblab_sync_ccq5nieficds73d508u0<\/code> \u0438 <code>dletest-dle-1<\/code>. \u0412\u043c\u0435\u0441\u0442\u043e<code>ccq5nieficds73d508u0<\/code> \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430.<\/p>\n<p>\u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430. DLE \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441, \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439 \u0438 \u0441\u0442\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0438\u0437 S3.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u043e\u0433 DLE (<code>docker-compose --env-file=.env -p dletest -f docker-compose.yml logs -f dle<\/code>), \u0442\u043e \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b <code>conf\/dle\/test1\/engine\/configs\/preprocessing\/01.sql<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0411\u0414 <code>demo<\/code> \u0432 <code>demo_renamed<\/code>.<\/p>\n<pre><code class=\"bash\">dletest-dle-1  | 2022\/09\/28 14:36:08 queryPreprocessor.go:138: [INFO]   Run psql command [psql -U postgres -d postgres --file \/home\/dblab\/configs\/preprocessing\/01.sql] dletest-dle-1  | 2022\/09\/28 14:36:08 queryPreprocessor.go:61: [INFO]   Run SQL: \/home\/dblab\/configs\/preprocessing\/01.sql dletest-dle-1  |  ALTER DATABASE dletest-dle-1  | 2022\/09\/28 14:36:08 tools.go:278: [INFO]   Run checkpoint command [psql -U postgres -d postgres -XAtc checkpoint] dletest-dle-1  | 2022\/09\/28 14:36:08 tools.go:290: [INFO]   Checkpoint result:  CHECKPOINT<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438, \u0442\u043e \u0432 \u043b\u043e\u0433\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 <code>http:\/\/${LOCAL_IP}:8008<\/code>. \u041f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u043d\u0430 Keycloak (<code>http:\/\/${LOCAL_IP}:8080<\/code>). \u0412\u0432\u043e\u0434\u0438\u043c \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c (dg-admin\/dg-admin). \u0421\u043d\u043e\u0432\u0430 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u043d\u0430 DLE GUI. \u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0aa\/d2e\/16a\/0aad2e16aa2bbf3389cca3a8d33e8c83.png\" width=\"3314\" height=\"1552\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0aa\/d2e\/16a\/0aad2e16aa2bbf3389cca3a8d33e8c83.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u043a\u043b\u043e\u043d\u043e\u0432 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 <code>dg-user1<\/code> \u0438 <code>dg-user2<\/code>, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043b\u043e\u043d\u0435 \u044d\u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u043e\u0441\u044c. \u0422\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u043a\u043b\u043e\u043d\u044b, \u0447\u0443\u0436\u0438\u0445 \u043e\u043d \u043d\u0435 \u0432\u0438\u0434\u0438\u0442.<\/p>\n<p>\u0417\u0430\u0439\u0434\u0451\u043c \u0432 Keycloak (<code>http:\/\/${LOCAL_IP}:8080<\/code>), \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u043e\u0434 <code>${ADMIN_USER}<\/code> \u0438 <code>${ADMIN_PASSWORD}<\/code> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code>dg-user1<\/code> \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 <code>Viewers<\/code> <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c8\/2db\/c36\/1c82dbc365196817ac56e35366d9e5cb.png\" width=\"2634\" height=\"1334\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c8\/2db\/c36\/1c82dbc365196817ac56e35366d9e5cb.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e <code>dg-user1<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u043b\u043e\u043d\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <code>dg-user2<\/code>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0447\u0443\u0436\u0438\u043c\u0438 \u043a\u043b\u043e\u043d\u0430\u043c\u0438, \u043a\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>\u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 2.5, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 DLE, \u0443\u0434\u0430\u043b\u044f\u043b\u0438\u0441\u044c \u0432\u0441\u0435 \u043a\u043b\u043e\u043d\u044b, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u043a\u043b\u043e\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 2.5 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043b\u043e\u043d\u043e\u0432 \u0441\u0442\u0430\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c DLE \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u043e\u043d\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DLE, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043b\u0438\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml exec dle kill -SIGHUP 1<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 DLE \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 3-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043d\u043e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u041f\u041e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043a\u043b\u043e\u043d, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0415\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0411\u0414 \u0438\u043b\u0438 \u0435\u0451 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 DLE, \u0437\u0430\u0439\u0434\u0451\u043c \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u043e\u043d\u043e\u0432 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u0411\u0414 \u0442\u0430\u043c \u0435\u0441\u0442\u044c. \u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043b\u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e \u043f\u043e\u0440\u0442\u0443 6003. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438.<\/p>\n<pre><code class=\"bash\">$ docker run --rm --name pg-tmp -it postgres:14.5 psql \"host=192.168.144.138 port=6003 user=admin dbname=postgres\" Password for user admin:  psql (14.5) Type \"help\" for help.  postgres=# \\l+                                                                      List of databases      Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description                  --------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------  demo_renamed | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |                       | 281 MB  | pg_default |   dlegui       | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |                       | 9609 kB | pg_default |   keycloak     | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |                       | 13 MB   | pg_default |   postgres     | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |                       | 8553 kB | pg_default | default administrative connection database  template0    | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +| 8401 kB | pg_default | unmodifiable empty database               |          |          |             |             | postgres=CTc\/postgres |         |            |   template1    | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +| 8401 kB | pg_default | default template for new databases               |          |          |             |             | postgres=CTc\/postgres |         |            |  (6 rows)  postgres=# <\/code><\/pre>\n<p>\u0423 \u043d\u0430\u0441 \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0441\u043d\u0438\u043c\u043e\u043a \u0438 \u043a\u043b\u043e\u043d \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435. \u0412\u043d\u0435\u0441\u0451\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. 192.168.144.114 &#8212; \u044d\u0442\u043e ${LOCAL_IP}.<\/p>\n<pre><code class=\"sql\">$ docker run --rm --name pg-tmp -it postgres:14.5 psql \"host=192.168.144.114 port=5432 user=postgres dbname=postgres\" Password for user postgres:  psql (14.5) Type \"help\" for help.  postgres=# CREATE DATABASE demo2 OWNER keycloak; CREATE DATABASE postgres=# \\l                                   List of databases    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges    -----------+----------+----------+-------------+-------------+-----------------------  demo      | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   demo2     | keycloak | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   dlegui    | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   keycloak  | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   postgres  | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   template0 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +            |          |          |             |             | postgres=CTc\/postgres  template1 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +            |          |          |             |             | postgres=CTc\/postgres (7 rows)  postgres=# \\c demo2 You are now connected to database \"demo2\" as user \"postgres\".<\/code><\/pre>\n<p>\u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0411\u0414 <code>demo2<\/code>. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043d\u0435\u0439 \u043e\u0434\u043d\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0451 \u0441\u043e\u0442\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<pre><code class=\"sql\">CREATE TABLE DOCUMENT_TEMPLATE(    ID INTEGER NOT NULL,    NAME TEXT,    SHORT_DESCRIPTION TEXT,    AUTHOR TEXT,    DESCRIPTION TEXT,    CONTENT TEXT,    LAST_UPDATED DATE,    CREATED DATE );  INSERT INTO DOCUMENT_TEMPLATE(id,name, short_description, author,                               description,content, last_updated,created) SELECT id, 'name', md5(random()::text), 'name2'       ,md5(random()::text),md5(random()::text)       ,NOW() - '1 day'::INTERVAL * (RANDOM()::int * 100)       ,NOW() - '1 day'::INTERVAL * (RANDOM()::int * 100 + 100) FROM generate_series(1,100) id;<\/code><\/pre>\n<pre><code class=\"sql\">demo2=# select count(*) from DOCUMENT_TEMPLATE;  count  -------    100 (1 row)  demo2=# <\/code><\/pre>\n<pre><code class=\"bash\">docker-compose --env-file=.env -p dletest -f docker-compose.yml restart dle docker-compose --env-file=.env -p dletest -f docker-compose.yml logs -f dle<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<pre><code class=\"bash\">dletest-dle-1  | 2022\/09\/28 16:14:02 runners.go:106: [DEBUG]  Run(Local): \"zfs snapshot -r dblab_pool_test1\/clone_pre_20220928160300@snapshot_20220928161352\" dletest-dle-1  | 2022\/09\/28 16:14:02 runners.go:151: [DEBUG]  Run(Local): output \"\" dletest-dle-1  | 2022\/09\/28 16:14:02 runners.go:106: [DEBUG]  Run(Local): \"zfs set dblab:datastateat=\"20220928161352\" dblab_pool_test1\/clone_pre_20220928160300@snapshot_20220928161352\" dletest-dle-1  | 2022\/09\/28 16:14:02 runners.go:151: [DEBUG]  Run(Local): output \"\" dletest-dle-1  | 2022\/09\/28 16:14:02 zfs.go:335: [DEBUG]  New snapshot: {dblab_pool_test1\/clone_pre_20220928160300@snapshot_20220928161352 2022-09-28 16:14:02.234017346 +0000 UTC m=+661.978728658 2022-09-28 16:13:52 +0000 UTC 0 0 dblab_pool_test1} dletest-dle-1  | 2022\/09\/28 16:14:02 physical.go:448: [INFO]   Snapshot scheduler has been started<\/code><\/pre>\n<p>\u043d\u043e\u0432\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0433\u043e\u0442\u043e\u0432. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043b\u043e\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438<\/p>\n<pre><code class=\"sql\">$ docker run --rm --name pg-tmp -it postgres:14.5 psql \"host=192.168.144.138 port=6004 user=admin dbname=postgres\" Password for user admin:  psql (14.5) Type \"help\" for help.  postgres=# \\l                                    List of databases      Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges    --------------+----------+----------+-------------+-------------+-----------------------  demo2        | keycloak | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   demo_renamed | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   dlegui       | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   keycloak     | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   postgres     | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |   template0    | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +               |          |          |             |             | postgres=CTc\/postgres  template1    | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c\/postgres          +               |          |          |             |             | postgres=CTc\/postgres (7 rows)  postgres=# \\c demo2 You are now connected to database \"demo2\" as user \"admin\".              demo2=# select count(*) from document_template;  count  -------    100 (1 row)<\/code><\/pre>\n<p>\u041d\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0435\u0441\u0442\u044c. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0436\u0435 \u043a\u043b\u043e\u043d\u0430\u0445 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043a\u0430\u043a \u0431\u044b\u043b\u043e. \u0415\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u043e\u043d \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043d\u0438\u043c\u043a\u0435, \u0442\u043e \u0442\u0430\u043c \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0411\u0414 demo2.<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u0411\u0414.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0439 \u043a\u0430\u043c\u0435\u043d\u044c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 PotgreSQL \u043d\u0430 Patroni. \u041f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f timeline \u0432 \u0411\u0414 \u0438 \u044d\u0442\u0430\u043b\u043e\u043d \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u044d\u0442\u0443 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 timeline \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u044d\u0442\u0430\u043b\u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0438\u0437 S3 \u0438 \u0432\u044b\u0434\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0451\u0442\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 \u043e\u0431\u0440\u0430\u0437\u0435 Extended PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0430\u0432\u043d\u043e, \u0431\u044b\u043b \u0437\u0430\u0448\u0438\u0442 WAL-G \u0432\u0435\u0440\u0441\u0438\u0438 0.2.19, \u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0434\u0435\u043b\u0430\u043b\u0430\u0441\u044c \u0432\u0435\u0440\u0441\u0438\u0435\u0439 WAL-G 2.0.0. WAL-G 0.2.19 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u043f\u043e\u043b\u043d\u0443\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043e\u0442 WAL-G \u0432\u0435\u0440\u0441\u0438\u0438 2.0.0, \u0430 \u0432\u043e\u0442 \u043d\u0430 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0436\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0443. \u0418 \u0441 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u043e\u0436\u0435 \u0431\u044b\u043b\u043e \u043d\u0435 \u0432\u0441\u0451 \u0433\u043b\u0430\u0434\u043a\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f WAL-G \u0432 \u043e\u0431\u0440\u0430\u0437\u0435 Extended PostgreSQL \u043c\u044b \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c timeline \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435, \u043d\u043e \u044d\u0442\u0430\u043b\u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0443\u0433\u0430\u043b\u0441\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 DLE 4 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u043f\u043e-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0435 \u0436\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u0430 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0441\u0432\u0435\u0436\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c \u043f\u043e \u0446\u0435\u0445\u0443. \u0422\u0435, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043b \u043f\u0440\u043e DLE &#8212; \u043d\u0430\u0447\u043d\u0443\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0442\u0435 \u0436\u0435, \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/700368\/\"> https:\/\/habr.com\/ru\/post\/700368\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h3>\n<p>\u042f \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0414\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0441 \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435\u043c \u0436\u0434\u0430\u043b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435 &#8212; Database Lab Engine. \u041d\u043e \u0432\u0440\u0435\u043c\u044f \u0448\u043b\u043e, \u0441\u0442\u0430\u0442\u0435\u0439 \u0432\u0441\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c. \u0422\u0440\u0443\u0434\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u043d\u0438\u0435,\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u043c. \u0418 \u043c\u043e\u0451 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e \u043a \u043a\u043e\u043d\u0446\u0443. \u0422\u0430\u043a \u0447\u0442\u043e \u0441\u0445\u0432\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043f\u043e\u043a\u0440\u0435\u043f\u0447\u0435 \u0437\u0430 \u0440\u0443\u0447\u043a\u0438 \u043a\u0440\u0435\u0441\u0435\u043b, \u0447\u0442\u043e\u0431\u044b\u00a0\u0432\u0430\u0441 \u043d\u0435 \u0443\u043d\u0435\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0441\u0430\u043a\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u043c\u0435\u0442\u0430\u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0443\u044e, \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<\/p>\n<h3>\u0412\u0432\u043e\u0434\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p><a href=\"https:\/\/github.com\/postgres-ai\/database-lab-engine\" rel=\"noopener noreferrer nofollow\">Database Lab Engine<\/a> (\u0434\u0430\u043b\u0435\u0435 DLE) &#8212; \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0411\u0414 (\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u0442\u0435\u0441\u0442\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0442.\u0434.). \u041e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u041a\u0442\u043e-\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439 \u0411\u0414 \u0441 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041e. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043b\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e\u043c \u043a \u043d\u0435\u043c\u0443. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 DLE \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0411\u0414 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0414\u0430\u043b\u0435\u0435 \u0440\u0435\u0447\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e &#171;\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c&#187; \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b DLE + \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 WAL-G. DLE \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043f\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u043b\u043e\u0432 ZFS \u0434\u043b\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043c\u043a\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0430\u0445 <a href=\"https:\/\/postgres.ai\/docs\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<\/blockquote>\n<ol>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/wal-g\/wal-g\" rel=\"noopener noreferrer nofollow\">WAL-G<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/pgbackrest.org\/\" rel=\"noopener noreferrer nofollow\">PGBACKREST<\/a> <\/p>\n<ul>\n<li>\n<p>\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 ZFS \u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043f\u0443\u043b ZFS.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 DLE \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a S3, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0438 \u0442\u043e\u0447\u043a\u0430 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f ZFS \u043f\u0443\u043b\u0430. <\/p>\n<blockquote>\n<p>\u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 S3 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043f\u043e\u0434 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c, \u0430 \u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435<\/p>\n<\/blockquote>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 DLE, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 ZFS \u043f\u0443\u043b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044f WAL-\u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0438\u0437 S3. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f hot-standby \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL. \u041d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u043e\u0442 &#171;\u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445&#187; (\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441 PostgreSQL) &#171;\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c&#187; \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u044d\u0442\u0430\u043b\u043e\u043d&#187;.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 (\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 DLE) \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u043c\u043e\u043a (snaphot \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 ZFS). \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0441\u043d\u0438\u043c\u043a\u0435 \u0441\u0432\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f <code>.sql<\/code> \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u0441\u043d\u0438\u043c\u043a\u0443. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 &#8212; \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0442\u0430\u043a \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c &#171;\u043a\u043b\u043e\u043d\u044b&#187; &#8212; \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b PostgreSQL. \u0412\u0441\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u0434\u043e\u043b\u0433\u0430\u044f&#187; \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043d\u0438\u043c\u043a\u0430, \u0430 \u043a\u043b\u043e\u043d (\u0442\u043e\u0436\u0435 snapshot ZFS) \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u041a\u043b\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u0430 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u041d\u043e \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u043e\u043d\u0435 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u0421\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e ZFS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c CoW (Copy-On-Write), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u0436\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u043e\u043d\u044b &#171;\u0442\u043e\u043d\u043a\u0438\u043c\u0438&#187;<\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043a\u0440\u0435\u043f\u0438\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e:<br \/> <em>\u0421\u043d\u0438\u043c\u043e\u043a<\/em> &#8212; \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 PostgreSQL, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\/\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0442.\u043f.. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u043b\u043e\u043d\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0411\u0414 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 PostgreSQL, \u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u043d\u0438\u043c\u043a\u0430<\/p>\n<p><em>\u041a\u043b\u043e\u043d<\/em> &#8212; \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u043d\u0438\u043c\u043a\u0430. \u041a\u043b\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u0430. \u041d\u043e \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u043e\u043d\u0435, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 &#171;\u0440\u0430\u0437\u043c\u0435\u0440&#187; \u043a\u043b\u043e\u043d\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043d\u0438\u043c\u043a\u043e\u0432, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0440\u0435\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u043e\u043d\u043e\u0432 (\u0447\u0438\u0442\u0430\u0439: \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 PostgreSQL), \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u044e\u0431\u044b\u0445 \u043d\u0430\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. \u041b\u044e\u0431\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043a\u043b\u043e\u043d\u043e\u0432 \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u043e\u043d\u044b. \u0420\u0430\u0441\u043f\u043b\u0430\u0442\u043e\u0439 \u0437\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 DLE. \u0422\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e ZFS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0436\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0432 3-5 \u0440\u0430\u0437), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041d\u043e \u0434\u0438\u0441\u043a\u0438 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSD, \u0442.\u043a. \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u043e\u043d\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u044f\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 HDD \u0432 \u043a\u043e\u043c\u0443.<\/p>\n<h3>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u0445\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0435\u043d\u0434, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>MinIO &#8212; S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 <a href=\"https:\/\/postgrespro.ru\/docs\/postgrespro\/9.5\/wal-intro\" rel=\"noopener noreferrer nofollow\">WAL<\/a><\/p>\n<\/li>\n<li>\n<p>PostgreSQL &#8212; \u0421\u0423\u0411\u0414<\/p>\n<\/li>\n<li>\n<p>Keycloak &#8212; Identity Provider (IdP). \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<\/li>\n<li>\n<p>DLE &#8212; \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u043d\u043a\u0438\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>DLE GUI &#8212; \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 OIDC \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/p>\n<\/li>\n<\/ol>\n<p>DLE \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 CLI \u0438 API, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0421 \u0432\u0435\u0440\u0441\u0438\u0438 2.5 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f GUI \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. GUI \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u043c SaaS \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u043b\u043e\u043d\u0430\u043c\u0438. \u041d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043e \u043b\u0438\u0431\u043e \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b CI, \u043b\u0438\u0431\u043e \u043d\u0430 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442.\u043a. \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443, \u0438\u043c\u0435\u044e\u0449\u0435\u043c\u0443 \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u043d\u0435\u0442. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445, \u0433\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, AD, LDAP \u0438 \u0442.\u043f.) \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a DLE. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u0442\u0435\u043d\u0434\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IdP Keycloak, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e OIDC, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044e\u044e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 DLE GUI, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e OIDC, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u043a\u043b\u043e\u043d\u0430\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e DLE GUI \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/gitlab.com\/ssi444\/dle-gui\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0411\u0414 \u0438 WAL \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MinIO. \u0412 MinIO \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u043e\u0440\u0437\u0438\u043d\u0430 (bucket) \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 2 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0423\u0417):<\/p>\n<ol>\n<li>\n<p>postgres-backup-rw &#8212; \u0423\u0417 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 &#171;\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c&#187;, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>postgres-backup-ro &#8212; \u0423\u0417 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 &#171;\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435&#187;, \u0434\u043b\u044f DLE<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f MinIO, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0440\u043e\u043b\u0438.<\/p>\n<\/blockquote>\n<p>\u0412 Keycloak \u0431\u0443\u0434\u0435\u0442 5 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0440\u043e\u043b\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 DLE:<\/p>\n<ol>\n<li>\n<p>dg-admin &#8212; \u0440\u043e\u043b\u044c &#171;\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440&#187;<\/p>\n<\/li>\n<li>\n<p>dg-operator &#8212; \u0440\u043e\u043b\u044c &#171;\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440&#187;<\/p>\n<\/li>\n<li>\n<p>dg-user1 &#8212; \u0440\u043e\u043b\u044c &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<li>\n<p>dg-user2 &#8212; \u0440\u043e\u043b\u044c &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<li>\n<p>dg-viewer &#8212; \u0440\u043e\u043b\u044c &#171;\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c&#187;<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0430\u0440\u043e\u043b\u044c \u0423\u0417 \u0432 Keycloak \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439:<\/p>\n<ol>\n<li>\n<p>\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 (admin)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<\/ul>\n<ol start=\"2\">\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (operator)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<ol start=\"3\">\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (user)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\/\u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<ol start=\"4\">\n<li>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c (viewer)<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u043e\u043d\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043c\u0438\u043c\u043e \u0440\u043e\u043b\u0438 &#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187;, \u0440\u043e\u043b\u044c &#171;\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c&#187;, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u043e\u043d\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430 (\u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u043e\u043d\u0430 \u0441 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0438\u043c\u0435\u043d\u0435\u043c\/\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043a\u043b\u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d).<\/p>\n<blockquote>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Keycloak, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0433\u0440\u0443\u043f\u043f\u044b.<\/p>\n<\/blockquote>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0442\u0435\u043d\u0434\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0411\u0414 \u043e\u0442 PostgresPRO &#8212; <a href=\"https:\/\/postgrespro.ru\/education\/demodb\" rel=\"noopener noreferrer nofollow\">https:\/\/postgrespro.ru\/education\/demodb<\/a><\/p>\n<p>\u042f \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 Macbook Pro M1, \u0438\u043c\u0435\u044e\u0449\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 <code>arm64<\/code>, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432 Docker Desktop \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <code>rshared<\/code>, \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0442.\u043a. \u043e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0431\u043e\u0440\u043e\u043a \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 <code>amd64<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 <code>amd64<\/code>, \u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043e \u0447\u0451\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u043c\u0430\u0440\u043a\u0430.<\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c ZFS 2.x, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c. \u041d\u0430 Ubuntu 20.04 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 0.8.4 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 OpenZFS \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"https:\/\/openzfs.github.io\/openzfs-docs\/Developer%20Resources\/Building%20ZFS.html\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u0423 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u044f\u0434\u0440\u043e 5.8.0-63 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u043d\u0435\u0441\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u0435\u0440\u0441\u0438\u044f OpenZFS \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f<\/p>\n<pre><code class=\"bash\">sudo apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-generic python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging git libcurl4-openssl-dev git clone https:\/\/github.com\/openzfs\/zfs cd .\/zfs git checkout master sh autogen.sh .\/configure .\/configure --with-linux=\/usr\/src\/linux-headers-5.8.0-63-generic --with-linux-obj=\/usr\/src\/linux-headers-5.8.0-63-generic make -s -j$(nproc) deb sudo dpkg -i kmod-zfs-5.8.0-63-generic_2.1.99-1566_amd64.deb libzfs5_2.1.99-1566_amd64.deb libzpool5_2.1.99-1566_amd64.deb zfs_2.1.99-1566_amd64.deb echo \"search extra updates ubuntu built-in\" | sudo tee \/etc\/depmod.d\/ubuntu.conf sudo ldconfig; sudo depmod; sudo modprobe zfs zfs version<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u0435\u043d\u0434\u0430<\/p>\n<pre><code class=\"bash\">git clone https:\/\/gitlab.com\/ssi444\/dblab-article.git cd dblab-article<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-341464","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/341464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=341464"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/341464\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=341464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=341464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=341464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}