{"id":10087,"date":"2021-01-12T13:30:59","date_gmt":"2021-01-12T12:30:59","guid":{"rendered":"http:\/\/arumel.com\/?p=10087"},"modified":"2021-01-12T13:32:14","modified_gmt":"2021-01-12T12:32:14","slug":"auto-failover-repmgr-y-postgresql-13-parte-2","status":"publish","type":"post","link":"https:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/","title":{"rendered":"Auto failover &#8211; Repmgr y Postgresql 13 (parte 2)"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10073\" data-permalink=\"https:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-1\/repmgr-auto\/\" data-orig-file=\"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto.png?fit=673%2C710&amp;ssl=1\" data-orig-size=\"673,710\" data-comments-opened=\"1\" data-image-title=\"repmgr-auto\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto.png?fit=673%2C710&amp;ssl=1\" class=\"alignnone wp-image-10073\" src=\"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto.png?resize=437%2C462\" alt=\"\" width=\"437\" height=\"462\" \/><\/p>\n<p>Ver configuraci\u00f3n de la <a href=\"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-1\">parte 1<\/a>.<\/p>\n<p>El estado previo del cluster es el siguiente:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres1 ~]$ <strong>repmgr cluster show<\/strong><\/code><br \/>\n<code>ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string <\/code><br \/>\n<code>----+-------------------+---------+-----------+-----------+----------+----------+----------+----------------------------------------------<\/code><br \/>\n<code>1 | postgres1 | primary | * running | | default | 100 | 3 | host=192.168.0.101 user=repmgr dbname=repmgr<\/code><br \/>\n<code>2 | postgres2 | standby | running | postgres1 | default | 100 | 3 | host=192.168.0.102 user=repmgr dbname=repmgr<\/code><br \/>\n<code>3 | postgres3 | standby | running | postgres1 | default | 100 | 3 | host=192.168.0.103 user=repmgr dbname=repmgr<\/code><br \/>\n<code>4 | postgres4-witness | witness | * running | postgres1 | default | 0 | n\/a | host=192.168.0.104 user=repmgr dbname=repmgr<\/code><\/p>\n<p>Simulamos un fallo en el nodo primary (postgres1) para ver el failover autom\u00e1tico:<\/p>\n<p style=\"text-align: left;padding-left: 40px\"><code>[postgres@<strong>postgres1<\/strong> ~]$ <strong>sudo systemctl stop postgresql-13<\/strong><\/code><\/p>\n<p>&nbsp;<\/p>\n<p>Y el estado del cluster en ese momento:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres2 ~]$ <strong>repmgr cluster show<\/strong><\/code><br \/>\n<code>ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string <\/code><br \/>\n<code>----+-------------------+---------+---------------+-------------+----------+----------+----------+----------------------------------------------<\/code><br \/>\n<code><strong>1 | postgres1 | primary | ? unreachable | ? | default | 100 | | host=192.168.0.101 user=repmgr dbname=repmgr<\/strong><\/code><br \/>\n<code>2 | postgres2 | standby | running | ? postgres1 | default | 100 | 3 | host=192.168.0.102 user=repmgr dbname=repmgr<\/code><br \/>\n<code>3 | postgres3 | standby | running | ? postgres1 | default | 100 | 3 | host=192.168.0.103 user=repmgr dbname=repmgr<\/code><br \/>\n<code>4 | postgres4-witness | witness | * running | ? postgres1 | default | 0 | n\/a | host=192.168.0.104 user=repmgr dbname=repmgr<\/code><\/p>\n<p style=\"padding-left: 40px\"><code>WARNING: following issues were detected<\/code><br \/>\n<code>- unable to connect to node \"postgres1\" (ID: 1)<\/code><br \/>\n<code>- node \"postgres1\" (ID: 1) is registered as an active primary but is unreachable<\/code><br \/>\n<code>- unable to connect to node \"postgres2\" (ID: 2)'s upstream node \"postgres1\" (ID: 1)<\/code><br \/>\n<code>- unable to determine if node \"postgres2\" (ID: 2) is attached to its upstream node \"postgres1\" (ID: 1)<\/code><br \/>\n<code>- unable to connect to node \"postgres3\" (ID: 3)'s upstream node \"postgres1\" (ID: 1)<\/code><br \/>\n<code>- unable to determine if node \"postgres3\" (ID: 3) is attached to its upstream node \"postgres1\" (ID: 1)<\/code><br \/>\n<code>- unable to connect to node \"postgres4-witness\" (ID: 4)'s upstream node \"postgres1\" (ID: 1)<\/code><\/p>\n<p style=\"padding-left: 40px\"><code>HINT: execute with --verbose option to see connection error messages<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>Tras un breve espacio de tiempo, comprobamos el estado del cluster otra vez:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres4 ~]$ <strong>repmgr cluster show<\/strong><\/code><br \/>\n<code>ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string <\/code><br \/>\n<code>----+-------------------+---------+-----------+-----------+----------+----------+----------+----------------------------------------------<\/code><br \/>\n<code><strong>1 | postgres1 | primary | - failed | ? | default | 100 | | host=192.168.0.101 user=repmgr dbname=repmgr<\/strong><\/code><br \/>\n<strong><code>2 | postgres2 | primary | * running | | default | 100 | 4 | host=192.168.0.102 user=repmgr dbname=repmgr<\/code><\/strong><br \/>\n<strong><code>3 | postgres3 | standby | running | postgres2 | default | 100 | 3 | host=192.168.0.103 user=repmgr dbname=repmgr<\/code><\/strong><br \/>\n<code>4 | postgres4-witness | witness | * running | postgres2 | default | 0 | n\/a | host=192.168.0.104 user=repmgr dbname=repmgr<\/code><\/p>\n<p style=\"padding-left: 40px\"><code>WARNING: following issues were detected<\/code><br \/>\n<code>- unable to connect to node \"postgres1\" (ID: 1)<\/code><\/p>\n<p style=\"padding-left: 40px\"><code>HINT: execute with --verbose option to see connection error messages<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>Observad tambi\u00e9n, que el nodo postgres3 ha cambiado hacia el nuevo primary (postgres2)!!<\/p>\n<p>&nbsp;<\/p>\n<p>Una vez arreglado el problema (provocado por nosotros) si queremos unir el antiguo nodo primario (postgres1) al cluster d\u00f3nde est\u00e1 el nodo primario actual (postgres2), vemos que nos pide el rewind:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres1 ~]$ <strong>repmgr -d 'host=192.168.0.102 user=repmgr dbname=repmgr' node rejoin<\/strong><\/code><br \/>\n<code>ERROR: this node cannot attach to rejoin target node 2<\/code><br \/>\n<code>DETAIL: rejoin target server's timeline 4 forked off current database system timeline 3 before current recovery point 0\/16000028<\/code><br \/>\n<code><strong>HINT: use --force-rewind to execute pg_rewind<\/strong><\/code><\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres1 ~]$ <strong>repmgr -d 'host=192.168.0.102 user=repmgr dbname=repmgr' node rejoin --force-rewind<\/strong><\/code><br \/>\n<code>NOTICE: pg_rewind execution required for this node to attach to rejoin target node 2<\/code><br \/>\n<code>DETAIL: rejoin target server's timeline 4 forked off current database system timeline 3 before current recovery point 0\/16000028<\/code><br \/>\n<code>NOTICE: executing pg_rewind<\/code><br \/>\n<code>DETAIL: pg_rewind command is \"\/usr\/pgsql-13\/bin\/pg_rewind -D '\/var\/lib\/pgsql\/13\/data' --source-server='host=192.168.0.102 user=repmgr dbname=repmgr'\"<\/code><br \/>\n<code>NOTICE: 0 files copied to \/var\/lib\/pgsql\/13\/data<\/code><br \/>\n<code>INFO: creating replication slot as user \"repmgr\"<\/code><br \/>\n<code>NOTICE: setting node 1's upstream to node 2<\/code><br \/>\n<code>WARNING: unable to ping \"host=192.168.0.101 user=repmgr dbname=repmgr\"<\/code><br \/>\n<code>DETAIL: PQping() returned \"PQPING_NO_RESPONSE\"<\/code><br \/>\n<code>NOTICE: starting server using \"sudo \/bin\/systemctl start postgresql-13\"<\/code><br \/>\n<code>NOTICE: NODE REJOIN successful<\/code><br \/>\n<code>DETAIL: node 1 is now attached to node 2<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>El estado del cluster entonces queda de la siguiente manera:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres4 ~]$ <strong>repmgr cluster show<\/strong><\/code><br \/>\n<code>ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string <\/code><br \/>\n<code>----+-------------------+---------+-----------+-----------+----------+----------+----------+----------------------------------------------<\/code><br \/>\n<code>1 | postgres1 | standby | running | postgres2 | default | 100 | 3 | host=192.168.0.101 user=repmgr dbname=repmgr<\/code><br \/>\n<code>2 | postgres2 | primary | * running | | default | 100 | 4 | host=192.168.0.102 user=repmgr dbname=repmgr<\/code><br \/>\n<code>3 | postgres3 | standby | running | postgres2 | default | 100 | 4 | host=192.168.0.103 user=repmgr dbname=repmgr<\/code><br \/>\n<code>4 | postgres4-witness | witness | * running | postgres2 | default | 0 | n\/a | host=192.168.0.104 user=repmgr dbname=repmgr<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>Si queremos ver los eventos del cluster:<\/p>\n<p style=\"padding-left: 40px\"><code>[postgres@postgres2 ~]$ <strong>repmgr cluster event<\/strong><\/code><br \/>\n<code>Node ID | Name | Event | OK | Timestamp | Details <\/code><br \/>\n<code>---------+-------------------+----------------------------+----+---------------------+------------------------------------------------------------------------------------------------<\/code><\/p>\n<p style=\"padding-left: 40px\"><code>2 | postgres2 | child_node_new_connect | t | 2021-01-08 18:28:09 | new standby \"postgres1\" (ID: 1) has connected <\/code><br \/>\n<code>1 | postgres1 | repmgrd_standby_reconnect | t | 2021-01-08 18:28:04 | node restored as standby after 26 seconds, monitoring connection to upstream node 2 <\/code><br \/>\n<code>1 | postgres1 | node_rejoin | t | 2021-01-08 18:28:03 | node 1 is now attached to node 2 <\/code><br \/>\n<code>3 | postgres3 | repmgrd_failover_follow | t | 2021-01-08 18:20:39 | node \"postgres3\" (ID: 3) now following new upstream node \"postgres2\" (ID: 2) <\/code><br \/>\n<code>3 | postgres3 | standby_follow | t | 2021-01-08 18:20:39 | standby attached to upstream node \"postgres2\" (ID: 2) <\/code><br \/>\n<code>2 | postgres2 | child_node_new_connect | t | 2021-01-08 18:20:39 | new witness \"postgres4-witness\" (ID: 4) has connected <\/code><br \/>\n<code>2 | postgres2 | child_node_new_connect | t | 2021-01-08 18:20:39 | new standby \"postgres3\" (ID: 3) has connected <\/code><br \/>\n<code>4 | postgres4-witness | repmgrd_upstream_reconnect | t | 2021-01-08 18:20:33 | witness monitoring connection to primary node \"postgres2\" (ID: 2) <\/code><br \/>\n<code>4 | postgres4-witness | repmgrd_failover_follow | t | 2021-01-08 18:20:33 | witness node \"postgres4-witness\" (ID: 4) now following new primary node \"postgres2\" (ID: 2) <\/code><br \/>\n<code>2 | postgres2 | repmgrd_reload | t | 2021-01-08 18:20:33 | monitoring cluster primary \"postgres2\" (ID: 2) <\/code><br \/>\n<code>2 | postgres2 | repmgrd_failover_promote | t | 2021-01-08 18:20:33 | node \"postgres2\" (ID: 2) promoted to primary; old primary \"postgres1\" (ID: 1) marked as failed<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ver configuraci\u00f3n de la parte 1. El estado previo del cluster es el siguiente: [postgres@postgres1 ~]$ repmgr cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string &#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 1 | postgres1 | primary | * running | | default | 100 | 3 | host=192.168.0.101 [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[27,65],"tags":[437,436,434,433],"class_list":["post-10087","post","type-post","status-publish","format-standard","hentry","category-portada-es","category-postgresql-es","tag-auto","tag-failover","tag-postgresql","tag-repmgr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel\" \/>\n<meta property=\"og:description\" content=\"Ver configuraci\u00f3n de la parte 1. El estado previo del cluster es el siguiente: [postgres@postgres1 ~]$ repmgr cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ----+-------------------+---------+-----------+-----------+----------+----------+----------+---------------------------------------------- 1 | postgres1 | primary | * running | | default | 100 | 3 | host=192.168.0.101 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Arumel\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-12T12:30:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-12T12:32:14+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png\" \/>\n<meta name=\"author\" content=\"sm\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"sm\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/\"},\"author\":{\"name\":\"sm\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/e270e777d900dcd47f8eb3895c076b64\"},\"headline\":\"Auto failover &#8211; Repmgr y Postgresql 13 (parte 2)\",\"datePublished\":\"2021-01-12T12:30:59+00:00\",\"dateModified\":\"2021-01-12T12:32:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/\"},\"wordCount\":129,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/arumel.com\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/repmgr-auto-284x300.png\",\"keywords\":[\"auto\",\"failover\",\"postgresql\",\"repmgr\"],\"articleSection\":[\"portada\",\"PostgreSQL\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/\",\"url\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/\",\"name\":\"Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/arumel.com\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/repmgr-auto-284x300.png\",\"datePublished\":\"2021-01-12T12:30:59+00:00\",\"dateModified\":\"2021-01-12T12:32:14+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/e270e777d900dcd47f8eb3895c076b64\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/arumel.com\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/repmgr-auto-284x300.png\",\"contentUrl\":\"http:\\\/\\\/arumel.com\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/repmgr-auto-284x300.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/arumel.com\\\/es\\\/auto-failover-repmgr-y-postgresql-13-parte-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/arumel.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Auto failover &#8211; Repmgr y Postgresql 13 (parte 2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#website\",\"url\":\"http:\\\/\\\/arumel.com\\\/\",\"name\":\"Arumel\",\"description\":\"Outro sitio WordPress m\u00e1is\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/arumel.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/e270e777d900dcd47f8eb3895c076b64\",\"name\":\"sm\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g\",\"caption\":\"sm\"},\"url\":\"https:\\\/\\\/arumel.com\\\/es\\\/author\\\/sergio\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel","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":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/","og_locale":"es_ES","og_type":"article","og_title":"Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel","og_description":"Ver configuraci\u00f3n de la parte 1. El estado previo del cluster es el siguiente: [postgres@postgres1 ~]$ repmgr cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ----+-------------------+---------+-----------+-----------+----------+----------+----------+---------------------------------------------- 1 | postgres1 | primary | * running | | default | 100 | 3 | host=192.168.0.101 [&hellip;]","og_url":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/","og_site_name":"Arumel","article_published_time":"2021-01-12T12:30:59+00:00","article_modified_time":"2021-01-12T12:32:14+00:00","og_image":[{"url":"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png","type":"","width":"","height":""}],"author":"sm","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"sm","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#article","isPartOf":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/"},"author":{"name":"sm","@id":"http:\/\/arumel.com\/#\/schema\/person\/e270e777d900dcd47f8eb3895c076b64"},"headline":"Auto failover &#8211; Repmgr y Postgresql 13 (parte 2)","datePublished":"2021-01-12T12:30:59+00:00","dateModified":"2021-01-12T12:32:14+00:00","mainEntityOfPage":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/"},"wordCount":129,"commentCount":0,"image":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#primaryimage"},"thumbnailUrl":"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png","keywords":["auto","failover","postgresql","repmgr"],"articleSection":["portada","PostgreSQL"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/","url":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/","name":"Auto failover - Repmgr y Postgresql 13 (parte 2) - Arumel","isPartOf":{"@id":"http:\/\/arumel.com\/#website"},"primaryImageOfPage":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#primaryimage"},"image":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#primaryimage"},"thumbnailUrl":"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png","datePublished":"2021-01-12T12:30:59+00:00","dateModified":"2021-01-12T12:32:14+00:00","author":{"@id":"http:\/\/arumel.com\/#\/schema\/person\/e270e777d900dcd47f8eb3895c076b64"},"breadcrumb":{"@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#primaryimage","url":"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png","contentUrl":"http:\/\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png"},{"@type":"BreadcrumbList","@id":"http:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/arumel.com\/es\/"},{"@type":"ListItem","position":2,"name":"Auto failover &#8211; Repmgr y Postgresql 13 (parte 2)"}]},{"@type":"WebSite","@id":"http:\/\/arumel.com\/#website","url":"http:\/\/arumel.com\/","name":"Arumel","description":"Outro sitio WordPress m\u00e1is","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/arumel.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"http:\/\/arumel.com\/#\/schema\/person\/e270e777d900dcd47f8eb3895c076b64","name":"sm","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6207cd8b9baaee6c4cff92251bb20e4b48ce165f93e926218da90832d9f334f9?s=96&d=mm&r=g","caption":"sm"},"url":"https:\/\/arumel.com\/es\/author\/sergio\/"}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9uvW6-2CH","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":10119,"url":"https:\/\/arumel.com\/es\/failover-auto-pgbouncer-repmgr-postgresql-13-parte-4\/","url_meta":{"origin":10087,"position":0},"title":"Failover auto &#8211; Pgbouncer + Repmgr + Postgresql 13 (parte 4)","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"Ver parte 1 Ver parte 2 Ver parte 3 Vamos a hacer una prueba de balanceo autom\u00e1tico tras la p\u00e9rdida del nodo primario (postgres2) y como balancea el failover a un nodo secundario (postgres1), tras la parada de la conexiones en el pgbouncer, posterior reconfiguraci\u00f3n, y conexi\u00f3n posterior al nuevo\u2026","rel":"","context":"En &quot;portada&quot;","block_context":{"text":"portada","link":"https:\/\/arumel.com\/es\/portada-es\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/pgbouncer-repmgr-auto-285x300.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/pgbouncer-repmgr-auto-285x300.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/pgbouncer-repmgr-auto-285x300.png?resize=525%2C300 1.5x"},"classes":[]},{"id":10063,"url":"https:\/\/arumel.com\/es\/manual-failover-repmgr-y-postgresql-13\/","url_meta":{"origin":10087,"position":1},"title":"Manual failover &#8211; Repmgr y Postgresql 13","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"Ver configuraci\u00f3n parte 1. Ver configuraci\u00f3n parte 2. Ver switchover manual. Estado previo del cluster: [postgres@postgres1 ~]$ repmgr cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ----+-----------+---------+-----------+-----------+----------+----------+----------+---------------------------------------------- 1 | postgres1 | standby | running | postgres2 | default\u2026","rel":"","context":"En &quot;portada&quot;","block_context":{"text":"portada","link":"https:\/\/arumel.com\/es\/portada-es\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-manual-300x183.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":10040,"url":"https:\/\/arumel.com\/es\/preparacion-entorno-repmgr-y-postgresql-13-parte-2\/","url_meta":{"origin":10087,"position":2},"title":"Preparaci\u00f3n entorno &#8211; Repmgr y Postgresql 13 (parte 2)","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"Ver configuraci\u00f3n parte1 Registramos el primer nodo en el cluster: [postgres@postgres1 ~]$ repmgr primary register INFO: connecting to primary database... NOTICE: attempting to install extension \"repmgr\" NOTICE: \"repmgr\" extension successfully installed NOTICE: primary node record (ID: 1) registered \u00a0 Mostramos el estado del cluster: [postgres@postgres1 ~]$ repmgr cluster show ID\u2026","rel":"","context":"En &quot;PostgreSQL&quot;","block_context":{"text":"PostgreSQL","link":"https:\/\/arumel.com\/es\/postgresql-es\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10067,"url":"https:\/\/arumel.com\/es\/auto-failover-repmgr-y-postgresql-13-parte-1\/","url_meta":{"origin":10087,"position":3},"title":"Auto failover &#8211; Repmgr y Postgresql 13 (parte 1)","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"Si repasamos las entradas anteriores Parte1 y Parte2, vemos que tenemos configurado el repmgr pero no hemos activado el demonio para que haga el chequeo continuo. Para ello necesitamos activar el servicio a nivel de SO y cargar su librer\u00eda en postgresql. En el fichero de postgresql.conf a\u00f1adimos la siguiente\u2026","rel":"","context":"En &quot;portada&quot;","block_context":{"text":"portada","link":"https:\/\/arumel.com\/es\/portada-es\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-auto-284x300.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":10057,"url":"https:\/\/arumel.com\/es\/manual-switchover-repmgr-y-postgresql-13\/","url_meta":{"origin":10087,"position":4},"title":"Manual switchover &#8211; Repmgr y Postgresql 13","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"Ver configuraci\u00f3n parte 1 Ver configuraci\u00f3n parte 2 Comprobaci\u00f3n previa estado cluster: [postgres@postgres1 ~]$ repmgr cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ----+-----------+---------+-----------+-----------+----------+----------+----------+---------------------------------------------- 1 | postgres1 | primary | * running | | default | 100 |\u2026","rel":"","context":"En &quot;portada&quot;","block_context":{"text":"portada","link":"https:\/\/arumel.com\/es\/portada-es\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-manual-300x183.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":9995,"url":"https:\/\/arumel.com\/es\/preparacion-entorno-repmgr-y-postgresql-13-parte-1\/","url_meta":{"origin":10087,"position":5},"title":"Preparaci\u00f3n entorno &#8211; Repmgr y Postgresql 13 (parte 1)","author":"sm","date":"12 de enero de 2021","format":false,"excerpt":"\u00a0 Nos disponemos a preparar un entorno sobre el que realizar pruebas con repmgr 13 (versi\u00f3n 5.2) y postgresql versi\u00f3n 13. En nuestro caso se tratar\u00e1 de un OEL 8.3 (con kernel de redhat). Una vez creada la primera m\u00e1quina virtual procedemos a la instalaci\u00f3n de los repositorios y desactivar\u2026","rel":"","context":"En &quot;PostgreSQL&quot;","block_context":{"text":"PostgreSQL","link":"https:\/\/arumel.com\/es\/postgresql-es\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-manual.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-manual.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2021\/01\/repmgr-manual.png?resize=525%2C300 1.5x"},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/posts\/10087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/comments?post=10087"}],"version-history":[{"count":6,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/posts\/10087\/revisions"}],"predecessor-version":[{"id":10192,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/posts\/10087\/revisions\/10192"}],"wp:attachment":[{"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/media?parent=10087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/categories?post=10087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arumel.com\/es\/wp-json\/wp\/v2\/tags?post=10087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}