{"id":10125,"date":"2017-05-25T12:37:48","date_gmt":"2017-05-25T10:37:48","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/"},"modified":"2023-06-08T16:34:52","modified_gmt":"2023-06-08T14:34:52","slug":"postgresql-10-beta-1-logical-replication","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/","title":{"rendered":"PostgreSQL 10 Beta 1: Logical replication"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>In a previous <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-native-table-partitioning\/\" target=\"_blank\" rel=\"noopener\"> blog <\/a> we talked about partition in postgreSQL 10 Beta 1. In this article we will talk about another new feature logical replication. Yes in postgreSQL 10, logical replication is now impelemented. We can replicate one table or many tables.<br \/>\nIn our example we are replicating between two clusters in the same server. The primary cluster is running on port 5432 and the second on port 5433. But of course we an use different servers.<\/p>\n<p>In this example we replicate table article on the primary cluster to the second cluster.<br \/>\n<code><br \/>\n[postgres@pgservertools pgdata10]$ psql<br \/>\npsql (10beta1)<br \/>\nType \"help\" for help.<br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# create table article(idart int primary key,name varchar(10), quantity int);<br \/>\nCREATE TABLE<br \/>\npostgres=#<br \/>\n<\/code><br \/>\nThe first step is to set on the primary cluster the parameter wal_level to logical in the postgresql.conf file<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# show wal_level;<br \/>\nwal_level<br \/>\n-----------<br \/>\nlogical<br \/>\n(1 row)<br \/>\n<\/code><br \/>\nThe next step is to create a publication on the primary cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# CREATE PUBLICATION mypub FOR TABLE article;<br \/>\nCREATE PUBLICATION<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>We can then verify using following commands<br \/>\n<code>postgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=#  dRp[+]<br \/>\nPublication mypub<br \/>\nInserts | Updates | Deletes<br \/>\n---------+---------+---------<br \/>\nt       | t       | t<br \/>\nTables:<br \/>\n\"public.article\"<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p><code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=#  dRp<br \/>\nList of publications<br \/>\nName  |  Owner   | Inserts | Updates | Deletes<br \/>\n-------+----------+---------+---------+---------<br \/>\nmypub | postgres | t       | t       | t<br \/>\n(1 row)<br \/>\n<\/code><\/p>\n<p>On the primary cluster we also need to create a user to use for the replication.<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n--<br \/>\npostgres=# create user rep replication login connection limit 1 encrypted  password 'root';<br \/>\nCREATE ROLE<br \/>\npostgres=#<br \/>\n<\/code><br \/>\nAnd still in the primary cluster we need to adjust the pg_hba.conf to allow connection.<br \/>\n<code>host    replication     rep             127.0.0.1\/32            trust<\/code><br \/>\nAnd let\u2019s insert some data in the table article on the primary server<br \/>\n<code>postgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table article;<br \/>\nidart | name | quantity<br \/>\n-------+------+----------<br \/>\n1 | art1 |       20<br \/>\n2 | art2 |       20<br \/>\n3 | art3 |       20<br \/>\n4 | art4 |       20<br \/>\n(4 rows)<br \/>\n<\/code><\/p>\n<p>Now we have to configure the secondary cluster. First the table article need to be created<br \/>\n<code><br \/>\npostgres=# show port<br \/>\npostgres-# ;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# create table article(idart int primary key,name varchar(10), quantity int);<br \/>\nCREATE TABLE<br \/>\npostgres=#<br \/>\n<\/code><br \/>\nThe second step on the secondary cluster is to create a subscription. In this subscription we reference the publication we created and connection info to use.<br \/>\n<code><br \/>\npostgres=# show port<br \/>\npostgres-# ;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# CREATE SUBSCRIPTION mysub CONNECTION 'dbname=postgres host=localhost user=rep port=5432' PUBLICATION mypub;<br \/>\nNOTICE:  synchronized table states<br \/>\nNOTICE:  created replication slot \"mysub\" on publisher<br \/>\nCREATE SUBSCRIPTION<br \/>\n<\/code><\/p>\n<p>Now the 2 tables article should be synchronized. But in my case the first time I query the table article in the secondary cluster, it was empty.<br \/>\n<code><br \/>\npostgres=# show port<br \/>\npostgres-# ;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table article;<br \/>\nidart | name | quantity<br \/>\n-------+------+----------<br \/>\n(0 rows)<br \/>\n<\/code><\/p>\n<p>Looking on alert log file, I see following messages. Seems that connection limit was reached for user rep (remember I created it with connection limit 1).<br \/>\n<code><br \/>\n2017-05-19 14:44:43.576 CEST [6808] LOG:  starting logical replication worker for subscription \"mysub\"<br \/>\n2017-05-19 14:44:43.579 CEST [7783] LOG:  logical replication apply for subscription mysub started<br \/>\n2017-05-19 14:44:43.582 CEST [7783] LOG:  starting logical replication worker for subscription \"mysub\"<br \/>\n2017-05-19 14:44:43.586 CEST [7785] LOG:  logical replication sync for subscription mysub, table article started<br \/>\n2017-05-19 14:44:43.589 CEST [7785] ERROR:  could not connect to the publisher: FATAL:  too many connections for role \"rep\"<br \/>\n2017-05-19 14:44:43.589 CEST [6800] LOG:  worker process: logical replication worker for subscription 16394 sync 16389 (PID 7785) exited with exit code 1<br \/>\n<\/code><br \/>\nI just increase the limit using following command on the primary cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# alter user rep login connection limit 18;<br \/>\nALTER ROLE<br \/>\n<\/code><\/p>\n<p>But querying again the table article on the secondary cluster, I see that it is still empty. Looking again in the alert file, I see<br \/>\n<code><br \/>\n2017-05-19 14:46:44.657 CEST [7783] LOG:  starting logical replication worker for subscription \"mysub\"<br \/>\n2017-05-19 14:46:44.667 CEST [7955] LOG:  logical replication sync for subscription mysub, table article started<br \/>\n2017-05-19 14:46:44.753 CEST [7955] ERROR:  could not start initial contents copy for table \"public.article\": ERROR:  permission denied for relation article<br \/>\n2017-05-19 14:46:44.754 CEST [6800] LOG:  worker process: logical replication worker for subscription 16394 sync 16389 (PID 7955) exited with exit code 1<br \/>\n<\/code><\/p>\n<p>Seems that user rep cannot access table article. I resolve this issue by just granting privilege on article to rep.<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table article;<br \/>\nidart | name | quantity<br \/>\n-------+------+----------<br \/>\n1 | art1 |       20<br \/>\n2 | art2 |       20<br \/>\n3 | art3 |       20<br \/>\n4 | art4 |       20<br \/>\n(4 rows)<br \/>\n<\/code><\/p>\n<p>To test that the replication is working fine, we insert a line in the primary cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# insert into article values (5,'art5',256);<br \/>\nINSERT 0 1<br \/>\npostgres=#<br \/>\n<\/code><br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table article;<br \/>\nidart | name | quantity<br \/>\n-------+------+----------<br \/>\n1 | art1 |       20<br \/>\n2 | art2 |       20<br \/>\n3 | art3 |       20<br \/>\n4 | art4 |       20<br \/>\n5 | art5 |      256<br \/>\n(5 rows)<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>From the secondary cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table article;<br \/>\nidart | name | quantity<br \/>\n-------+------+----------<br \/>\n1 | art1 |       20<br \/>\n2 | art2 |       20<br \/>\n3 | art3 |       20<br \/>\n4 | art4 |       20<br \/>\n5 | art5 |      256<br \/>\n(5 rows)<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>We are going now to replicate a second table customers from the primary cluster to the second cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# create table customers (idcust int,custname varchar(10), location varchar(10));<br \/>\nCREATE TABLE<br \/>\npostgres=# grant all on customers to rep;<br \/>\nGRANT<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>Let\u2019s create the table on the second cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# create table customers (idcust int,custname varchar(10), location varchar(10));<br \/>\nCREATE TABLE<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>We have to edit the publication and to add the new table customers. The command ALTER PUBLICATION is used<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# alter publication mypub add table customers;<br \/>\nALTER PUBLICATION<br \/>\n<\/code><\/p>\n<p>If we insert a row into the table customers on the primary cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# insert into customers values (30,'Dbi','GENEVA');<br \/>\nINSERT 0 1<br \/>\n..<br \/>\npostgres=# table customers;<br \/>\nidcust | custname | location<br \/>\n--------+----------+----------<br \/>\n30 | Dbi      | GENEVA<br \/>\n(1 row)<br \/>\n<\/code><\/p>\n<p>The row is replicated on the second cluster<br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n..<br \/>\npostgres=# table customers;<br \/>\nidcust | custname | location<br \/>\n--------+----------+----------<br \/>\n30 | Dbi      | GENEVA<br \/>\n(1 row)<br \/>\npostgres=#<br \/>\n<\/code><\/p>\n<p>We have seen in this blog how easy it is to setup logical replication with PostgreSQL 10. This feature may be very useful for reducing downtime during upgrade or for offload reporting environment<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw In a previous blog we talked about partition in postgreSQL 10 Beta 1. In this article we will talk about another new feature logical replication. Yes in postgreSQL 10, logical replication is now impelemented. We can replicate one table or many tables. In our example we are replicating between two clusters in [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[1074,1108],"type_dbi":[],"class_list":["post-10125","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-logical-replication","tag-postgresql-10"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 10 Beta 1: Logical replication - dbi Blog<\/title>\n<meta name=\"description\" content=\"PostgreSQL, Logical Replication\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 10 Beta 1: Logical replication\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL, Logical Replication\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-25T10:37:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-08T14:34:52+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"PostgreSQL 10 Beta 1: Logical replication\",\"datePublished\":\"2017-05-25T10:37:48+00:00\",\"dateModified\":\"2023-06-08T14:34:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/\"},\"wordCount\":450,\"commentCount\":0,\"keywords\":[\"Logical Replication\",\"PostgreSQL 10\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/\",\"name\":\"PostgreSQL 10 Beta 1: Logical replication - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2017-05-25T10:37:48+00:00\",\"dateModified\":\"2023-06-08T14:34:52+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"PostgreSQL, Logical Replication\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-10-beta-1-logical-replication\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 10 Beta 1: Logical replication\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 10 Beta 1: Logical replication - dbi Blog","description":"PostgreSQL, Logical Replication","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:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 10 Beta 1: Logical replication","og_description":"PostgreSQL, Logical Replication","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/","og_site_name":"dbi Blog","article_published_time":"2017-05-25T10:37:48+00:00","article_modified_time":"2023-06-08T14:34:52+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"PostgreSQL 10 Beta 1: Logical replication","datePublished":"2017-05-25T10:37:48+00:00","dateModified":"2023-06-08T14:34:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/"},"wordCount":450,"commentCount":0,"keywords":["Logical Replication","PostgreSQL 10"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/","name":"PostgreSQL 10 Beta 1: Logical replication - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-05-25T10:37:48+00:00","dateModified":"2023-06-08T14:34:52+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"PostgreSQL, Logical Replication","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 10 Beta 1: Logical replication"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=10125"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10125\/revisions"}],"predecessor-version":[{"id":25699,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10125\/revisions\/25699"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10125"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}