{"id":3718,"date":"2025-11-02T14:13:17","date_gmt":"2025-11-02T12:13:17","guid":{"rendered":"https:\/\/ru.davidka.net\/ru\/?p=3718"},"modified":"2026-08-06T09:40:12","modified_gmt":"2026-08-06T07:40:12","slug":"%d0%bf%d0%be%d0%b4%d0%b3%d0%be%d1%82%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8%d0%bd%d1%84%d1%80%d0%b0%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d1%8b","status":"publish","type":"post","link":"https:\/\/ru.davidka.net\/ru\/%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B\/","title":{"rendered":"\u0413\u041b\u0410\u0412\u0410 3: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0426\u0435\u043b\u044c \u0433\u043b\u0430\u0432\u044b:<\/strong> \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MariaDB<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/claude.ai\/chat\/02-backup.md\">\u2190 \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430<\/a> | <a href=\"https:\/\/claude.ai\/chat\/00-INDEX.md\">\u041d\u0430\u0437\u0430\u0434 \u043a \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u044e<\/a> | <a href=\"https:\/\/claude.ai\/chat\/04-install-mariadb.md\">\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430 \u2192<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div id=\"rtoc-mokuji-wrapper\" class=\"rtoc-mokuji-content frame2 preset1 animation-fade rtoc_open default\" data-id=\"3718\" data-theme=\"Neve - Davidka\">\n\t\t\t<div id=\"rtoc-mokuji-title\" class=\"rtoc_btn_none rtoc_left\">\n\t\t\t\n\t\t\t<span>In Questo Articolo<\/span>\n\t\t\t<\/div><ol class=\"rtoc-mokuji decimal_ol level-1\"><li class=\"rtoc-item\"><a href=\"#rtoc-1\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u044b<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-2\">1. \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MySQL \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-3\">1.1 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-4\">1.2 \u041e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-5\">1.3 Graceful shutdown<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-6\">1.4 \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 snapshot \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-7\">2. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 MySQL<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-8\">2.1 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 A: \u041f\u043e\u043b\u043d\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 (\u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-9\">2.2 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 B: \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-10\">2.3 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 C: In-place upgrade (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-11\">3. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f MariaDB<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-12\">3.1 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-13\">3.2 \u0420\u0443\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (Ubuntu 22.04)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-14\">3.3 \u0412\u044b\u0431\u043e\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 MariaDB<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-15\">4. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-16\">4.1 \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-17\">5. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-18\">5.1 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-19\">5.2 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-20\">5.3 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 swap (\u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f)<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-21\">6. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-22\">6.1 \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u0434\u043b\u044f MySQL<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-23\">6.2 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 systemd \u043b\u0438\u043c\u0438\u0442\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-24\">6.3 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f kernel \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-25\">7. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438 \u0438 firewall<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-26\">7.1 Firewall (UFW)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-27\">7.2 Firewall (iptables)<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-28\">8. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-29\">8.1 \u041a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-30\">\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0433\u043b\u0430\u0432\u044b<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-31\">\u2705 \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-32\">\ud83d\udccb \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-33\">\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/a><\/li><\/ol><\/div><h2 id=\"rtoc-1\"  class=\"wp-block-heading\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u044b<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#1-%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-mysql-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%BE%D0%B2\">\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MySQL \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#2-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%BB%D0%B8-%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-mysql\">\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 MySQL<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#3-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-mariadb\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f MariaDB<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#4-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#5-%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#6-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D1%85-%D0%BB%D0%B8%D0%BC%D0%B8%D1%82%D0%BE%D0%B2\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#7-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%81%D0%B5%D1%82%D0%B8-%D0%B8-firewall\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438 \u0438 firewall<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#8-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-2\"  class=\"wp-block-heading\">1. \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MySQL \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/h2>\n\n\n\n<h3 id=\"rtoc-3\"  class=\"wp-block-heading\">1.1 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\nmysql -u root -p -e &quot;SHOW PROCESSLIST;&quot;\n\n# \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\nmysql -u root -p -e &quot;SHOW STATUS LIKE &#039;Threads_connected&#039;;&quot;\n\n# \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\nmysql -u root -p -e &quot;\nSELECT \n    user,\n    host,\n    db,\n    command,\n    time,\n    state\nFROM information_schema.processlist\nWHERE command != &#039;Sleep&#039;\nORDER BY time DESC;&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-4\"  class=\"wp-block-heading\">1.2 \u041e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# notify_maintenance.sh\n\necho &quot;&#091;$(date)] Setting MySQL to read-only mode...&quot;\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c read-only\nmysql -u root -p -e &quot;SET GLOBAL read_only = ON;&quot;\nmysql -u root -p -e &quot;SET GLOBAL super_read_only = ON;&quot;\n\necho &quot;MySQL now in read-only mode&quot;\necho &quot;Waiting 30 seconds for applications to complete...&quot;\n\n# \u041f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439\nsleep 30\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\nACTIVE_TRX=$(mysql -u root -p -N -e &quot;\n    SELECT COUNT(*) \n    FROM information_schema.innodb_trx;&quot;)\n\nif &#091; &quot;$ACTIVE_TRX&quot; -gt 0 ]; then\n    echo &quot;\u26a0\ufe0f  Warning: $ACTIVE_TRX active transactions still running&quot;\n    mysql -u root -p -e &quot;SELECT * FROM information_schema.innodb_trx\\G&quot;\nelse\n    echo &quot;\u2705 No active transactions&quot;\nfi\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-5\"  class=\"wp-block-heading\">1.3 Graceful shutdown<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# graceful_shutdown.sh\n\necho &quot;&#091;$(date)] Stopping MySQL gracefully...&quot;\n\n# \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\nsudo systemctl stop mysql\n\n# \u0416\u0434\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\nsleep 5\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\nif systemctl is-active --quiet mysql; then\n    echo &quot;\u274c MySQL still running, forcing stop...&quot;\n    sudo systemctl kill mysql\n    sleep 3\nfi\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432\nif ps aux | grep -v grep | grep mysqld; then\n    echo &quot;\u274c MySQL processes still exist!&quot;\n    exit 1\nelse\n    echo &quot;\u2705 MySQL stopped successfully&quot;\nfi\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432\nif sudo netstat -tlnp | grep 3306; then\n    echo &quot;\u274c Port 3306 still in use!&quot;\nelse\n    echo &quot;\u2705 Port 3306 is free&quot;\nfi\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-6\"  class=\"wp-block-heading\">1.4 \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 snapshot \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# final_snapshot.sh\n\nSNAPSHOT_DIR=&quot;\/backup\/mysql_final_snapshot&quot;\nDATE=$(date +%Y%m%d_%H%M%S)\n\necho &quot;&#091;$(date)] Creating final snapshot...&quot;\n\n# \u0421\u043e\u0437\u0434\u0430\u0442\u044c snapshot \u0434\u0430\u043d\u043d\u044b\u0445\nsudo rsync -av --progress \\\n    \/var\/lib\/mysql\/ \\\n    &quot;$SNAPSHOT_DIR\/data_$DATE\/&quot;\n\n# Snapshot \u043b\u043e\u0433\u043e\u0432\nsudo rsync -av \\\n    \/var\/log\/mysql\/ \\\n    &quot;$SNAPSHOT_DIR\/logs_$DATE\/&quot;\n\necho &quot;&#091;$(date)] Snapshot completed: $SNAPSHOT_DIR&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-7\"  class=\"wp-block-heading\">2. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 MySQL<\/h2>\n\n\n\n<h3 id=\"rtoc-8\"  class=\"wp-block-heading\">2.1 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 A: \u041f\u043e\u043b\u043d\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 (\u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# remove_mysql.sh\n\necho &quot;\u26a0\ufe0f  WARNING: This will remove MySQL completely!&quot;\nread -p &quot;Are you sure? (yes\/no): &quot; CONFIRM\n\nif &#091; &quot;$CONFIRM&quot; != &quot;yes&quot; ]; then\n    echo &quot;Aborted&quot;\n    exit 1\nfi\n\n# Ubuntu\/Debian\nsudo apt remove --purge mysql-server mysql-client mysql-common -y\nsudo apt autoremove -y\nsudo apt autoclean -y\n\n# \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e - \u041e\u0421\u0422\u041e\u0420\u041e\u0416\u041d\u041e!)\nread -p &quot;Remove configs? This will delete \/etc\/mysql\/ (yes\/no): &quot; REMOVE_CONF\nif &#091; &quot;$REMOVE_CONF&quot; = &quot;yes&quot; ]; then\n    sudo rm -rf \/etc\/mysql\/\nfi\n\n# \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u041e\u0427\u0415\u041d\u042c \u041e\u0421\u0422\u041e\u0420\u041e\u0416\u041d\u041e!)\nread -p &quot;Remove data? This will delete \/var\/lib\/mysql\/ (yes\/no): &quot; REMOVE_DATA\nif &#091; &quot;$REMOVE_DATA&quot; = &quot;yes&quot; ]; then\n    sudo rm -rf \/var\/lib\/mysql\/\nfi\n\n# \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b\nsudo deluser mysql 2&gt;\/dev\/null\nsudo delgroup mysql 2&gt;\/dev\/null\n\necho &quot;\u2705 MySQL removed&quot;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u26a0\ufe0f \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u0418 \u0412\u0410\u0416\u041d\u041e:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041d\u0415 \u0443\u0434\u0430\u043b\u044f\u0439\u0442\u0435 <code class=\"\" data-line=\"\">\/var\/lib\/mysql\/<\/code> \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 in-place upgrade<\/li>\n\n\n\n<li>\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0431\u044d\u043a\u0430\u043f\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b!<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-9\"  class=\"wp-block-heading\">2.2 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 B: \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# disable_mysql.sh\n\necho &quot;&#091;$(date)] Disabling MySQL without removal...&quot;\n\n# \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\nsudo systemctl stop mysql\nsudo systemctl disable mysql\n\n# \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438)\nsudo mv \/usr\/bin\/mysql \/usr\/bin\/mysql.disabled\nsudo mv \/usr\/sbin\/mysqld \/usr\/sbin\/mysqld.disabled\n\necho &quot;\u2705 MySQL disabled&quot;\necho &quot;To re-enable: mv \/usr\/bin\/mysql.disabled \/usr\/bin\/mysql&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-10\"  class=\"wp-block-heading\">2.3 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 C: In-place upgrade (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# prepare_inplace_upgrade.sh\n\necho &quot;&#091;$(date)] Preparing for in-place upgrade...&quot;\n\n# \u0422\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c MySQL, \u041d\u0415 \u0443\u0434\u0430\u043b\u044f\u0442\u044c\nsudo systemctl stop mysql\nsudo systemctl disable mysql\n\n# \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0440\u043a\u0435\u0440\nsudo touch \/var\/lib\/mysql\/.mariadb_upgrade_in_progress\n\n# \u041d\u0415 \u0443\u0434\u0430\u043b\u044f\u0442\u044c:\n# - \/var\/lib\/mysql\/ (\u0434\u0430\u043d\u043d\u044b\u0435)\n# - \/etc\/mysql\/ (\u043a\u043e\u043d\u0444\u0438\u0433\u0438)\n# - \u041f\u0430\u043a\u0435\u0442\u044b MySQL\n\necho &quot;\u2705 Ready for in-place upgrade&quot;\necho &quot;MariaDB will migrate data automatically&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-11\"  class=\"wp-block-heading\">3. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f MariaDB<\/h2>\n\n\n\n<h3 id=\"rtoc-12\"  class=\"wp-block-heading\">3.1 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# setup_mariadb_repo.sh\n\necho &quot;&#091;$(date)] Setting up MariaDB repository...&quot;\n\n# \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 MariaDB Foundation\ncurl -LsS https:\/\/r.mariadb.com\/downloads\/mariadb_repo_setup | sudo bash\n\nif &#091; $? -eq 0 ]; then\n    echo &quot;\u2705 MariaDB repository configured&quot;\n    apt-cache policy mariadb-server\nelse\n    echo &quot;\u274c Repository setup failed!&quot;\n    exit 1\nfi\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-13\"  class=\"wp-block-heading\">3.2 \u0420\u0443\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (Ubuntu 22.04)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# manual_repo_setup.sh\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c prerequisites\nsudo apt install -y \\\n    software-properties-common \\\n    dirmngr \\\n    apt-transport-https \\\n    ca-certificates \\\n    gnupg\n\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c GPG \u043a\u043b\u044e\u0447\nsudo mkdir -p \/etc\/apt\/keyrings\ncurl -o \/etc\/apt\/keyrings\/mariadb-keyring.pgp \\\n    &#039;https:\/\/mariadb.org\/mariadb_release_signing_key.pgp&#039;\n\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MariaDB 10.11 (LTS)\nsudo tee \/etc\/apt\/sources.list.d\/mariadb.list &lt;&lt; EOF\n# MariaDB 10.11 LTS Repository\ndeb &#091;signed-by=\/etc\/apt\/keyrings\/mariadb-keyring.pgp] https:\/\/mirror.mephi.ru\/mariadb\/repo\/10.11\/ubuntu jammy main\nEOF\n\n# \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\nsudo apt update\n\necho &quot;\u2705 MariaDB repository added&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-14\"  class=\"wp-block-heading\">3.3 \u0412\u044b\u0431\u043e\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 MariaDB<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0412\u0435\u0440\u0441\u0438\u044f<\/th><th>\u0421\u0442\u0430\u0442\u0443\u0441<\/th><th>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e<\/th><th>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/th><\/tr><\/thead><tbody><tr><td><strong>10.6<\/strong><\/td><td>LTS<\/td><td>2026-07<\/td><td>Production (\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f)<\/td><\/tr><tr><td><strong>10.11<\/strong><\/td><td>LTS<\/td><td>2028-02<\/td><td><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f<\/strong><\/td><\/tr><tr><td><strong>11.0<\/strong><\/td><td>Stable<\/td><td>2024-06<\/td><td>Short-term<\/td><\/tr><tr><td><strong>11.4<\/strong><\/td><td>LTS<\/td><td>2029-05<\/td><td>Production (\u043d\u043e\u0432\u0435\u0439\u0448\u0430\u044f)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f:<\/strong> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 MariaDB 10.11 \u0434\u043b\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\nsudo apt install mariadb-server-10.11\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-15\"  class=\"wp-block-heading\">4. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h2>\n\n\n\n<h3 id=\"rtoc-16\"  class=\"wp-block-heading\">4.1 \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# install_dependencies.sh\n\necho &quot;&#091;$(date)] Installing system dependencies...&quot;\n\nsudo apt update\n\n# \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\nsudo apt install -y \\\n    software-properties-common \\\n    dirmngr \\\n    apt-transport-https \\\n    ca-certificates \\\n    gnupg \\\n    lsb-release \\\n    wget \\\n    curl\n\n# \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b\nsudo apt install -y \\\n    mytop \\\n    percona-toolkit \\\n    sysbench \\\n    htop \\\n    iotop \\\n    nethogs \\\n    net-tools \\\n    rsync \\\n    gzip \\\n    pigz\n\necho &quot;\u2705 Dependencies installed&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-17\"  class=\"wp-block-heading\">5. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h2>\n\n\n\n<h3 id=\"rtoc-18\"  class=\"wp-block-heading\">5.1 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# prepare_filesystem.sh\n\necho &quot;&#091;$(date)] Preparing filesystem...&quot;\n\n# \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438\nsudo mkdir -p \/var\/lib\/mysql\nsudo mkdir -p \/var\/log\/mariadb\nsudo mkdir -p \/var\/run\/mysqld\nsudo mkdir -p \/etc\/mysql\/mariadb.conf.d\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\nsudo chown -R mysql:mysql \/var\/lib\/mysql 2&gt;\/dev\/null || true\nsudo chown -R mysql:mysql \/var\/log\/mariadb\nsudo chown -R mysql:mysql \/var\/run\/mysqld\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430\nsudo chmod 750 \/var\/lib\/mysql\nsudo chmod 755 \/var\/log\/mariadb\nsudo chmod 755 \/var\/run\/mysqld\n\necho &quot;\u2705 Filesystem prepared&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-19\"  class=\"wp-block-heading\">5.2 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u0414\u043b\u044f production \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f XFS \u0438\u043b\u0438 ext4\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0424\u0421\ndf -Th \/var\/lib\/mysql\n\n# \u0414\u043b\u044f XFS (\u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c)\nsudo mkfs.xfs -f \/dev\/sdb1\nsudo mount -o noatime,nodiratime,nobarrier \/dev\/sdb1 \/var\/lib\/mysql\n\n# \u0414\u043b\u044f ext4\nsudo tune2fs -o journal_data_writeback \/dev\/sdb1\nsudo mount -o noatime,nodiratime,data=writeback \/dev\/sdb1 \/var\/lib\/mysql\n\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \/etc\/fstab\necho &quot;\/dev\/sdb1 \/var\/lib\/mysql xfs noatime,nodiratime,nobarrier 0 0&quot; | \\\n    sudo tee -a \/etc\/fstab\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-20\"  class=\"wp-block-heading\">5.3 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 swap (\u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# configure_swap.sh\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 swap\nfree -h\n\n# \u0415\u0441\u043b\u0438 swap \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043c\u0430\u043b, \u0441\u043e\u0437\u0434\u0430\u0442\u044c swap \u0444\u0430\u0439\u043b\nSWAP_SIZE=&quot;8G&quot;  # \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\n\nsudo fallocate -l $SWAP_SIZE \/swapfile\nsudo chmod 600 \/swapfile\nsudo mkswap \/swapfile\nsudo swapon \/swapfile\n\n# \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \/etc\/fstab\necho &#039;\/swapfile none swap sw 0 0&#039; | sudo tee -a \/etc\/fstab\n\n# \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c swappiness (\u043c\u0435\u043d\u044c\u0448\u0435 = \u043c\u0435\u043d\u044c\u0448\u0435 swap)\nsudo sysctl vm.swappiness=10\necho &#039;vm.swappiness=10&#039; | sudo tee -a \/etc\/sysctl.conf\n\necho &quot;\u2705 Swap configured: $SWAP_SIZE&quot;\nfree -h\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-21\"  class=\"wp-block-heading\">6. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432<\/h2>\n\n\n\n<h3 id=\"rtoc-22\"  class=\"wp-block-heading\">6.1 \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u0434\u043b\u044f MySQL<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# configure_limits.sh\n\n# \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043b\u0438\u043c\u0438\u0442\u043e\u0432\nsudo tee \/etc\/security\/limits.d\/mysql.conf &lt;&lt; EOF\n# MySQL\/MariaDB system limits\nmysql soft nofile 65535\nmysql hard nofile 65535\nmysql soft nproc 65535\nmysql hard nproc 65535\nmysql soft memlock unlimited\nmysql hard memlock unlimited\nEOF\n\necho &quot;\u2705 System limits configured&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-23\"  class=\"wp-block-heading\">6.2 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 systemd \u043b\u0438\u043c\u0438\u0442\u043e\u0432<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# configure_systemd_limits.sh\n\n# \u0421\u043e\u0437\u0434\u0430\u0442\u044c override \u0434\u043b\u044f MariaDB service\nsudo mkdir -p \/etc\/systemd\/system\/mariadb.service.d\/\n\nsudo tee \/etc\/systemd\/system\/mariadb.service.d\/limits.conf &lt;&lt; EOF\n&#091;Service]\nLimitNOFILE=infinity\nLimitMEMLOCK=infinity\nLimitNPROC=infinity\nEOF\n\n# \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c systemd\nsudo systemctl daemon-reload\n\necho &quot;\u2705 Systemd limits configured&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-24\"  class=\"wp-block-heading\">6.3 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f kernel \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# optimize_kernel.sh\n\nsudo tee -a \/etc\/sysctl.conf &lt;&lt; EOF\n\n# === MariaDB Kernel Optimization ===\n\n# \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043b\u0438\u043c\u0438\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432\nfs.file-max = 2097152\n\n# \u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438\nnet.core.somaxconn = 4096\nnet.core.netdev_max_backlog = 5000\nnet.ipv4.tcp_max_syn_backlog = 4096\n\n# TCP \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\nnet.ipv4.tcp_fin_timeout = 15\nnet.ipv4.tcp_keepalive_time = 300\nnet.ipv4.tcp_keepalive_probes = 5\nnet.ipv4.tcp_keepalive_intvl = 15\n\n# Shared memory\nkernel.shmmax = 68719476736\nkernel.shmall = 4294967296\n\n# Swappiness (\u043c\u0435\u043d\u044c\u0448\u0435 = \u043c\u0435\u043d\u044c\u0448\u0435 swap)\nvm.swappiness = 10\n\nEOF\n\n# \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\nsudo sysctl -p\n\necho &quot;\u2705 Kernel parameters optimized&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-25\"  class=\"wp-block-heading\">7. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438 \u0438 firewall<\/h2>\n\n\n\n<h3 id=\"rtoc-26\"  class=\"wp-block-heading\">7.1 Firewall (UFW)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# configure_firewall_ufw.sh\n\necho &quot;&#091;$(date)] Configuring UFW firewall...&quot;\n\n# \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c SSH (\u0432\u0430\u0436\u043d\u043e!)\nsudo ufw allow 22\/tcp\n\n# \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c MariaDB \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439\nsudo ufw allow from 192.168.1.0\/24 to any port 3306 proto tcp comment &#039;MariaDB&#039;\n\n# \u0418\u043b\u0438 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432\nsudo ufw allow from 192.168.1.100 to any port 3306 proto tcp comment &#039;App Server 1&#039;\nsudo ufw allow from 192.168.1.101 to any port 3306 proto tcp comment &#039;App Server 2&#039;\n\n# \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c firewall\nsudo ufw --force enable\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\nsudo ufw status numbered\n\necho &quot;\u2705 Firewall configured&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-27\"  class=\"wp-block-heading\">7.2 Firewall (iptables)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# configure_firewall_iptables.sh\n\n# \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c MariaDB \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438\nsudo iptables -A INPUT -p tcp -s 192.168.1.0\/24 --dport 3306 \\\n    -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT\n\n# \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u0440\u0442\u0443 3306\nsudo iptables -A INPUT -p tcp --dport 3306 -j DROP\n\n# \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\nsudo iptables-save | sudo tee \/etc\/iptables\/rules.v4\n\necho &quot;\u2705 iptables configured&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-28\"  class=\"wp-block-heading\">8. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h2>\n\n\n\n<h3 id=\"rtoc-29\"  class=\"wp-block-heading\">8.1 \u041a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# system_readiness_check.sh\n\necho &quot;===== MariaDB Migration Readiness Check =====&quot;\n\n# 1. \u0414\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\necho -e &quot;\\n1. Disk Space:&quot;\ndf -h \/var\/lib\/mysql\n\nAVAILABLE_GB=$(df -BG \/var\/lib\/mysql | tail -1 | awk &#039;{print $4}&#039; | sed &#039;s\/G\/\/&#039;)\nif &#091; &quot;$AVAILABLE_GB&quot; -lt 50 ]; then\n    echo &quot;\u26a0\ufe0f  Warning: Less than 50GB available&quot;\nelse\n    echo &quot;\u2705 Sufficient disk space ($AVAILABLE_GB GB)&quot;\nfi\n\n# 2. \u041f\u0430\u043c\u044f\u0442\u044c\necho -e &quot;\\n2. Memory:&quot;\nfree -h\n\nTOTAL_RAM_GB=$(free -g | grep Mem | awk &#039;{print $2}&#039;)\nif &#091; &quot;$TOTAL_RAM_GB&quot; -lt 4 ]; then\n    echo &quot;\u26a0\ufe0f  Warning: Less than 4GB RAM&quot;\nelse\n    echo &quot;\u2705 Sufficient RAM ($TOTAL_RAM_GB GB)&quot;\nfi\n\n# 3. \u041f\u043e\u0440\u0442 3306\necho -e &quot;\\n3. Port 3306:&quot;\nif sudo netstat -tlnp | grep -q &#039;:3306&#039;; then\n    echo &quot;\u274c Port 3306 is ALREADY IN USE!&quot;\n    sudo netstat -tlnp | grep &#039;:3306&#039;\nelse\n    echo &quot;\u2705 Port 3306 is available&quot;\nfi\n\n# 4. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MariaDB\necho -e &quot;\\n4. MariaDB Repository:&quot;\nif apt-cache policy mariadb-server | grep -q &#039;mariadb.org&#039;; then\n    echo &quot;\u2705 MariaDB repository configured&quot;\n    apt-cache policy mariadb-server | grep -A1 &quot;Candidate:&quot;\nelse\n    echo &quot;\u274c MariaDB repository NOT found&quot;\nfi\n\n# 5. \u0411\u044d\u043a\u0430\u043f\u044b\necho -e &quot;\\n5. Backup Verification:&quot;\nBACKUP_COUNT=$(find \/backup\/mysql -name &quot;*.sql.gz&quot; -type f 2&gt;\/dev\/null | wc -l)\nif &#091; &quot;$BACKUP_COUNT&quot; -gt 0 ]; then\n    echo &quot;\u2705 Found $BACKUP_COUNT backup(s)&quot;\n    ls -lht \/backup\/mysql\/*.sql.gz 2&gt;\/dev\/null | head -3\nelse\n    echo &quot;\u274c No backups found in \/backup\/mysql\/&quot;\nfi\n\n# 6. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b\necho -e &quot;\\n6. System Limits:&quot;\nif &#091; &quot;$(ulimit -n)&quot; -ge 65535 ]; then\n    echo &quot;\u2705 Open files limit OK ($(ulimit -n))&quot;\nelse\n    echo &quot;\u26a0\ufe0f  Warning: Open files limit too low ($(ulimit -n))&quot;\nfi\n\n# 7. MySQL \u0441\u0442\u0430\u0442\u0443\u0441\necho -e &quot;\\n7. MySQL Status:&quot;\nif systemctl is-active --quiet mysql 2&gt;\/dev\/null; then\n    echo &quot;\u26a0\ufe0f  WARNING: MySQL is still running!&quot;\n    echo &quot;Run: sudo systemctl stop mysql&quot;\nelse\n    echo &quot;\u2705 MySQL is stopped&quot;\nfi\n\n# 8. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\necho -e &quot;\\n8. Dependencies:&quot;\nMISSING=0\nfor pkg in curl wget rsync gzip; do\n    if ! command -v $pkg &amp;&gt; \/dev\/null; then\n        echo &quot;\u274c Missing: $pkg&quot;\n        MISSING=$((MISSING + 1))\n    fi\ndone\n\nif &#091; $MISSING -eq 0 ]; then\n    echo &quot;\u2705 All dependencies installed&quot;\nfi\n\necho -e &quot;\\n===== Check Complete =====&quot;\n\n# \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\necho -e &quot;\\nSystem Status:&quot;\nif &#091; &quot;$AVAILABLE_GB&quot; -ge 50 ] &amp;&amp; &#091; &quot;$TOTAL_RAM_GB&quot; -ge 4 ] &amp;&amp; \\\n   &#091; &quot;$BACKUP_COUNT&quot; -gt 0 ] &amp;&amp; &#091; $MISSING -eq 0 ]; then\n    echo &quot;\u2705 System is READY for MariaDB installation&quot;\n    exit 0\nelse\n    echo &quot;\u26a0\ufe0f  System has warnings. Review above and fix issues.&quot;\n    exit 1\nfi\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-30\"  class=\"wp-block-heading\">\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0433\u043b\u0430\u0432\u044b<\/h2>\n\n\n\n<h3 id=\"rtoc-31\"  class=\"wp-block-heading\">\u2705 \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] MySQL \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d<\/li>\n\n\n\n<li>[ ] MySQL \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\/\u0443\u0434\u0430\u043b\u0435\u043d (\u0432\u044b\u0431\u0440\u0430\u043d \u043c\u0435\u0442\u043e\u0434)<\/li>\n\n\n\n<li>[ ] \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MariaDB \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d<\/li>\n\n\n\n<li>[ ] \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b<\/li>\n\n\n\n<li>[ ] \u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0430<\/li>\n\n\n\n<li>[ ] \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b<\/li>\n\n\n\n<li>[ ] Firewall \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d<\/li>\n\n\n\n<li>[ ] \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430<\/li>\n\n\n\n<li>[ ] \u041f\u043e\u0440\u0442 3306 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d<\/li>\n\n\n\n<li>[ ] \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 50GB)<\/li>\n\n\n\n<li>[ ] \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e RAM (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 4GB)<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-32\"  class=\"wp-block-heading\">\ud83d\udccb \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/th><th>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/th><th>\u0421\u0442\u0430\u0442\u0443\u0441<\/th><\/tr><\/thead><tbody><tr><td>Open files limit<\/td><td>65535<\/td><td>\u2610<\/td><\/tr><tr><td>Swap size<\/td><td>8GB<\/td><td>\u2610<\/td><\/tr><tr><td>vm.swappiness<\/td><td>10<\/td><td>\u2610<\/td><\/tr><tr><td>Firewall rules<\/td><td>Configured<\/td><td>\u2610<\/td><\/tr><tr><td>MariaDB repo<\/td><td>Added<\/td><td>\u2610<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-33\"  class=\"wp-block-heading\">\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/claude.ai\/chat\/04-install-mariadb.md\">\u2192 \u0413\u041b\u0410\u0412\u0410 4: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MariaDB Server<\/a><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 MariaDB<\/li>\n\n\n\n<li>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a<\/li>\n\n\n\n<li>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/li>\n\n\n\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 root \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u0426\u0435\u043b\u044c \u0433\u043b\u0430\u0432\u044b: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MariaDB<\/p>\n","protected":false},"author":1,"featured_media":3721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[971,967],"tags":[975,976,973,972,974],"class_list":["post-3718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-971","category---mysql--mariadb","tag-db","tag-dba","tag-mariadb","tag-mysql","tag-974"],"acf":[],"_links":{"self":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/comments?post=3718"}],"version-history":[{"count":1,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3718\/revisions"}],"predecessor-version":[{"id":3900,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3718\/revisions\/3900"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/media\/3721"}],"wp:attachment":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/media?parent=3718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/categories?post=3718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/tags?post=3718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}