{"id":10385,"date":"2017-08-15T16:31:22","date_gmt":"2017-08-15T14:31:22","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/"},"modified":"2023-06-08T16:36:22","modified_gmt":"2023-06-08T14:36:22","slug":"replicating-specific-tables-in-postgresql-10-beta-with-mimeo","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/","title":{"rendered":"Replicating specific tables in PostgreSQL 10 Beta with mimeo"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>In this blog I am going to test the extension mimeo with PostgreSQL 10 beta. Mimeo is a replication extension for copying specific tables in one of several specialized ways from any number of source databases to a destination database where mimeo is installed.<br \/>\nIn our configuration we are going to replicate data on a same server but between 2 clusters running on different ports. But it\u2019s same for different servers. The pg_hba.conf should be configured to allow remote connection.<br \/>\n<strong>Source<\/strong><br \/>\nHostname: pgservertools.localdomain (192.168.56.30)<br \/>\nDatabase: prima (port 5432)<br \/>\n<strong>Target<\/strong><br \/>\nHostname: pgservertools.localdomain (192.168.56.30)<br \/>\nDatabase: repl (port 5433)<br \/>\nThe first thing is to install the extension on the destination server. For this we will use the command <span style=\"color: #ea6d14\">git<\/span> to clone the extension directory on the server.<br \/>\n<code>[root@pgservertools ~]# yum install perl-Git.noarch<\/code><br \/>\n<code>[root@pgservertools ~]# git clone git:\/\/github.com\/omniti-labs\/mimeo.git<br \/>\nCloning into 'mimeo'...<br \/>\nremote: Counting objects: 1720, done.<br \/>\nremote: Total 1720 (delta 0), reused 0 (delta 0), pack-reused 1720<br \/>\nReceiving objects: 100% (1720\/1720), 1.24 MiB | 429.00 KiB\/s, done.<br \/>\nResolving deltas: 100% (1094\/1094), done.<br \/>\n[root@pgservertools ~]#<br \/>\n<\/code><br \/>\nThen in the mimeo directory let&#8217;s run following commands<br \/>\n<code><br \/>\n[root@pgservertools mimeo]# make<br \/>\n[root@pgservertools mimeo]# make install<br \/>\n<\/code><br \/>\nIf there is no error, we can create our two databases. The source database will be named prima and the target will be named repl.<br \/>\n<code><br \/>\n[postgres@pgservertools postgres]$ psql<br \/>\npsql (10beta2)<br \/>\nType \"help\" for help.<br \/>\n.<br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5432<br \/>\n(1 row)<br \/>\n.<br \/>\npostgres=# create database prima;<br \/>\nCREATE DATABASE<br \/>\npostgres=#<br \/>\n<\/code><br \/>\n<code><br \/>\npostgres=# show port;<br \/>\nport<br \/>\n------<br \/>\n5433<br \/>\n(1 row)<br \/>\n.<br \/>\npostgres=# create database repl;<br \/>\nCREATE DATABASE<br \/>\npostgres=#<br \/>\n<\/code><br \/>\nNow we have to install the extension mimeo in the destination database repl.<br \/>\nThe extension mimeo requires the extension dblink. If this extension is not present, an error will be raised<br \/>\n<code><br \/>\nrepl=# create schema mimeo;<br \/>\nCREATE SCHEMA<br \/>\n.<br \/>\nrepl=# create extension mimeo schema mimeo;<br \/>\nERROR:  required extension \"dblink\" is not installed<br \/>\nHINT:  Use CREATE EXTENSION ... CASCADE to install required extensions too.<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nThe extension dblink should be already present with the standard installation. This can be verified by listing files the extension directory.<br \/>\n<code><br \/>\n[root@pgservertools extension]# pwd<br \/>\n\/usr\/pgsql-10\/share\/extension<br \/>\n.<br \/>\n[root@pgservertools extension]# ls -l dblink*<br \/>\n-rw-r--r--. 1 root root  419 Jul 13 12:15 dblink--1.0--1.1.sql<br \/>\n-rw-r--r--. 1 root root 2832 Jul 13 12:15 dblink--1.1--1.2.sql<br \/>\n-rw-r--r--. 1 root root 6645 Jul 13 12:15 dblink--1.2.sql<br \/>\n-rw-r--r--. 1 root root  170 Jul 13 12:15 dblink.control<br \/>\n-rw-r--r--. 1 root root 2863 Jul 13 12:15 dblink--unpackaged--1.0.sql<br \/>\n[root@pgservertools extension]#<br \/>\n<\/code><br \/>\nSo rexecuting the instruction with the cascade option will install the extension dblink.<br \/>\n<code><br \/>\nrepl=# create extension mimeo schema mimeo cascade;<br \/>\nNOTICE:  installing required extension \"dblink\"<br \/>\nCREATE EXTENSION<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nOn the target database let\u2019s create a user mimeo we will use for the replication and let\u2019s give him all required privileges. Superuser is not needed by will also work.<br \/>\n<code><br \/>\nrepl=# create user mimeo password   'root';<br \/>\nCREATE ROLE<br \/>\nrepl=# GRANT USAGE ON SCHEMA mimeo TO mimeo;<br \/>\nGRANT<br \/>\nrepl=# GRANT USAGE ON SCHEMA public TO mimeo;<br \/>\nGRANT<br \/>\nrepl=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA mimeo TO mimeo;<br \/>\nGRANT<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nOn the source database let\u2019s create same user on the source and give him required privileges<br \/>\n<code><br \/>\nprima=# create user mimeo password   'root';<br \/>\nCREATE ROLE<br \/>\nprima=# CREATE SCHEMA mimeo;<br \/>\nCREATE SCHEMA<br \/>\nprima=# ALTER SCHEMA mimeo OWNER TO mimeo;<br \/>\nALTER SCHEMA<br \/>\nprima=#<br \/>\n<\/code><br \/>\nEvery source database needs to have its connection information stored in mimeo&#8217;s dblink_mapping_mimeo table on the destination database. You can have as many source databases as you need, which makes creating a central replication destination for many master databases easy. All data is pulled by the destination database, never pushed by the source.<br \/>\n<code><br \/>\nrepl=# INSERT INTO mimeo.dblink_mapping_mimeo (data_source, username, pwd)<br \/>\nVALUES ('host=192.168.56.30 port=5432 dbname=prima', 'mimeo', 'root');<br \/>\nINSERT 0 1<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nOn the source let\u2019s create table to be replicated and insert some data<br \/>\n<code><br \/>\nprima=# create table article(idart int primary key, name varchar(20));<br \/>\nCREATE TABLE<br \/>\n<\/code><br \/>\n<code><br \/>\nprima=# table article;<br \/>\nidart | name<br \/>\n-------+-------<br \/>\n1 | Paper<br \/>\n2 | Food<br \/>\n(2 rows)<br \/>\nprima=#<br \/>\n<\/code><br \/>\nGrant required privilege to mimeo<br \/>\n<code><br \/>\nprima=# grant select on article to mimeo;<br \/>\nGRANT<br \/>\nprima=# grant trigger on article to mimeo;<br \/>\nGRANT<br \/>\nprima=#<br \/>\n<\/code><br \/>\nNow we are ready to start the replication. We have three methods of replication:<br \/>\n-Snapshot replication<br \/>\n-Incremental replication<br \/>\n-DML replication<br \/>\nWe will discuss only for snapshot and DML methods. Indeed the incremental method can replicate only inserted and updated data. It will not replicate any deleted data. See the documentation <a href=\"https:\/\/pgxn.org\/dist\/mimeo\/1.5.1\/doc\/howto_mimeo.html\" target=\"_blank\" rel=\"noopener\">here<\/a><\/p>\n<p><strong>Snapshot Replication<\/strong><br \/>\nThis method is the only one to replicate data and structure change (add column\u2026.)<br \/>\nTo initialize the table we use the function snapshot_maker (as we are using snapshot replication) and we pass as arguments the table to be replicated and the id of the dblink we want to use.<br \/>\n<code><br \/>\nrepl=# select * from mimeo.dblink_mapping_mimeo ;<br \/>\ndata_source_id |                data_source                | username | pwd<br \/>\n----------------+-------------------------------------------+----------+------<br \/>\n1 | host=192.168.56.30 port=5432 dbname=prima | mimeo    | root<br \/>\n<\/code><br \/>\nSo following command is used to initialize the table<br \/>\n<code><br \/>\nrepl=# SELECT mimeo.snapshot_maker('public.article', 1);<br \/>\nNOTICE:  attempting first snapshot<br \/>\nNOTICE:  attempting second snapshot<br \/>\nNOTICE:  Done<br \/>\nsnapshot_maker<br \/>\n----------------<br \/>\n.<br \/>\n(1 row)<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nAnd we can easily verify that the two tables are synchronized.<br \/>\n<code><br \/>\nrepl=# table article;<br \/>\nidart | name<br \/>\n-------+-------<br \/>\n1 | Paper<br \/>\n2 | Food<br \/>\n(2 rows)<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nNow let\u2019s insert new data in the source table and let\u2019s see how to refresh the target table.<br \/>\n<code><br \/>\nprima=# table article;<br \/>\nidart | name<br \/>\n-------+-------<br \/>\n1 | Paper<br \/>\n2 | Food<br \/>\n3 | Oil<br \/>\n4 | Books<br \/>\n<\/code><br \/>\nOn the target database we just have to use the refresh_snap function<br \/>\n<code><br \/>\nrepl=# SELECT mimeo.refresh_snap('public.article');<br \/>\nrefresh_snap<br \/>\n--------------<br \/>\n.<br \/>\n(1 row)<br \/>\n<\/code><br \/>\nAnd we see that the source table was updated.<br \/>\n<code><br \/>\nrepl=# table article;<br \/>\nidart | name<br \/>\n-------+-------<br \/>\n1 | Paper<br \/>\n2 | Food<br \/>\n3 | Oil<br \/>\n4 | Books<br \/>\n(4 rows)<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nA refresh can be scheduled using crontab for example every two minutes in my case<br \/>\n<code><br \/>\n[postgres@pgservertools ~]$ crontab -l<br \/>\n*\/2 * * * *  psql -p 5433 -d repl -c \"SELECT mimeo.refresh_snap('public.article')\";<br \/>\n[postgres@pgservertools ~]$<br \/>\n<\/code><\/p>\n<p><strong>DML Replication<\/strong><br \/>\nThe snapshot method is easier to setup, but it is not recommended for large table as<br \/>\na table setup with this method will have the entire contents refreshed every time it is run.<br \/>\nSo for large tables DML replication is recommended.<br \/>\nLet\u2019s create a table customers on the source<br \/>\n<code><br \/>\nprima=# create table customers(idcust int primary key, name varchar(30));<br \/>\nCREATE TABLE<br \/>\n.                              ^<br \/>\nprima=# insert into customers values(1,'Dbi');<br \/>\nINSERT 0 1<br \/>\nprima=# insert into customers values(2,'XZZ');<br \/>\nINSERT 0 1<br \/>\n.<br \/>\nprima=# table customers<br \/>\nprima-# ;<br \/>\nidcust | name<br \/>\n--------+------<br \/>\n1 | Dbi<br \/>\n2 | XZZ<br \/>\n(2 rows)<br \/>\nprima=#<br \/>\n<\/code><br \/>\nAnd let\u2019s grant required privileges to mimeo on customers<br \/>\n<code><br \/>\nprima=# grant select on customers to mimeo;<br \/>\nGRANT<br \/>\nprima=# grant trigger on customers to mimeo;<br \/>\nGRANT<br \/>\nprima=#<br \/>\n<\/code><\/p>\n<p>On the target we use the function dml_maker to replicate data. We can see that we can even change the name of the destination table.<br \/>\n<code><br \/>\nrepl=# SELECT mimeo.dml_maker('public.customers', 1, p_dest_table := 'public.customers_repl');<br \/>\nNOTICE:  Creating objects on source database (function, trigger &amp; queue table)...<br \/>\nNOTICE:  Pulling data from source...<br \/>\ndml_maker<br \/>\n-----------<br \/>\n.<br \/>\n(1 row)<br \/>\n<\/code><br \/>\nWe can verify that the table customers_repl is created<br \/>\n<code><br \/>\nrepl=# d<br \/>\nList of relations<br \/>\nSchema |      Name      | Type  |  Owner<br \/>\n--------+----------------+-------+----------<br \/>\npublic | article        | view  | postgres<br \/>\npublic | article_snap1  | table | postgres<br \/>\npublic | article_snap2  | table | postgres<br \/>\npublic | customers_repl | table | postgres<br \/>\n(4 rows)<br \/>\n<\/code><br \/>\nAnd that data are replicated<br \/>\n<code><br \/>\nrepl=# select * from customers_repl ;<br \/>\nidcust | name<br \/>\n--------+------<br \/>\n1 | Dbi<br \/>\n2 | XZZ<br \/>\n(2 rows)<br \/>\n<\/code><br \/>\nNow let\u2019s insert again new data in the source table and let\u2019s see how to refresh the target<br \/>\n<code><br \/>\nprima=# insert into customers values(3,'Linux');<br \/>\nINSERT 0 1<br \/>\nprima=# insert into customers values(4,'Unix');<br \/>\nINSERT 0 1<br \/>\n.<br \/>\nprima=# table customers<br \/>\n;<br \/>\nidcust | name<br \/>\n--------+-------<br \/>\n1 | Dbi<br \/>\n2 | XZZ<br \/>\n3 | Linux<br \/>\n4 | Unix<br \/>\n(4 rows)<br \/>\n<\/code><br \/>\nOn the target database we have to run the refresh_dml function<br \/>\n<code><br \/>\nrepl=# SELECT mimeo.refresh_dml('public.customers_repl');<br \/>\nrefresh_dml<br \/>\n-------------<br \/>\n.<br \/>\n(1 row)<br \/>\n<\/code><br \/>\n<code><br \/>\nrepl=# table customers_repl;<br \/>\nidcust | name<br \/>\n--------+-------<br \/>\n1 | Dbi<br \/>\n2 | XZZ<br \/>\n3 | Linux<br \/>\n4 | Unix<br \/>\n(4 rows)<br \/>\nrepl=#<br \/>\n<\/code><br \/>\nLike the snapshot method a crontab can be scheduled .<br \/>\n<strong>Conclusion<\/strong><br \/>\nIn a previous <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-10-beta-1-logical-replication\/\" target=\"_blank\" rel=\"noopener\">blog<\/a>, we saw that logical replication is now supported on PostgreSQL 10. But the extension mimeo can still be used.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw In this blog I am going to test the extension mimeo with PostgreSQL 10 beta. Mimeo is a replication extension for copying specific tables in one of several specialized ways from any number of source databases to a destination database where mimeo is installed. In our configuration we are going to replicate [&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,1145,1108,1146],"type_dbi":[],"class_list":["post-10385","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-logical-replication","tag-mimeo-extension","tag-postgresql-10","tag-table-replication"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Replicating specific tables in PostgreSQL 10 Beta with mimeo - dbi Blog<\/title>\n<meta name=\"description\" content=\"PostgreSQL 10, logical replication, mimeo extension, table 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\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Replicating specific tables in PostgreSQL 10 Beta with mimeo\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL 10, logical replication, mimeo extension, table replication\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-08-15T14:31:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-08T14:36:22+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=\"6 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\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Replicating specific tables in PostgreSQL 10 Beta with mimeo\",\"datePublished\":\"2017-08-15T14:31:22+00:00\",\"dateModified\":\"2023-06-08T14:36:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\"},\"wordCount\":705,\"commentCount\":0,\"keywords\":[\"Logical Replication\",\"mimeo extension\",\"PostgreSQL 10\",\"table replication\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\",\"name\":\"Replicating specific tables in PostgreSQL 10 Beta with mimeo - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-08-15T14:31:22+00:00\",\"dateModified\":\"2023-06-08T14:36:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"PostgreSQL 10, logical replication, mimeo extension, table replication\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replicating specific tables in PostgreSQL 10 Beta with mimeo\"}]},{\"@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":"Replicating specific tables in PostgreSQL 10 Beta with mimeo - dbi Blog","description":"PostgreSQL 10, logical replication, mimeo extension, table 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\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/","og_locale":"en_US","og_type":"article","og_title":"Replicating specific tables in PostgreSQL 10 Beta with mimeo","og_description":"PostgreSQL 10, logical replication, mimeo extension, table replication","og_url":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/","og_site_name":"dbi Blog","article_published_time":"2017-08-15T14:31:22+00:00","article_modified_time":"2023-06-08T14:36:22+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Replicating specific tables in PostgreSQL 10 Beta with mimeo","datePublished":"2017-08-15T14:31:22+00:00","dateModified":"2023-06-08T14:36:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/"},"wordCount":705,"commentCount":0,"keywords":["Logical Replication","mimeo extension","PostgreSQL 10","table replication"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/","url":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/","name":"Replicating specific tables in PostgreSQL 10 Beta with mimeo - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-08-15T14:31:22+00:00","dateModified":"2023-06-08T14:36:22+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"PostgreSQL 10, logical replication, mimeo extension, table replication","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/replicating-specific-tables-in-postgresql-10-beta-with-mimeo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Replicating specific tables in PostgreSQL 10 Beta with mimeo"}]},{"@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\/10385","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=10385"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10385\/revisions"}],"predecessor-version":[{"id":25702,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10385\/revisions\/25702"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10385"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}