{"id":73446,"date":"2020-03-09T20:41:59","date_gmt":"2020-03-09T17:41:59","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya"},"modified":"2020-03-09T20:41:59","modified_gmt":"2020-03-09T17:41:59","slug":"pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya","title":{"rendered":"Varf\u00f6r kan halvsynkron replikation beh\u00f6vas?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Hej allihop. Det h\u00e4r \u00e4r Vladislav Rodin. F\u00f6r n\u00e4rvarande undervisar jag p\u00e5 plattformen OTUS kurser som handlar om programvaruarkitektur och programvaruarkitektur som uts\u00e4tts f\u00f6r h\u00f6g belastning. <b>Inf\u00f6r starten av den nya kursomg\u00e5ngen <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jvDY\/\">\u00bbArkitekt f\u00f6r h\u00f6g belastning\u00ab<\/a><\/noindex> har jag beslutat att skriva ett litet originalmaterial som jag vill dela med er.<\/b><\/i><\/p>\n<p><img decoding=\"async\" alt=\"Varf\u00f6r kan halvsynkron replikation beh\u00f6vas?\" src=\"\/wp-content\/uploads\/2020\/03\/c2a1ea514249f8fca1ab9f668a899981.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Introduktion<\/h2>\n<p>\nEftersom en HDD endast kan utf\u00f6ra cirka 400-700 operationer per sekund (vilket \u00e4r o\u00e4ndligt l\u00e4gre \u00e4n de typiska rps som kr\u00e4vs f\u00f6r h\u00f6gbelastade system), \u00e4r den klassiska diskbaserade databasen en flaskhals i arkitekturen. D\u00e4rf\u00f6r \u00e4r det viktigt att s\u00e4rskilt beakta m\u00f6nster f\u00f6r skalning av denna lagring.<\/p>\n<p>F\u00f6r n\u00e4rvarande finns det tv\u00e5 m\u00f6nster f\u00f6r att skala databasen: replikation och sharding. Sharding g\u00f6r det m\u00f6jligt att skala skrivoperationen och, som f\u00f6ljd, minska den rps som skrivs till en server i din kluster. Replikation g\u00f6r samma sak men med l\u00e4soperationer. Denna artikel \u00e4gnas just detta m\u00f6nster.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Replikation<\/h2>\n<p>\nOm man ser replikation p\u00e5 en helt \u00f6vergripande niv\u00e5, \u00e4r det en enkel sak: du hade en server, d\u00e4r data lagrades, och sedan klarade inte denna server av belastningen vid l\u00e4sning av dessa data. Du l\u00e4gger till n\u00e5gra fler servrar, synkroniserar data p\u00e5 alla servrar, och anv\u00e4ndare kan l\u00e4sa fr\u00e5n vilken server som helst i ditt kluster. <\/p>\n<p>Trots den till synes enkla strukturen finns det flera s\u00e4tt att klassificera olika implementeringar av detta schema:<\/p>\n<ul>\n<li>Efter roller i klustret (master-master eller master-slave)<\/li>\n<li>Efter \u00f6verf\u00f6rda objekt (row-based, statement-based eller mixed)<\/li>\n<li>Efter mekanismen f\u00f6r nodsynkronisering<\/li>\n<\/ul>\n<p>\nIdag ska vi fokusera p\u00e5 just den tredje punkten. <\/p>\n<h2>Hur en transaktion kommittas<\/h2>\n<p>\nDetta \u00e4mne \u00e4r direkt relaterat till replikation, en separat artikel kan skrivas om det, men eftersom f\u00f6rst\u00e5elsen f\u00f6r hur transaktioner kommittas \u00e4r avg\u00f6rande f\u00f6r att l\u00e4sa vidare, l\u00e5t mig p\u00e5minna om de mest grundl\u00e4ggande delarna. Kommitt\u00e9n av transaktionen sker i tre steg:<\/p>\n<ol>\n<li>Skriva transaktionen till databasens logg.<\/li>\n<li>Till\u00e4mpa transaktionen i databasens motor.<\/li>\n<li>Skicka bekr\u00e4ftelse till klienten om att transaktionen har till\u00e4mpats framg\u00e5ngsrikt.<\/li>\n<\/ol>\n<p>\nI olika databaser kan det uppst\u00e5 nyanser i denna algoritm: till exempel har MySQL:s InnoDB-motor 2 loggar: en f\u00f6r replikering (binary log) och en annan f\u00f6r att uppr\u00e4tth\u00e5lla ACID (undo\/redolog), medan PostgreSQL har en logg som utf\u00f6r b\u00e5da funktionerna (write ahead log = WAL). Men ovan har den allm\u00e4nna konceptet presenterats, vilket g\u00f6r det m\u00f6jligt att ignorera s\u00e5dana nyanser.<\/p>\n<h2>Synchronous (sync) replikering<\/h2>\n<p>\nL\u00e5t oss l\u00e4gga till logik f\u00f6r replikering av de erh\u00e5llna \u00e4ndringarna i algoritmen f\u00f6r transaktionscommit:<\/p>\n<ol>\n<li>Skriva transaktionen till databasens logg.<\/li>\n<li>Till\u00e4mpa transaktionen i databasens motor.<\/li>\n<li><b>Skicka data till alla repliker.<\/b><\/li>\n<li><b>Ta emot bekr\u00e4ftelse fr\u00e5n alla repliker om att transaktionen har genomf\u00f6rts.<\/b><\/li>\n<li>Skicka bekr\u00e4ftelse till klienten om att transaktionen har till\u00e4mpats framg\u00e5ngsrikt.<\/li>\n<\/ol>\n<p>\nMed denna metod f\u00e5r vi ett antal nackdelar: <\/p>\n<ul>\n<li>klienten v\u00e4ntar p\u00e5 att \u00e4ndringarna ska till\u00e4mpas p\u00e5 alla repliker.<\/li>\n<li>med en \u00f6kning av antalet noder i klustret minskar vi sannolikheten f\u00f6r att skrivoperationen lyckas.<\/li>\n<\/ul>\n<p>\nOm f\u00f6rsta punkten \u00e4r mer eller mindre klar, s\u00e5 \u00e4r anledningarna till den andra punkten v\u00e4rda att f\u00f6rklara. Om vi inte f\u00e5r svar fr\u00e5n minst en nod vid synkroniserad replikering, rullar vi tillbaka transaktionen. D\u00e4rmed, genom att \u00f6ka antalet noder i klustret, \u00f6kar du sannolikheten f\u00f6r att skrivoperationen misslyckas. <\/p>\n<p>Kan vi v\u00e4nta p\u00e5 bekr\u00e4ftelse endast fr\u00e5n en viss andel av noderna, till exempel fr\u00e5n 51% (kvorum)? Ja, det kan vi, men i det klassiska fallet kr\u00e4vs bekr\u00e4ftelse fr\u00e5n alla noder, eftersom det \u00e4r s\u00e5 vi kan s\u00e4kerst\u00e4lla full konsistens av data i klustret, vilket utan tvekan \u00e4r en f\u00f6rdel med denna typ av replikering.<\/p>\n<h2>Asynkron (async) replikering<\/h2>\n<p>\nL\u00e5t oss f\u00f6r\u00e4ndra den tidigare algoritmen. Vi kommer att skicka data till repliker \"n\u00e5gon g\u00e5ng senare\", och \"n\u00e5gon g\u00e5ng senare\" kommer \u00e4ndringarna att till\u00e4mpas p\u00e5 replikerna:<\/p>\n<ol>\n<li>Skriva transaktionen till databasens logg.<\/li>\n<li>Till\u00e4mpa transaktionen i databasens motor.<\/li>\n<li>Skicka bekr\u00e4ftelse till klienten om att transaktionen har till\u00e4mpats framg\u00e5ngsrikt.<\/li>\n<li><b>Skicka data till replikerna och till\u00e4mpa \u00e4ndringarna.<\/b><\/li>\n<\/ol>\n<p>\nDenna metod resulterar i att klustret arbetar snabbt, eftersom vi inte h\u00e5ller klienten i v\u00e4ntan medan data n\u00e5r repliker och \u00e4nnu m\u00e5ste bli kommittade.<\/p>\n<p>Men villkoret f\u00f6r att skicka data till repliker \"n\u00e5gon g\u00e5ng senare\" kan leda till att transaktionen g\u00e5r f\u00f6rlorad, inklusive en bekr\u00e4ftad transaktion f\u00f6r anv\u00e4ndaren, eftersom om data inte hinner replikeras och bekr\u00e4ftelse har skickats till klienten om att operationen har genomf\u00f6rts men noden, som fick \u00e4ndringarna, har en h\u00e5rddisk som kraschar, f\u00f6rlorar vi transaktionen, vilket kan leda till mycket otrevliga konsekvenser.<\/p>\n<h2>Halvsynkron (semisync) replikering<\/h2>\n<p>\n\u00c4ntligen har vi kommit till den semisynkrona replikeringen. Denna typ av replikering \u00e4r inte s\u00e4rskilt k\u00e4nd och spridd, men den \u00e4r intressant eftersom den kan f\u00f6rena f\u00f6rdelarna med b\u00e5de synkron och asynkron replikering.<\/p>\n<p>L\u00e5t oss f\u00f6rs\u00f6ka kombinera de tv\u00e5 tidigare tillv\u00e4gag\u00e5ngss\u00e4tten. Vi ska inte h\u00e5lla kunden f\u00f6r l\u00e4nge, men kr\u00e4va att data replikeras:<\/p>\n<ol>\n<li>Skriva transaktionen till databasens logg.<\/li>\n<li>Till\u00e4mpa transaktionen i databasens motor.<\/li>\n<li><b>Skickar data till repliker.<\/b><\/li>\n<li><b>Mottar bekr\u00e4ftelse fr\u00e5n repliken om att \u00e4ndringar har tagits emot (de kommer att till\u00e4mpas \"n\u00e5gon g\u00e5ng senare\").<\/b><\/li>\n<li>Skicka bekr\u00e4ftelse till klienten om att transaktionen har till\u00e4mpats framg\u00e5ngsrikt.<\/li>\n<\/ol>\n<p>\nObservera att med denna algoritm kan transaktionsf\u00f6rlust endast intr\u00e4ffa om b\u00e5de noden som tar emot \u00e4ndringar och repliknodens fallerar. Sannolikheten f\u00f6r en s\u00e5dan st\u00f6rning bed\u00f6ms som l\u00e5g, och dessa risker accepteras. <\/p>\n<p>Men med detta tillv\u00e4gag\u00e5ngss\u00e4tt finns det en risk f\u00f6r sp\u00f6kl\u00e4sningar. T\u00e4nk er f\u00f6ljande scenario: vid steg 4 fick vi ingen bekr\u00e4ftelse fr\u00e5n n\u00e5gon replik. Vi m\u00e5ste \u00e5terkalla denna transaktion och inte returnera en bekr\u00e4ftelse till kunden. Eftersom data till\u00e4mpades i steg 2, finns det ett tidsintervall mellan slutet av steg 2 och \u00e5terkallandet av transaktionen, under vilket parallella transaktioner kan se de f\u00f6r\u00e4ndringar som inte borde finnas i databasen. <\/p>\n<h2>F\u00f6rlustfri semisynkron replikering<\/h2>\n<p>\nOm man t\u00e4nker lite kan man bara byta steg i algoritmen f\u00f6r att \u00e5tg\u00e4rda problemet med sp\u00f6kl\u00e4sningar i detta scenario:<\/p>\n<ol>\n<li>Skriva transaktionen till databasens logg.<\/li>\n<li><b>Skickar data till repliken.<\/b><\/li>\n<li><b>Mottar bekr\u00e4ftelse fr\u00e5n repliken om att \u00e4ndringar har tagits emot (de kommer att till\u00e4mpas \"n\u00e5gon g\u00e5ng senare\").<\/b><\/li>\n<li>Till\u00e4mpa transaktionen i databasens motor.<\/li>\n<li>Skicka bekr\u00e4ftelse till klienten om att transaktionen har till\u00e4mpats framg\u00e5ngsrikt.<\/li>\n<\/ol>\n<p>\nNu kommittar vi \u00e4ndringar endast om de har replikeras. <\/p>\n<h2>Utdata<\/h2>\n<p>\nSom alltid finns det inga perfekta l\u00f6sningar, det finns en upps\u00e4ttning l\u00f6sningar, var och en med sina egna f\u00f6rdelar och nackdelar och som passar f\u00f6r olika klassers uppgifter. Detta g\u00e4ller \u00e4ven valet av mekanism f\u00f6r datasykronisering av den replikerade databasen. Upps\u00e4ttningen f\u00f6rdelar som semisynkron replikering har \u00e4r tillr\u00e4ckligt solid och intressant f\u00f6r att den ska erk\u00e4nnas som v\u00e4rd uppm\u00e4rksamhet, trots att den \u00e4r lite spridd.<\/p>\n<p><b>Det \u00e4r allt f\u00f6r nu. Vi ses p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jvDY\/\">kurs<\/a><\/noindex>!<\/b><br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/491106\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 OTUS \u043a\u0443\u0440\u0441\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u00bb \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 HDD \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 400-700 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":73447,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-73446","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 OTUS \u043a\u0443\u0440\u0441\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 OTUS \u043a\u0443\u0440\u0441\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-09T17:41:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-09T17:41:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Varf\u00f6r kan semisynkron replikering vara n\u00f6dv\u00e4ndig? | ProHoster","description":"Hej allihop. Det h\u00e4r \u00e4r Vladislav Rodin. F\u00f6r n\u00e4rvarande undervisar jag p\u00e5 plattformen OTUS kurser som handlar om programvaruarkitektur och programvaruarkitektur som uts\u00e4tts f\u00f6r h\u00f6g belastning.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 OTUS \u043a\u0443\u0440\u0441\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/pochemu-mozhet-ponadobitsya-polusinhronnaya-replikacziya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-09T17:41:59+00:00","article:modified_time":"2020-03-09T17:41:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"73446","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:50:08","updated":"2022-09-28 11:57:57","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/73446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=73446"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/73446\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/73447"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=73446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=73446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=73446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}