{"id":2259,"date":"2018-08-27T11:53:02","date_gmt":"2018-08-27T11:53:02","guid":{"rendered":"http:\/\/dbtut.com\/?p=2259"},"modified":"2018-11-18T21:03:52","modified_gmt":"2018-11-18T21:03:52","slug":"logical-replication","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/","title":{"rendered":"Logical Replication"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Logical replication was introduced in PostgreSQL 10 and it is different from streaming replication in many ways as described below:<\/p>\n<ol>\n<li>\u00a0Logical replication works at the object level unlike streaming replication which works at the cluster level, so you can replicate individual tables as per requirements such as logging,analysis,backup, etc.<\/li>\n<li>Once you have decided which tables to replicate, you also have the flexibility to decide which operation (INSERT,UPDATE and DELETE) you want to be replicated, by default all operations will be replicated.<\/li>\n<li>WAL segments are preserved in case of master database crash so that as soon as the master is up, preserved WAL segments that have not been replicated because of crash are replicated to the standby database.<\/li>\n<li>Logical replication supports write queries on the standby database.<\/li>\n<li>Logical replication also supports cross version replication unlike streaming replication where both master and standby database need to be of same version.<\/li>\n<li>PostgreSQL 11 also supports replicating TRUNCATE commands which was not supported earlier.<\/li>\n<li>Logical replication is based on publish \u2013 subscribe model and one publisher can have multiple subscribers.<\/li>\n<\/ol>\n<p>Let us now see how to setup logical replication in PostgreSQL 10.<\/p>\n<p>This blog assumes that you have already installed PostgreSQL on two server, running on port 5444 with listen_addresses set to \u2018*\u2019 and ssh password-less communication is enabled between master and standby server\u00a0 for the OS user postgres. We will be replicating &#8220;authorities&#8221; relation from master to standby.<\/p>\n<h3><\/h3>\n<h3>On Master server<\/h3>\n<p><strong>Make below changes in the\u00a0<span class=\"skimlinks-unlinked\">postgresql.conf<\/span>\u00a0file:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">wal_level = replica\r\nmax_wal_senders=10<\/pre>\n<p>In PostgreSQL 10, default value for max_wal_senders is 10.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Add below entry in pg_hba file:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">host\u00a0 \u00a0 replication\u00a0 \u00a0 \u00a0 \u00a0 \u00a0all\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 standbyip\/32\u00a0 \u00a0 md5<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Restart master server:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">pg_ctl restart -mf -D \/opt\/PostgreSQL\/10\/data<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Create publication on master database for table authorities:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">create publication core_test_logical for table authorities;<\/pre>\n<p>&nbsp;<\/p>\n<h3>On Standby server<\/h3>\n<p><strong>Create table authorities with the same table name, same column names and data\u00a0<span class=\"skimlinks-unlinked\">types.You<\/span>\u00a0can add additional columns if required:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">create table authorities (username character varying(50),authority character varying(50));<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Create subscription on standby database for publication created on master database:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">CREATE SUBSCRIPTION core_sub_logical CONNECTION \u2018host=masterip dbname=core port=5444\u2019 PUBLICATION core_test_logical;<\/pre>\n<p>&nbsp;<\/p>\n<p>Once publication and subscriptions are created in master and standby databases respectively.Initially, using snapshot, data is loaded for table authorities from master to standby and from then on only incremental changes are replicated.<\/p>\n<p>&nbsp;<\/p>\n<h3>Checking Replication status<\/h3>\n<p><strong>Monitor replication on master database by running below command:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">postgres=# select * from pg_stat_replication;\r\npid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | writ\r\ne_lag | flush_lag | replay_lag | sync_priority | sync_state\r\n\u2014\u2014-+\u2014\u2014\u2014-+\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014\u2013+\u2014\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2013+\u2014\u2014\u2014\u2013+\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014+\u2014\u2013\r\n\u2014\u2014+\u2014\u2014\u2014\u2013+\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014\r\n24372 | 10 | postgres | core_sub_logical | 127.0.0.1 | | 48618 | 2018-02-26 12:19:46.347143+01 | | streaming | 0\/DC182F90 | 0\/DC182F90 | 0\/DC182F90 | 0\/DC182F90 |\r\n| | | 0 | async\r\n(1 row)<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Check the subscription status on standby by running below command:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">postgres=# select * from pg_stat_subscription;\r\nsubid | subname | pid | relid | received_lsn | last_msg_send_time | last_msg_receipt_time | latest_end_lsn | latest_end_time\r\n\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014\u2014+\u2014\u2014-+\u2014\u2014-+\u2014\u2014\u2014\u2014\u2013+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014-+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\r\n16388 | core_sub_logical | 24362 | | 0\/DC182F90 | 2018-02-26 12:21:50.74288+01 | 2018-02-26 12:21:50.742994+01 | 0\/DC182F90 | 2018-02-26 12:21:50.74288+01\r\n(1 row)<\/pre>\n<p>Thank you!<\/p>\n\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2259\" class=\"pvc_stats all  \" data-element-id=\"2259\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Logical replication was introduced in PostgreSQL 10 and it is different from streaming replication in many ways as described below: \u00a0Logical replication works at the object level unlike streaming replication which works at the cluster level, so you can replicate individual tables as per requirements such as logging,analysis,backup, etc. Once you have decided which &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2259\" class=\"pvc_stats all  \" data-element-id=\"2259\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":187,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[5],"tags":[193],"class_list":["post-2259","post","type-post","status-publish","format-standard","","category-postgres","tag-postgresql-replication"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Logical Replication - Database Tutorials<\/title>\n<meta name=\"description\" content=\"Logical Replication On PostgreSQL\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Logical Replication - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"Logical Replication On PostgreSQL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-27T11:53:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-18T21:03:52+00:00\" \/>\n<meta name=\"author\" content=\"Nikhil Shetty\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nikhil Shetty\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\"},\"author\":{\"name\":\"Nikhil Shetty\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/0054c26c53be5bfa29d6e01e197c961c\"},\"headline\":\"Logical Replication\",\"datePublished\":\"2018-08-27T11:53:02+00:00\",\"dateModified\":\"2018-11-18T21:03:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\"},\"wordCount\":378,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"keywords\":[\"PostgreSQL Replication\"],\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\",\"name\":\"Logical Replication - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"datePublished\":\"2018-08-27T11:53:02+00:00\",\"dateModified\":\"2018-11-18T21:03:52+00:00\",\"description\":\"Logical Replication On PostgreSQL\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Logical Replication\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/0054c26c53be5bfa29d6e01e197c961c\",\"name\":\"Nikhil Shetty\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1cf1c5df060fc6969d2a08f5c426276804e904ed856c9eefa152126397e6bd17?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1cf1c5df060fc6969d2a08f5c426276804e904ed856c9eefa152126397e6bd17?s=96&d=mm&r=g\",\"caption\":\"Nikhil Shetty\"},\"url\":\"https:\/\/dbtut.com\/index.php\/author\/nikhilshetty\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Logical Replication - Database Tutorials","description":"Logical Replication On PostgreSQL","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/","og_locale":"en_US","og_type":"article","og_title":"Logical Replication - Database Tutorials","og_description":"Logical Replication On PostgreSQL","og_url":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/","og_site_name":"Database Tutorials","article_published_time":"2018-08-27T11:53:02+00:00","article_modified_time":"2018-11-18T21:03:52+00:00","author":"Nikhil Shetty","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nikhil Shetty","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/"},"author":{"name":"Nikhil Shetty","@id":"https:\/\/dbtut.com\/#\/schema\/person\/0054c26c53be5bfa29d6e01e197c961c"},"headline":"Logical Replication","datePublished":"2018-08-27T11:53:02+00:00","dateModified":"2018-11-18T21:03:52+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/"},"wordCount":378,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"keywords":["PostgreSQL Replication"],"articleSection":["PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/","url":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/","name":"Logical Replication - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"datePublished":"2018-08-27T11:53:02+00:00","dateModified":"2018-11-18T21:03:52+00:00","description":"Logical Replication On PostgreSQL","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/27\/logical-replication\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"Logical Replication"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/0054c26c53be5bfa29d6e01e197c961c","name":"Nikhil Shetty","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1cf1c5df060fc6969d2a08f5c426276804e904ed856c9eefa152126397e6bd17?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1cf1c5df060fc6969d2a08f5c426276804e904ed856c9eefa152126397e6bd17?s=96&d=mm&r=g","caption":"Nikhil Shetty"},"url":"https:\/\/dbtut.com\/index.php\/author\/nikhilshetty\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/2259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/187"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=2259"}],"version-history":[{"count":0,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/2259\/revisions"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=2259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=2259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=2259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}