{"id":3707,"date":"2025-11-01T05:09:53","date_gmt":"2025-11-01T03:09:53","guid":{"rendered":"https:\/\/ru.davidka.net\/ru\/?p=3707"},"modified":"2025-11-03T19:42:07","modified_gmt":"2025-11-03T17:42:07","slug":"%d0%bc%d0%b8%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-mysql-%d0%bd%d0%b0-mariadb-%d0%b8%d0%bd%d0%b2%d0%b5%d0%bd%d1%82%d0%b0%d1%80%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d0%b8-%d0%b0%d1%83%d0%b4%d0%b8%d1%82","status":"publish","type":"post","link":"https:\/\/ru.davidka.net\/ru\/%D0%93%D0%9B%D0%90%D0%92%D0%90-1-%D0%98%D0%BD%D0%B2%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B0%D1%83%D0%B4%D0%B8%D1%82-%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 1: \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0430\u0443\u0434\u0438\u0442 \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\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 MySQL \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/claude.ai\/chat\/00-INDEX.md\">\u2190 \u041d\u0430\u0437\u0430\u0434 \u043a \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u044e<\/a> | <a href=\"https:\/\/claude.ai\/chat\/02-backup.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=\"3707\" 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. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-3\">1.1 \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-4\">1.2 \u0427\u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-5\">\ud83d\udcca \u0414\u0430\u043d\u043d\u044b\u0435<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-6\">\ud83d\udc65 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-7\">\ud83d\udd27 \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-8\">\u2699\ufe0f \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-9\">\ud83d\udcc8 \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-10\">\ud83d\udd17 \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-11\">1.3 \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-12\">1.4 \u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-13\">2. \u0410\u0443\u0434\u0438\u0442 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-14\">2.1 \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-15\">\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-16\">\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0441 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-17\">2.2 \u0410\u043d\u0430\u043b\u0438\u0437 storage engines<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-18\">\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c storage engines<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-19\">2.3 \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-20\">\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-21\">\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0435\u0437 primary key (\u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430)<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-22\">2.4 \u0410\u043d\u0430\u043b\u0438\u0437 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-23\">\u041d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-24\">\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-25\">2.5 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0411\u0414<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-26\">2.6 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-27\">3. \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-28\">3.1 \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-29\">3.2 \u0410\u043d\u0430\u043b\u0438\u0437 authentication plugins<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-30\">3.3 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-31\">\u041c\u0435\u0442\u043e\u0434 1: \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-32\">\u041c\u0435\u0442\u043e\u0434 2: Percona Toolkit (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-33\">3.4 \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-34\">\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u043e\u043f\u0430\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-35\">3.5 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-36\">3.6 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-37\">4. \u0410\u043d\u0430\u043b\u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-38\">4.1 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f stored routines<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-39\">4.2 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 routines<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-40\">4.3 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DEFINER<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-41\">4.4 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-42\">4.5 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-43\">4.6 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f events (scheduled tasks)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-44\">4.7 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 views<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-45\">5. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-46\">5.1 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a><ul class=\"rtoc-mokuji mokuji_none level-3\"><li class=\"rtoc-item\"><a href=\"#rtoc-47\">Standalone (\u043d\u0435\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438)<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-48\">Master-Slave<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-49\">Master-Master<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-50\">Multi-Source Replication<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-51\">5.2 \u0410\u043d\u0430\u043b\u0438\u0437 Master \u0441\u0442\u0430\u0442\u0443\u0441\u0430<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-52\">5.3 \u0410\u043d\u0430\u043b\u0438\u0437 Slave \u0441\u0442\u0430\u0442\u0443\u0441\u0430<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-53\">5.4 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 GTID<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-54\">5.5 \u0410\u043d\u0430\u043b\u0438\u0437 binlog \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-55\">5.6 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a><\/li><\/ul><\/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%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#2-%D0%B0%D1%83%D0%B4%D0%B8%D1%82-%D0%B1%D0%B0%D0%B7-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85\">\u0410\u0443\u0434\u0438\u0442 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#3-%D0%B8%D0%BD%D0%B2%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%B9\">\u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#4-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D0%B8-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#5-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#6-%D0%B8%D0%BD%D0%B2%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8\">\u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#7-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">\u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/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%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9\">\u041f\u0440\u043e\u0432\u0435\u0440\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#9-%D0%BE%D1%86%D0%B5%D0%BD%D0%BA%D0%B0-%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8\">\u041e\u0446\u0435\u043d\u043a\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.ai\/chat\/20a0329c-0bd2-4a97-b9df-ad56eb4a2f7d#10-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%B0\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0442\u0447\u0435\u0442\u0430<\/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. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n\n\n\n<h3 id=\"rtoc-3\"  class=\"wp-block-heading\">1.1 \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e <strong>\u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/strong>. \u0411\u0435\u0437 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0440\u0438\u0441\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0432 \u0440\u0430\u0437\u044b.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0411\u0414:\n- \u0421 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439: 95% \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439\n- \u0411\u0435\u0437 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438: 60% \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439\n- \u0421\u0440\u0435\u0434\u043d\u0438\u0439 downtime \u0441 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439: 15 \u043c\u0438\u043d\u0443\u0442\n- \u0421\u0440\u0435\u0434\u043d\u0438\u0439 downtime \u0431\u0435\u0437 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438: 4+ \u0447\u0430\u0441\u0430\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-4\"  class=\"wp-block-heading\">1.2 \u0427\u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u043e\u043b\u043d\u0430\u044f \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442:<\/p>\n\n\n\n<h4 id=\"rtoc-5\"  class=\"wp-block-heading\">\ud83d\udcca \u0414\u0430\u043d\u043d\u044b\u0435<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n\n\n\n<li>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439<\/li>\n\n\n\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 storage engines<\/li>\n\n\n\n<li>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/li>\n\n\n\n<li>Foreign keys \u0438 constraints<\/li>\n<\/ul>\n\n\n\n<h4 id=\"rtoc-6\"  class=\"wp-block-heading\">\ud83d\udc65 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/li>\n\n\n\n<li>\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0438 \u0440\u043e\u043b\u0438<\/li>\n\n\n\n<li>Authentication plugins<\/li>\n\n\n\n<li>SSL\/TLS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/li>\n<\/ul>\n\n\n\n<h4 id=\"rtoc-7\"  class=\"wp-block-heading\">\ud83d\udd27 \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Stored procedures \u0438 functions<\/li>\n\n\n\n<li>Triggers<\/li>\n\n\n\n<li>Events (scheduled tasks)<\/li>\n\n\n\n<li>Views<\/li>\n\n\n\n<li>Partitioned tables<\/li>\n<\/ul>\n\n\n\n<h4 id=\"rtoc-8\"  class=\"wp-block-heading\">\u2699\ufe0f \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/li>\n\n\n\n<li>Performance variables<\/li>\n\n\n\n<li>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/li>\n\n\n\n<li>Plugin&#8217;\u044b<\/li>\n<\/ul>\n\n\n\n<h4 id=\"rtoc-9\"  class=\"wp-block-heading\">\ud83d\udcc8 \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/li>\n\n\n\n<li>\u0418\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/li>\n\n\n\n<li>Buffer pool \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430<\/li>\n\n\n\n<li>Connection patterns<\/li>\n<\/ul>\n\n\n\n<h4 id=\"rtoc-10\"  class=\"wp-block-heading\">\ud83d\udd17 \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/li>\n\n\n\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b<\/li>\n\n\n\n<li>External tools \u0438 utilities<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-11\"  class=\"wp-block-heading\">1.3 \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b MySQL\nwhich mysql mysqldump mysqladmin\n\n# Percona Toolkit (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)\nsudo apt install percona-toolkit -y\n\n# \u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0430\nsudo apt install -y \\\n    sysstat \\\n    htop \\\n    iotop \\\n    nethogs \\\n    mytop\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-12\"  class=\"wp-block-heading\">1.4 \u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u0442\u0430 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u0442-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\nCREATE USER &#039;audit&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;AuditPassword123!&#039;;\n\n-- \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0430\nGRANT SELECT ON *.* TO &#039;audit&#039;@&#039;localhost&#039;;\nGRANT PROCESS ON *.* TO &#039;audit&#039;@&#039;localhost&#039;;\nGRANT REPLICATION CLIENT ON *.* TO &#039;audit&#039;@&#039;localhost&#039;;\nGRANT SHOW DATABASES ON *.* TO &#039;audit&#039;@&#039;localhost&#039;;\nGRANT SHOW VIEW ON *.* TO &#039;audit&#039;@&#039;localhost&#039;;\n\n-- \u0414\u043b\u044f Performance Schema\nGRANT SELECT ON performance_schema.* TO &#039;audit&#039;@&#039;localhost&#039;;\nGRANT SELECT ON information_schema.* TO &#039;audit&#039;@&#039;localhost&#039;;\n\nFLUSH PRIVILEGES;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">mysql -u audit -p -e &quot;SHOW GRANTS FOR &#039;audit&#039;@&#039;localhost&#039;;&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-13\"  class=\"wp-block-heading\">2. \u0410\u0443\u0434\u0438\u0442 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n\n\n\n<h3 id=\"rtoc-14\"  class=\"wp-block-heading\">2.1 \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0448\u0430\u0433 \u2014 \u043f\u043e\u043d\u044f\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n\n\n\n<h4 id=\"rtoc-15\"  class=\"wp-block-heading\">\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    table_schema AS &#039;Database&#039;,\n    COUNT(*) AS &#039;Tables&#039;,\n    ROUND(SUM(data_length) \/ 1024 \/ 1024, 2) AS &#039;Data Size (MB)&#039;,\n    ROUND(SUM(index_length) \/ 1024 \/ 1024, 2) AS &#039;Index Size (MB)&#039;,\n    ROUND(SUM(data_length + index_length) \/ 1024 \/ 1024, 2) AS &#039;Total Size (MB)&#039;,\n    ROUND(SUM(data_free) \/ 1024 \/ 1024, 2) AS &#039;Free Space (MB)&#039;\nFROM information_schema.tables\nGROUP BY table_schema\nORDER BY SUM(data_length + index_length) DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">+--------------------+--------+----------------+-----------------+-----------------+------------------+\n| Database           | Tables | Data Size (MB) | Index Size (MB) | Total Size (MB) | Free Space (MB)  |\n+--------------------+--------+----------------+-----------------+-----------------+------------------+\n| production_db      | 234    | 38234.56       | 7443.76         | 45678.32        | 1234.50          |\n| analytics_db       | 89     | 10123.45       | 2222.22         | 12345.67        | 456.78           |\n| staging_db         | 234    | 4567.89        | 1111.01         | 5678.90         | 123.45           |\n| test_db            | 156    | 890.12         | 234.56          | 1124.68         | 45.67            |\n| information_schema | 79     | 0.00           | 0.00            | 0.16            | 0.00             |\n| mysql              | 31     | 1.89           | 0.59            | 2.48            | 0.00             |\n| performance_schema | 87     | 0.00           | 0.00            | 0.00            | 0.00             |\n+--------------------+--------+----------------+-----------------+-----------------+------------------+\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-16\"  class=\"wp-block-heading\">\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0441 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    table_schema AS &#039;Database&#039;,\n    COUNT(*) AS &#039;Tables&#039;,\n    ROUND(SUM(data_length) \/ 1024 \/ 1024, 2) AS &#039;Data (MB)&#039;,\n    ROUND(SUM(index_length) \/ 1024 \/ 1024, 2) AS &#039;Index (MB)&#039;,\n    ROUND(SUM(data_length + index_length) \/ 1024 \/ 1024, 2) AS &#039;Total (MB)&#039;,\n    ROUND(SUM(data_free) \/ 1024 \/ 1024, 2) AS &#039;Free (MB)&#039;,\n    ROUND(SUM(data_free) \/ NULLIF(SUM(data_length + index_length), 0) * 100, 2) AS &#039;Fragmentation %&#039;\nFROM information_schema.tables\nWHERE table_schema NOT IN (&#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;mysql&#039;, &#039;sys&#039;)\nGROUP BY table_schema\nORDER BY SUM(data_length + index_length) DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Fragmentation %<\/th><th>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/th><th>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435<\/th><\/tr><\/thead><tbody><tr><td>0-5%<\/td><td>\u041e\u0442\u043b\u0438\u0447\u043d\u043e<\/td><td>\u041d\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439<\/td><\/tr><tr><td>5-15%<\/td><td>\u0425\u043e\u0440\u043e\u0448\u043e<\/td><td>\u041c\u043e\u0436\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/td><\/tr><tr><td>15-30%<\/td><td>\u0421\u0440\u0435\u0434\u043d\u0435<\/td><td>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f OPTIMIZE<\/td><\/tr><tr><td>>30%<\/td><td>\u041f\u043b\u043e\u0445\u043e<\/td><td>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e OPTIMIZE \u043f\u0435\u0440\u0435\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"rtoc-17\"  class=\"wp-block-heading\">2.2 \u0410\u043d\u0430\u043b\u0438\u0437 storage engines<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0432\u0441\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 MariaDB.<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    engine AS &#039;Storage Engine&#039;,\n    COUNT(*) AS &#039;Tables&#039;,\n    ROUND(SUM(data_length) \/ 1024 \/ 1024, 2) AS &#039;Data (MB)&#039;,\n    ROUND(SUM(index_length) \/ 1024 \/ 1024, 2) AS &#039;Index (MB)&#039;,\n    ROUND(SUM(data_length + index_length) \/ 1024 \/ 1024, 2) AS &#039;Total (MB)&#039;,\n    ROUND(SUM(data_length + index_length) \/ SUM(SUM(data_length + index_length)) OVER () * 100, 2) AS &#039;Percentage %&#039;\nFROM information_schema.tables\nWHERE table_schema NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nGROUP BY engine\nORDER BY SUM(data_length + index_length) DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">+----------------+--------+-----------+------------+--------------+--------------+\n| Storage Engine | Tables | Data (MB) | Index (MB) | Total (MB)   | Percentage % |\n+----------------+--------+-----------+------------+--------------+--------------+\n| InnoDB         | 687    | 52345.67  | 10234.56   | 62580.23     | 98.45        |\n| MyISAM         | 23     | 890.12    | 123.45     | 1013.57      | 1.59         |\n| MEMORY         | 5      | 0.23      | 0.00       | 0.23         | 0.00         |\n| CSV            | 2      | 0.01      | 0.00       | 0.01         | 0.00         |\n+----------------+--------+-----------+------------+--------------+--------------+\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-18\"  class=\"wp-block-heading\">\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c storage engines<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Engine<\/th><th>MariaDB \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c<\/th><th>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f<\/th><\/tr><\/thead><tbody><tr><td><strong>InnoDB<\/strong><\/td><td>\u2705 \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/td><\/tr><tr><td><strong>MyISAM<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 InnoDB<\/td><\/tr><tr><td><strong>MEMORY (HEAP)<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/td><\/tr><tr><td><strong>CSV<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/td><\/tr><tr><td><strong>Archive<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/td><\/tr><tr><td><strong>Blackhole<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/td><\/tr><tr><td><strong>NDB (Cluster)<\/strong><\/td><td>\u274c \u041d\u0415 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c<\/td><td>\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430<\/td><\/tr><tr><td><strong>Federated<\/strong><\/td><td>\u2705 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c<\/td><td>\u0412 MariaDB \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f FederatedX<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u26a0\ufe0f \u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e:<\/strong> \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 NDB engine, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0430 MariaDB \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430. \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043d\u0430 MySQL Cluster, \u043b\u0438\u0431\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c NDB \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 InnoDB.<\/p>\n\n\n\n<h3 id=\"rtoc-19\"  class=\"wp-block-heading\">2.3 \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c<\/h3>\n\n\n\n<h4 id=\"rtoc-20\"  class=\"wp-block-heading\">\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    table_schema AS &#039;Database&#039;,\n    table_name AS &#039;Table&#039;,\n    engine AS &#039;Engine&#039;,\n    table_rows AS &#039;Row Count&#039;,\n    ROUND(data_length \/ 1024 \/ 1024, 2) AS &#039;Data (MB)&#039;,\n    ROUND(index_length \/ 1024 \/ 1024, 2) AS &#039;Index (MB)&#039;,\n    ROUND((data_length + index_length) \/ 1024 \/ 1024, 2) AS &#039;Total (MB)&#039;,\n    ROUND(data_free \/ 1024 \/ 1024, 2) AS &#039;Free (MB)&#039;,\n    ROUND(data_free \/ (data_length + index_length) * 100, 2) AS &#039;Frag %&#039;\nFROM information_schema.tables\nWHERE table_schema NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\n  AND table_type = &#039;BASE TABLE&#039;\nORDER BY (data_length + index_length) DESC\nLIMIT 20;\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-21\"  class=\"wp-block-heading\">\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0435\u0437 primary key (\u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430)<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    t.table_schema AS &#039;Database&#039;,\n    t.table_name AS &#039;Table&#039;,\n    t.engine AS &#039;Engine&#039;,\n    t.table_rows AS &#039;Rows&#039;,\n    ROUND((t.data_length + t.index_length) \/ 1024 \/ 1024, 2) AS &#039;Size (MB)&#039;\nFROM information_schema.tables t\nLEFT JOIN information_schema.statistics s \n    ON t.table_schema = s.table_schema \n    AND t.table_name = s.table_name \n    AND s.index_name = &#039;PRIMARY&#039;\nWHERE t.table_schema NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\n  AND t.table_type = &#039;BASE TABLE&#039;\n  AND s.index_name IS NULL\nORDER BY t.table_rows DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0435\u0437 PRIMARY KEY \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/li>\n\n\n\n<li>\u041c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 Galera Cluster<\/li>\n\n\n\n<li>\u0417\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u044e\u0442 point-in-time recovery<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f:<\/strong> \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 PRIMARY KEY \u043f\u0435\u0440\u0435\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">ALTER TABLE your_table ADD PRIMARY KEY (id);\n-- \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438:\nALTER TABLE your_table ADD COLUMN id BIGINT PRIMARY KEY AUTO_INCREMENT FIRST;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-22\"  class=\"wp-block-heading\">2.4 \u0410\u043d\u0430\u043b\u0438\u0437 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/h3>\n\n\n\n<h4 id=\"rtoc-23\"  class=\"wp-block-heading\">\u041d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    object_schema AS &#039;Database&#039;,\n    object_name AS &#039;Table&#039;,\n    index_name AS &#039;Index&#039;,\n    ROUND(stat_value * @@innodb_page_size \/ 1024 \/ 1024, 2) AS &#039;Index Size (MB)&#039;\nFROM mysql.innodb_index_stats\nWHERE stat_name = &#039;size&#039;\n  AND object_schema NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\n  AND index_name NOT IN (&#039;PRIMARY&#039;, &#039;GEN_CLUST_INDEX&#039;)\n  AND index_name NOT IN (\n      SELECT DISTINCT index_name\n      FROM performance_schema.table_io_waits_summary_by_index_usage\n      WHERE object_schema = innodb_index_stats.object_schema\n        AND object_name = innodb_index_stats.object_name\n        AND index_name = innodb_index_stats.index_name\n        AND count_star &gt; 0\n  )\nORDER BY stat_value DESC\nLIMIT 20;\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-24\"  class=\"wp-block-heading\">\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    s1.table_schema AS &#039;Database&#039;,\n    s1.table_name AS &#039;Table&#039;,\n    s1.index_name AS &#039;Index 1&#039;,\n    s2.index_name AS &#039;Index 2&#039;,\n    GROUP_CONCAT(s1.column_name ORDER BY s1.seq_in_index) AS &#039;Columns&#039;\nFROM information_schema.statistics s1\nJOIN information_schema.statistics s2 \n    ON s1.table_schema = s2.table_schema\n    AND s1.table_name = s2.table_name\n    AND s1.index_name &lt; s2.index_name\n    AND s1.column_name = s2.column_name\n    AND s1.seq_in_index = s2.seq_in_index\nWHERE s1.table_schema NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nGROUP BY s1.table_schema, s1.table_name, s1.index_name, s2.index_name\nHAVING COUNT(*) = (\n    SELECT COUNT(*) \n    FROM information_schema.statistics \n    WHERE table_schema = s1.table_schema \n      AND table_name = s1.table_name \n      AND index_name = s1.index_name\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f:<\/strong> \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0438 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u0435\u0440\u0435\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u2014 \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u0438\u043c\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n\n\n\n<h3 id=\"rtoc-25\"  class=\"wp-block-heading\">2.5 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0411\u0414<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u0441\u0435\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# export_database_structure.sh\n\nOUTPUT_DIR=&quot;.\/db_structure_$(date +%Y%m%d)&quot;\nmkdir -p &quot;$OUTPUT_DIR&quot;\n\n# \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445\nDATABASES=$(mysql -u audit -p -N -e &quot;\n    SELECT schema_name \n    FROM information_schema.schemata \n    WHERE schema_name NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;);\n&quot;)\n\n# \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u0430\u0437\u044b\nfor DB in $DATABASES; do\n    echo &quot;Exporting structure: $DB...&quot;\n    \n    mysqldump \\\n        --user=audit \\\n        --password \\\n        --no-data \\\n        --routines \\\n        --triggers \\\n        --events \\\n        --single-transaction \\\n        &quot;$DB&quot; &gt; &quot;$OUTPUT_DIR\/${DB}_structure.sql&quot;\n    \n    echo &quot;Exported: $DB&quot;\ndone\n\necho &quot;All database structures exported to: $OUTPUT_DIR&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-26\"  class=\"wp-block-heading\">2.6 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# create_database_inventory.sh\n\nOUTPUT_FILE=&quot;database_inventory_$(date +%Y%m%d).csv&quot;\n\nmysql -u audit -p -e &quot;\nSELECT \n    table_schema AS &#039;Database&#039;,\n    COUNT(*) AS &#039;Tables&#039;,\n    SUM(table_rows) AS &#039;Total Rows&#039;,\n    ROUND(SUM(data_length) \/ 1024 \/ 1024, 2) AS &#039;Data MB&#039;,\n    ROUND(SUM(index_length) \/ 1024 \/ 1024, 2) AS &#039;Index MB&#039;,\n    ROUND(SUM(data_length + index_length) \/ 1024 \/ 1024, 2) AS &#039;Total MB&#039;,\n    GROUP_CONCAT(DISTINCT engine) AS &#039;Engines&#039;\nFROM information_schema.tables\nWHERE table_schema NOT IN (&#039;information_schema&#039;, &#039;mysql&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nGROUP BY table_schema\nORDER BY SUM(data_length + index_length) DESC;\n&quot; | sed &#039;s\/\\t\/,\/g&#039; &gt; &quot;$OUTPUT_FILE&quot;\n\necho &quot;Inventory saved to: $OUTPUT_FILE&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-27\"  class=\"wp-block-heading\">3. \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/h2>\n\n\n\n<h3 id=\"rtoc-28\"  class=\"wp-block-heading\">3.1 \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    User AS &#039;Username&#039;,\n    Host AS &#039;Host&#039;,\n    plugin AS &#039;Auth Plugin&#039;,\n    password_expired AS &#039;Password Expired&#039;,\n    password_lifetime AS &#039;Password Lifetime&#039;,\n    account_locked AS &#039;Account Locked&#039;,\n    password_last_changed AS &#039;Password Changed&#039;,\n    authentication_string != &#039;&#039; AS &#039;Has Password&#039;\nFROM mysql.user\nORDER BY User, Host;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">+--------------+-------------+------------------------+------------------+-------------------+----------------+---------------------+--------------+\n| Username     | Host        | Auth Plugin            | Password Expired | Password Lifetime | Account Locked | Password Changed    | Has Password |\n+--------------+-------------+------------------------+------------------+-------------------+----------------+---------------------+--------------+\n| admin        | localhost   | mysql_native_password  | N                | NULL              | N              | 2025-10-15 10:30:00 | 1            |\n| app_user     | 192.168.1.% | mysql_native_password  | N                | NULL              | N              | 2025-10-20 14:22:00 | 1            |\n| backup       | localhost   | mysql_native_password  | N                | NULL              | N              | 2025-09-01 08:15:00 | 1            |\n| monitor      | localhost   | mysql_native_password  | N                | NULL              | N              | 2025-10-01 09:00:00 | 1            |\n| repl         | 10.0.0.%    | mysql_native_password  | N                | NULL              | N              | 2025-08-15 12:45:00 | 1            |\n| root         | localhost   | auth_socket            | N                | NULL              | N              | NULL                | 0            |\n+--------------+-------------+------------------------+------------------+-------------------+----------------+---------------------+--------------+\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-29\"  class=\"wp-block-heading\">3.2 \u0410\u043d\u0430\u043b\u0438\u0437 authentication plugins<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    plugin AS &#039;Auth Plugin&#039;,\n    COUNT(*) AS &#039;User Count&#039;,\n    GROUP_CONCAT(CONCAT(User, &#039;@&#039;, Host) SEPARATOR &#039;, &#039;) AS &#039;Users&#039;\nFROM mysql.user\nWHERE User != &#039;&#039;\nGROUP BY plugin\nORDER BY COUNT(*) DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Plugin MySQL<\/th><th>Plugin MariaDB<\/th><th>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c<\/th><th>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435<\/th><\/tr><\/thead><tbody><tr><td><code class=\"\" data-line=\"\">mysql_native_password<\/code><\/td><td><code class=\"\" data-line=\"\">mysql_native_password<\/code><\/td><td>\u2705 \u041f\u043e\u043b\u043d\u0430\u044f<\/td><td>\u041d\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">caching_sha2_password<\/code><\/td><td><code class=\"\" data-line=\"\">mysql_native_password<\/code><\/td><td>\u26a0\ufe0f \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f<\/td><td>\u041d\u0443\u0436\u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">auth_socket<\/code> \/ <code class=\"\" data-line=\"\">unix_socket<\/code><\/td><td><code class=\"\" data-line=\"\">unix_socket<\/code><\/td><td>\u2705 \u041f\u043e\u043b\u043d\u0430\u044f<\/td><td>\u041d\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">sha256_password<\/code><\/td><td>N\/A<\/td><td>\u274c \u041d\u0435\u0442<\/td><td>\u041d\u0443\u0436\u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code class=\"\" data-line=\"\">caching_sha2_password<\/code>:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u041d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\nSELECT User, Host \nFROM mysql.user \nWHERE plugin = &#039;caching_sha2_password&#039;;\n\n-- \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f)\nALTER USER &#039;username&#039;@&#039;host&#039; IDENTIFIED WITH mysql_native_password BY &#039;new_password&#039;;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-30\"  class=\"wp-block-heading\">3.3 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/h3>\n\n\n\n<h4 id=\"rtoc-31\"  class=\"wp-block-heading\">\u041c\u0435\u0442\u043e\u0434 1: \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# export_user_grants.sh\n\nOUTPUT_FILE=&quot;user_grants_$(date +%Y%m%d).sql&quot;\n\n# \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\nmysql -u audit -p -N -e &quot;\n    SELECT DISTINCT CONCAT(&#039;SHOW GRANTS FOR &#039;&#039;&#039;, User, &#039;&#039;&#039;@&#039;&#039;&#039;, Host, &#039;&#039;&#039;;&#039;) \n    FROM mysql.user \n    WHERE User NOT IN (&#039;root&#039;, &#039;mysql.sys&#039;, &#039;mysql.session&#039;, &#039;mysql.infoschema&#039;)\n      AND User != &#039;&#039;;\n&quot; | while read query; do\n    mysql -u root -p -N -e &quot;$query&quot; | sed &#039;s\/$\/;\/&#039;\ndone &gt; &quot;$OUTPUT_FILE&quot;\n\necho &quot;Grants exported to: $OUTPUT_FILE&quot;\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-32\"  class=\"wp-block-heading\">\u041c\u0435\u0442\u043e\u0434 2: Percona Toolkit (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u0411\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434\npt-show-grants \\\n    --host=localhost \\\n    --user=root \\\n    --ask-pass \\\n    &gt; user_grants_$(date +%Y%m%d).sql\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-33\"  class=\"wp-block-heading\">3.4 \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/h3>\n\n\n\n<h4 id=\"rtoc-34\"  class=\"wp-block-heading\">\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u043e\u043f\u0430\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 SUPER \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0435\u0439\nSELECT User, Host \nFROM mysql.user \nWHERE Super_priv = &#039;Y&#039; \n  AND User NOT IN (&#039;root&#039;);\n\n-- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a\u043e \u0432\u0441\u0435\u043c \u0431\u0430\u0437\u0430\u043c\nSELECT \n    User, \n    Host,\n    GROUP_CONCAT(DISTINCT Db) AS &#039;Databases&#039;\nFROM mysql.db\nWHERE Db = &#039;%&#039; OR Db = &#039;*&#039;\nGROUP BY User, Host;\n\n-- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043e\u0442\u043e\u0432\u0441\u044e\u0434\u0443\nSELECT User, Host\nFROM mysql.user\nWHERE Host = &#039;%&#039;\n  AND User != &#039;&#039;;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u044c\u0442\u0435 SUPER \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0430\u043c<\/li>\n\n\n\n<li>\u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 <code class=\"\" data-line=\"\">%<\/code> \u0432 Host &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 IP\/\u043f\u043e\u0434\u0441\u0435\u0442\u0438<\/li>\n\n\n\n<li>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/li>\n<\/ol>\n\n\n\n<h3 id=\"rtoc-35\"  class=\"wp-block-heading\">3.5 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u041c\u0430\u0442\u0440\u0438\u0446\u0430: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u2192 \u0431\u0430\u0437\u0430 \u2192 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438\nSELECT \n    CONCAT(User, &#039;@&#039;, Host) AS &#039;User@Host&#039;,\n    Db AS &#039;Database&#039;,\n    CONCAT(\n        IF(Select_priv = &#039;Y&#039;, &#039;SELECT &#039;, &#039;&#039;),\n        IF(Insert_priv = &#039;Y&#039;, &#039;INSERT &#039;, &#039;&#039;),\n        IF(Update_priv = &#039;Y&#039;, &#039;UPDATE &#039;, &#039;&#039;),\n        IF(Delete_priv = &#039;Y&#039;, &#039;DELETE &#039;, &#039;&#039;),\n        IF(Create_priv = &#039;Y&#039;, &#039;CREATE &#039;, &#039;&#039;),\n        IF(Drop_priv = &#039;Y&#039;, &#039;DROP &#039;, &#039;&#039;),\n        IF(Grant_priv = &#039;Y&#039;, &#039;GRANT &#039;, &#039;&#039;),\n        IF(Index_priv = &#039;Y&#039;, &#039;INDEX &#039;, &#039;&#039;),\n        IF(Alter_priv = &#039;Y&#039;, &#039;ALTER &#039;, &#039;&#039;)\n    ) AS &#039;Privileges&#039;\nFROM mysql.db\nWHERE User != &#039;&#039;\nORDER BY User, Host, Db;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-36\"  class=\"wp-block-heading\">3.6 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# document_users.sh\n\ncat &gt; user_documentation_$(date +%Y%m%d).md &lt;&lt; &#039;EOF&#039;\n# MySQL User Documentation\n\n## User Inventory\n\n| Username | Host | Purpose | Used By | Critical |\n|----------|------|---------|---------|----------|\nEOF\n\nmysql -u audit -p -N -e &quot;\nSELECT CONCAT(\n    &#039;| &#039;, User, \n    &#039; | &#039;, Host, \n    &#039; | &#091;PURPOSE] &#039;,\n    &#039; | &#091;APPS] &#039;,\n    &#039; | &#091;Y\/N] |&#039;\n)\nFROM mysql.user\nWHERE User NOT IN (&#039;root&#039;, &#039;mysql.sys&#039;, &#039;mysql.session&#039;, &#039;mysql.infoschema&#039;)\n  AND User != &#039;&#039;\nORDER BY User, Host;\n&quot; &gt;&gt; user_documentation_$(date +%Y%m%d).md\n\necho &quot;User documentation template created&quot;\necho &quot;Please fill in &#091;PURPOSE], &#091;APPS], and &#091;Y\/N] fields&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-37\"  class=\"wp-block-heading\">4. \u0410\u043d\u0430\u043b\u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/h2>\n\n\n\n<h3 id=\"rtoc-38\"  class=\"wp-block-heading\">4.1 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f stored routines<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    ROUTINE_SCHEMA AS &#039;Database&#039;,\n    ROUTINE_TYPE AS &#039;Type&#039;,\n    ROUTINE_NAME AS &#039;Name&#039;,\n    DTD_IDENTIFIER AS &#039;Returns&#039;,\n    IS_DETERMINISTIC AS &#039;Deterministic&#039;,\n    SQL_DATA_ACCESS AS &#039;Data Access&#039;,\n    DEFINER AS &#039;Definer&#039;,\n    CREATED AS &#039;Created&#039;,\n    LAST_ALTERED AS &#039;Modified&#039;\nFROM information_schema.ROUTINES\nWHERE ROUTINE_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nORDER BY ROUTINE_SCHEMA, ROUTINE_TYPE, ROUTINE_NAME;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">+---------------+-----------+----------------------+---------+---------------+-------------+-------------------+---------------------+---------------------+\n| Database      | Type      | Name                 | Returns | Deterministic | Data Access | Definer           | Created             | Modified            |\n+---------------+-----------+----------------------+---------+---------------+-------------+-------------------+---------------------+---------------------+\n| production_db | FUNCTION  | calculate_discount   | decimal | YES           | READS SQL   | admin@localhost   | 2024-05-12 10:30:00 | 2025-08-15 14:20:00 |\n| production_db | FUNCTION  | get_user_status      | varchar | NO            | READS SQL   | admin@localhost   | 2024-03-20 09:15:00 | 2024-03-20 09:15:00 |\n| production_db | PROCEDURE | cleanup_old_orders   | NULL    | NO            | MODIFIES    | admin@localhost   | 2024-06-01 11:00:00 | 2025-09-10 16:45:00 |\n| production_db | PROCEDURE | generate_report      | NULL    | NO            | READS SQL   | admin@localhost   | 2024-07-15 13:30:00 | 2025-10-01 10:00:00 |\n+---------------+-----------+----------------------+---------+---------------+-------------+-------------------+---------------------+---------------------+\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-39\"  class=\"wp-block-heading\">4.2 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 routines<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# export_routines.sh\n\nOUTPUT_DIR=&quot;.\/routines_$(date +%Y%m%d)&quot;\nmkdir -p &quot;$OUTPUT_DIR&quot;\n\n# \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437\nDATABASES=$(mysql -u audit -p -N -e &quot;\n    SELECT DISTINCT ROUTINE_SCHEMA\n    FROM information_schema.ROUTINES\n    WHERE ROUTINE_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;);\n&quot;)\n\nfor DB in $DATABASES; do\n    echo &quot;Exporting routines from: $DB...&quot;\n    \n    # \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439\n    mysqldump \\\n        --user=audit \\\n        --password \\\n        --no-create-info \\\n        --no-data \\\n        --routines \\\n        --skip-triggers \\\n        --databases &quot;$DB&quot; \\\n        &gt; &quot;$OUTPUT_DIR\/${DB}_routines.sql&quot;\ndone\n\necho &quot;Routines exported to: $OUTPUT_DIR&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-40\"  class=\"wp-block-heading\">4.3 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DEFINER<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 DEFINER \u2014 \u0447\u0430\u0441\u0442\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b\/\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 DEFINER&#039;\u0430\u043c\u0438\nSELECT \n    r.ROUTINE_SCHEMA AS &#039;Database&#039;,\n    r.ROUTINE_TYPE AS &#039;Type&#039;,\n    r.ROUTINE_NAME AS &#039;Name&#039;,\n    r.DEFINER AS &#039;Definer&#039;\nFROM information_schema.ROUTINES r\nLEFT JOIN mysql.user u \n    ON r.  &#039;@&#039;, u.Host)\nWHERE r.ROUTINE_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\n  AND u.User IS NULL\nORDER BY r.ROUTINE_SCHEMA, r.ROUTINE_NAME;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong> \u041f\u0435\u0440\u0435\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043b\u0438\u0431\u043e:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/li>\n\n\n\n<li>\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 DEFINER \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/li>\n\n\n\n<li>\u0423\u0434\u0430\u043b\u0438\u0442\u0435 DEFINER \u0438\u0437 \u0434\u0430\u043c\u043f\u0430 (\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c)<\/li>\n<\/ol>\n\n\n\n<h3 id=\"rtoc-41\"  class=\"wp-block-heading\">4.4 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    TRIGGER_SCHEMA AS &#039;Database&#039;,\n    TRIGGER_NAME AS &#039;Trigger&#039;,\n    EVENT_MANIPULATION AS &#039;Event&#039;,\n    EVENT_OBJECT_TABLE AS &#039;Table&#039;,\n    ACTION_TIMING AS &#039;Timing&#039;,\n    ACTION_STATEMENT AS &#039;Action&#039;,\n    DEFINER AS &#039;Definer&#039;,\n    CREATED AS &#039;Created&#039;\nFROM information_schema.TRIGGERS\nWHERE TRIGGER_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nORDER BY TRIGGER_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-42\"  class=\"wp-block-heading\">4.5 \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# export_triggers.sh\n\nOUTPUT_DIR=&quot;.\/triggers_$(date +%Y%m%d)&quot;\nmkdir -p &quot;$OUTPUT_DIR&quot;\n\nDATABASES=$(mysql -u audit -p -N -e &quot;\n    SELECT DISTINCT TRIGGER_SCHEMA\n    FROM information_schema.TRIGGERS\n    WHERE TRIGGER_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;);\n&quot;)\n\nfor DB in $DATABASES; do\n    echo &quot;Exporting triggers from: $DB...&quot;\n    \n    mysqldump \\\n        --user=audit \\\n        --password \\\n        --no-create-info \\\n        --no-data \\\n        --triggers \\\n        --skip-routines \\\n        --databases &quot;$DB&quot; \\\n        &gt; &quot;$OUTPUT_DIR\/${DB}_triggers.sql&quot;\ndone\n\necho &quot;Triggers exported to: $OUTPUT_DIR&quot;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-43\"  class=\"wp-block-heading\">4.6 \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f events (scheduled tasks)<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    EVENT_SCHEMA AS &#039;Database&#039;,\n    EVENT_NAME AS &#039;Event&#039;,\n    STATUS AS &#039;Status&#039;,\n    EVENT_TYPE AS &#039;Type&#039;,\n    EXECUTE_AT AS &#039;Execute At&#039;,\n    INTERVAL_VALUE AS &#039;Interval Value&#039;,\n    INTERVAL_FIELD AS &#039;Interval Unit&#039;,\n    STARTS AS &#039;Starts&#039;,\n    ENDS AS &#039;Ends&#039;,\n    ON_COMPLETION AS &#039;On Completion&#039;,\n    DEFINER AS &#039;Definer&#039;,\n    CREATED AS &#039;Created&#039;,\n    LAST_ALTERED AS &#039;Modified&#039;,\n    LAST_EXECUTED AS &#039;Last Executed&#039;\nFROM information_schema.EVENTS\nWHERE EVENT_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nORDER BY EVENT_SCHEMA, EVENT_NAME;\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-44\"  class=\"wp-block-heading\">4.7 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 views<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT \n    TABLE_SCHEMA AS &#039;Database&#039;,\n    TABLE_NAME AS &#039;View Name&#039;,\n    DEFINER AS &#039;Definer&#039;,\n    SECURITY_TYPE AS &#039;Security&#039;,\n    IS_UPDATABLE AS &#039;Updatable&#039;,\n    CHECK_OPTION AS &#039;Check Option&#039;\nFROM information_schema.VIEWS\nWHERE TABLE_SCHEMA NOT IN (&#039;mysql&#039;, &#039;information_schema&#039;, &#039;performance_schema&#039;, &#039;sys&#039;)\nORDER BY TABLE_SCHEMA, TABLE_NAME;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-45\"  class=\"wp-block-heading\">5. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/h2>\n\n\n\n<h3 id=\"rtoc-46\"  class=\"wp-block-heading\">5.1 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u2014 \u043f\u043e\u043d\u044f\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u043a\u0430\u043a\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f.<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 Master\nmysql -u audit -p -e &quot;SHOW MASTER STATUS\\G&quot;\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 Slave\nmysql -u audit -p -e &quot;SHOW SLAVE STATUS\\G&quot;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438:<\/strong><\/p>\n\n\n\n<h4 id=\"rtoc-47\"  class=\"wp-block-heading\">Standalone (\u043d\u0435\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438)<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502   MySQL     \u2502\n\u2502  Standalone \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-48\"  class=\"wp-block-heading\">Master-Slave<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502  Master \u2502\n\u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518\n     \u2502\n     \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n     \u25bc      \u25bc      \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Slave1 \u2502\u2502 Slave2 \u2502\u2502 Slave3 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-49\"  class=\"wp-block-heading\">Master-Master<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2190\u2192 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Master1 \u2502    \u2502 Master2 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre>\n\n\n\n<h4 id=\"rtoc-50\"  class=\"wp-block-heading\">Multi-Source Replication<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Master1 \u2502    \u2502 Master2 \u2502\n\u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518    \u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518\n     \u2502              \u2502\n     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n            \u25bc\n       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n       \u2502  Slave  \u2502\n       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-51\"  class=\"wp-block-heading\">5.2 \u0410\u043d\u0430\u043b\u0438\u0437 Master \u0441\u0442\u0430\u0442\u0443\u0441\u0430<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0415\u0441\u043b\u0438 \u044d\u0442\u043e Master \u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 master\nSHOW MASTER STATUS;\n\n-- \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 slave \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\nSHOW SLAVE HOSTS;\n\n-- Binary log \u0444\u0430\u0439\u043b\u044b\nSHOW BINARY LOGS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 SHOW MASTER STATUS:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">+--------------------+----------+--------------+------------------+-------------------+\n| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |\n+--------------------+----------+--------------+------------------+-------------------+\n| mysql-bin.000023   | 45678901 | production   |                  | uuid:1-1234567    |\n+--------------------+----------+--------------+------------------+-------------------+\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0412\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>File<\/strong>: \u0422\u0435\u043a\u0443\u0449\u0438\u0439 binlog \u0444\u0430\u0439\u043b<\/li>\n\n\n\n<li><strong>Position<\/strong>: \u041f\u043e\u0437\u0438\u0446\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435<\/li>\n\n\n\n<li><strong>Executed_Gtid_Set<\/strong>: \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f GTID<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-52\"  class=\"wp-block-heading\">5.3 \u0410\u043d\u0430\u043b\u0438\u0437 Slave \u0441\u0442\u0430\u0442\u0443\u0441\u0430<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0415\u0441\u043b\u0438 \u044d\u0442\u043e Slave \u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SHOW SLAVE STATUS\\G\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">*************************** 1. row ***************************\n               Slave_IO_State: Waiting for master to send event\n                  Master_Host: 192.168.1.100\n                  Master_User: repl\n                  Master_Port: 3306\n                Connect_Retry: 60\n              Master_Log_File: mysql-bin.000023\n          Read_Master_Log_Pos: 45678901\n               Relay_Log_File: mysql-relay-bin.000015\n                Relay_Log_Pos: 12345678\n        Relay_Master_Log_File: mysql-bin.000023\n             Slave_IO_Running: Yes                    \u2190 \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c Yes\n            Slave_SQL_Running: Yes                    \u2190 \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c Yes\n              Replicate_Do_DB: production,analytics\n          Replicate_Ignore_DB: \n           Replicate_Do_Table: \n       Replicate_Ignore_Table: \n      Replicate_Wild_Do_Table: \n  Replicate_Wild_Ignore_Table: \n                   Last_Errno: 0                       \u2190 \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 0\n                   Last_Error:                         \u2190 \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e\n                 Skip_Counter: 0\n          Exec_Master_Log_Pos: 45678901\n              Relay_Log_Space: 23456789\n        Seconds_Behind_Master: 0                       \u2190 \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 0 \u0438\u043b\u0438 \u043c\u0430\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e\n                Last_IO_Errno: 0\n                Last_IO_Error: \n               Last_SQL_Errno: 0\n               Last_SQL_Error: \n         Executed_Gtid_Set: uuid:1-1234567\n            Auto_Position: 1\n     Replicate_Rewrite_DB: \n             Channel_Name: \n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-53\"  class=\"wp-block-heading\">5.4 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 GTID<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">-- MySQL\nSELECT @@gtid_mode;\nSELECT @@gtid_executed;\n\n-- \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0432 GTID\nSELECT @@gtid_purged;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u26a0\ufe0f \u0412\u0430\u0436\u043d\u043e:<\/strong> MySQL \u0438 MariaDB \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <strong>\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 GTID!<\/p>\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>MySQL<\/th><th>MariaDB<\/th><th>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c<\/th><\/tr><\/thead><tbody><tr><td>GTID Format<\/td><td>UUID:transaction_id<\/td><td>domain-server-sequence<\/td><td>\u274c \u041d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e<\/td><\/tr><tr><td>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f<\/td><td><code class=\"\" data-line=\"\">gtid_mode<\/code><\/td><td><code class=\"\" data-line=\"\">gtid_strict_mode<\/code><\/td><td>\u0420\u0430\u0437\u043d\u044b\u0435<\/td><\/tr><tr><td>Executed<\/td><td><code class=\"\" data-line=\"\">@@gtid_executed<\/code><\/td><td><code class=\"\" data-line=\"\">@@gtid_current_pos<\/code><\/td><td>\u0420\u0430\u0437\u043d\u044b\u0435<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0421\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435:<\/strong> \u041d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c MariaDB slave&#8217;\u043e\u043c MySQL master&#8217;\u0430 \u0447\u0435\u0440\u0435\u0437 GTID. \u041d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c position-based \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e.<\/p>\n\n\n\n<h3 id=\"rtoc-54\"  class=\"wp-block-heading\">5.5 \u0410\u043d\u0430\u043b\u0438\u0437 binlog \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">SELECT @@binlog_format;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0422\u0438\u043f\u044b binlog \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Format<\/th><th>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/th><th>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f<\/th><\/tr><\/thead><tbody><tr><td><strong>STATEMENT<\/strong><\/td><td>\u041b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 SQL \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/td><td>\u0423\u0441\u0442\u0430\u0440\u0435\u043b\u043e, \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f<\/td><\/tr><tr><td><strong>ROW<\/strong><\/td><td>\u041b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a<\/td><td>\u2705 \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f<\/td><\/tr><tr><td><strong>MIXED<\/strong><\/td><td>\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f STATEMENT \u0438 ROW<\/td><td>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043d\u0435\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0414\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438:<\/strong> \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <strong>ROW<\/strong> \u0444\u043e\u0440\u043c\u0430\u0442 \u2014 \u043e\u043d \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d.<\/p>\n\n\n\n<h3 id=\"rtoc-55\"  class=\"wp-block-heading\">5.6 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#!\/bin\/bash\n# document_replication.sh\n\ncat &gt; replication_doc_$(date +%Y%m%d).md &lt;&lt; &#039;EOF&#039;\n# MySQL Replication Documentation\n\n## Topology\n&#091;\u041d\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e]\n\n## Master Configuration\nEOF\n\n# Master status\necho &quot;### Master Status&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\nmysql -u audit -p -e &quot;SHOW MASTER STATUS\\G&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\n\n# Slave status (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e slave)\necho -e &quot;\\n### Slave Status&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\nmysql -u audit -p -e &quot;SHOW SLAVE STATUS\\G&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\n\n# Binary log files\necho -e &quot;\\n### Binary Logs&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\nmysql -u audit -p -e &quot;SHOW BINARY LOGS;&quot; &gt;&gt; replication_doc_$(date +%Y%m%d).md\n\necho &quot;Replication documentation created&quot;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b&#8230;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>6. \u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<ol start=\"7\"><li>\u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/li><\/ol><ol start=\"8\"><li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/li><\/ol><ol start=\"9\"><li>\u041e\u0446\u0435\u043d\u043a\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438<\/li><\/ol>\n<ol start=\"10\" class=\"wp-block-list\">\n<li>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u0447\u0435\u0442\u0430<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0447\u0430\u0441\u0442\u0438 \u0413\u043b\u0430\u0432\u044b 1?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0426\u0435\u043b\u044c \u0433\u043b\u0430\u0432\u044b: \u041f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 MySQL \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/p>\n","protected":false},"author":1,"featured_media":3714,"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],"tags":[975,976,973,972,974],"class_list":["post-3707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-971","tag-db","tag-dba","tag-mariadb","tag-mysql","tag-974"],"acf":[],"_links":{"self":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3707","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=3707"}],"version-history":[{"count":0,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/media\/3714"}],"wp:attachment":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/media?parent=3707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/categories?post=3707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/tags?post=3707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}