Re: Dudas DBLink

2021-08-20 Thread Andrés P . P .
consultas..

- el user mapping lo sigo creando de la misma forma:  ??..

CREATE USER MAPPING FOR *postgres* SERVER mibd1_srv OPTIONS(user
'miuser_db1', password 'miuser_db1');

o.

CREATE USER MAPPING FOR *miuser_db2 *SERVER mibd1_srv OPTIONS(user
'miuser_db1', password 'miuser_db1');

y el permiso en pg_hba...

agrego:

 local   all all md5
?
o peer..
o quito el trust..   (no tengo muy claro los otros usos ya que generalmente
usamos trust..).



El vie, 20 ago 2021 a las 16:23, Anthony Sotolongo ()
escribió:

> En la documentacion se puede ver:
>
>
> -- FOREIGN DATA WRAPPER functionality
> -- Note: local connection must require password authentication for this to 
> work properly
> --   Otherwise, you will receive the following error from 
> dblink_connect():
> --   
> --
> --   ERROR:  password is required
> --   DETAIL:  Non-superuser cannot connect if the server does not request 
> a password.
> --   HINT:  Target server's authentication method must be changed.
>
> por ende debes habilitar algun tipo de autenticacion que requiera password
> para usuarios que no son susperuser
>
> Saludos
>
>
>
> On 20/8/21 16:17, Andrés P.P. wrote:
>
>
> Hola Anthony, Hola Heriberto...
>
> Tengo mis accesos en trust ...
>
> # TYPE  DATABASEUSERADDRESS METHOD
> local   all all trust
>
> .. no debería pedirme password...  ojo que cuando creé el user mapping con
> postgres puedo leer la tabla remota  pero si creo el user mapping con
> mi usuario (miuser_db2) o le doy grant select desde postgres... me salen
> esos errores...
>
> (mientras tanto probaré con los permisos de connect y usage que menciona
> Heriberto)..
>
> Slds.
> Andrés
> .
>
>
> El vie, 20 ago 2021 a las 16:05, Anthony Sotolongo ()
> escribió:
>
>> Hola nuevamente Andres,  me parece que es un tema de los permisos...   y
>> accesos
>>
>>
>> ¿Puedes mostrar tu archivo pg_hba.conf?
>>
>> Saludos
>> On 20/8/21 15:41, Andrés P.P. wrote:
>>
>>
>> Estimados, Anthony..
>>
>> Probé el postgres_fdw y me funcionó... pero nuevamente para el usuario
>> postgres...
>>
>> Creé las mismas dos bds, esquemas y tablas... y luego, en vez de dblink
>> hice lo siguiente:
>>
>> mibd_2=> \c mibd_2 postgres
>> Ahora esta conectado a la base de datos «mibd_2» con el usuario
>> «postgres».
>>
>> mibd_2=# CREATE EXTENSION postgres_fdw;
>> CREATE EXTENSION
>>
>> mibd_2=# CREATE SERVER mibd1_srv FOREIGN DATA WRAPPER postgres_fdw
>> OPTIONS (host 'localhost',dbname 'mibd_1', port '5432');
>> CREATE SERVER
>>
>> mibd_2=# CREATE USER MAPPING FOR postgres SERVER mibd1_srv OPTIONS(user
>> 'miuser_db1', password 'miuser_db1');
>> CREATE USER MAPPING
>>
>> mibd_2=# CREATE FOREIGN TABLE db1_mitabla1 (id integer, name varchar(20))
>> SERVER mibd1_srv OPTIONS(schema_name 'midb1_catalog', table_name
>> 'mitabla1');
>> CREATE FOREIGN TABLE
>>
>> mibd_2=# select * from db1_mitabla1;
>>  id | name
>> +---
>>   1 | registrodb1_1
>>   2 | registrodb1_2
>>   3 | registrodb1_3
>> (3 filas)
>>
>> *osea, nuevamente excelente!...funciona!...  pero desde el usuario
>> postgres cuando intento hacerlo desde mi usuario:  miuser_db2 ..
>> falla..*
>>
>> mibd_2=# \c mibd_2 miuser_db2
>> Ahora esta conectado a la base de datos «mibd_2» con el usuario
>> «miuser_db2».
>>
>> mibd_2=> select * from db1_mitabla1;
>>
>> *ERROR:  permiso denegado a la relacion db1_mitabla1 *
>>
>> *...volví al usuario postgres le di un grant select para mi
>> usuario miuser_db2*.* volví a conectarme a mi usuario* *y probé de
>> nuevo..*
>>
>> mibd_2=# \c mibd_2 miuser_db2
>> Ahora esta conectado a la base de datos «mibd_2» con el usuario
>> «miuser_db2».
>>
>> mibd_2=> select * from db1_mitabla1;
>>
>> *ERROR:  no se encontro un mapeo para el usuario «miuser_db2» *
>>
>> *Me podrían ayudar con este detallito.??..*
>>
>> ...en una de las pruebas también creé un user mapping adicional:
>>
>> CREATE USER MAPPING FOR miuser_db2 SERVER mibd1_srv OPTIONS(user
>> 'miuser_db1', password 'miuser_db1');
>>
>> pero al conectarme y probar:
>>
>> mibd_2=# \c mibd_2 miuser_db2
>> Ahora esta conectado a la base de datos «mibd_2» con el usuario
>> «miuser_db2».
>>
>> mibd_2=> select * from db1_mitabla1;
>>
>>
>> *ERROR:  password is required DETALLE:  Non-superuser cannot connect if
>> the server does not request a password. SUGERENCIA:  Target server's
>> authentication method must be changed.*
>>
>> osea, me encuentro casi con los mismos errores que con dblink...
>>
>> Slds.
>> Andrés
>>
>>
>>
>>
>>
>>
>> El vie, 20 ago 2021 a las 12:51, Andrés P.P. ()
>> escribió:
>>
>>>
>>> oh!...voy a investigar eso...
>>>
>>> Gracias Anthony.
>>>
>>> Slds.
>>> Andrés.
>>>
>>>
>>> El vie, 20 ago 2021 a las 12:47, Anthony Sotolongo (<
>>> asotolo...@gmail.com>) escribió:
>>>
 Hola Andres, te 

Re: Dudas DBLink

2021-08-20 Thread Andrés P . P .
Hola Anthony, Hola Heriberto...

Tengo mis accesos en trust ...

# TYPE  DATABASEUSERADDRESS METHOD
local   all all trust

.. no debería pedirme password...  ojo que cuando creé el user mapping con
postgres puedo leer la tabla remota  pero si creo el user mapping con
mi usuario (miuser_db2) o le doy grant select desde postgres... me salen
esos errores...

(mientras tanto probaré con los permisos de connect y usage que menciona
Heriberto)..

Slds.
Andrés
.


El vie, 20 ago 2021 a las 16:05, Anthony Sotolongo ()
escribió:

> Hola nuevamente Andres,  me parece que es un tema de los permisos...   y
> accesos
>
>
> ¿Puedes mostrar tu archivo pg_hba.conf?
>
> Saludos
> On 20/8/21 15:41, Andrés P.P. wrote:
>
>
> Estimados, Anthony..
>
> Probé el postgres_fdw y me funcionó... pero nuevamente para el usuario
> postgres...
>
> Creé las mismas dos bds, esquemas y tablas... y luego, en vez de dblink
> hice lo siguiente:
>
> mibd_2=> \c mibd_2 postgres
> Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».
>
> mibd_2=# CREATE EXTENSION postgres_fdw;
> CREATE EXTENSION
>
> mibd_2=# CREATE SERVER mibd1_srv FOREIGN DATA WRAPPER postgres_fdw OPTIONS
> (host 'localhost',dbname 'mibd_1', port '5432');
> CREATE SERVER
>
> mibd_2=# CREATE USER MAPPING FOR postgres SERVER mibd1_srv OPTIONS(user
> 'miuser_db1', password 'miuser_db1');
> CREATE USER MAPPING
>
> mibd_2=# CREATE FOREIGN TABLE db1_mitabla1 (id integer, name varchar(20))
> SERVER mibd1_srv OPTIONS(schema_name 'midb1_catalog', table_name
> 'mitabla1');
> CREATE FOREIGN TABLE
>
> mibd_2=# select * from db1_mitabla1;
>  id | name
> +---
>   1 | registrodb1_1
>   2 | registrodb1_2
>   3 | registrodb1_3
> (3 filas)
>
> *osea, nuevamente excelente!...funciona!...  pero desde el usuario
> postgres cuando intento hacerlo desde mi usuario:  miuser_db2 ..
> falla..*
>
> mibd_2=# \c mibd_2 miuser_db2
> Ahora esta conectado a la base de datos «mibd_2» con el usuario
> «miuser_db2».
>
> mibd_2=> select * from db1_mitabla1;
>
> *ERROR:  permiso denegado a la relacion db1_mitabla1 *
>
> *...volví al usuario postgres le di un grant select para mi
> usuario miuser_db2*.* volví a conectarme a mi usuario* *y probé de
> nuevo..*
>
> mibd_2=# \c mibd_2 miuser_db2
> Ahora esta conectado a la base de datos «mibd_2» con el usuario
> «miuser_db2».
>
> mibd_2=> select * from db1_mitabla1;
>
> *ERROR:  no se encontro un mapeo para el usuario «miuser_db2» *
>
> *Me podrían ayudar con este detallito.??..*
>
> ...en una de las pruebas también creé un user mapping adicional:
>
> CREATE USER MAPPING FOR miuser_db2 SERVER mibd1_srv OPTIONS(user
> 'miuser_db1', password 'miuser_db1');
>
> pero al conectarme y probar:
>
> mibd_2=# \c mibd_2 miuser_db2
> Ahora esta conectado a la base de datos «mibd_2» con el usuario
> «miuser_db2».
>
> mibd_2=> select * from db1_mitabla1;
>
>
> *ERROR:  password is required DETALLE:  Non-superuser cannot connect if
> the server does not request a password. SUGERENCIA:  Target server's
> authentication method must be changed.*
>
> osea, me encuentro casi con los mismos errores que con dblink...
>
> Slds.
> Andrés
>
>
>
>
>
>
> El vie, 20 ago 2021 a las 12:51, Andrés P.P. ()
> escribió:
>
>>
>> oh!...voy a investigar eso...
>>
>> Gracias Anthony.
>>
>> Slds.
>> Andrés.
>>
>>
>> El vie, 20 ago 2021 a las 12:47, Anthony Sotolongo ()
>> escribió:
>>
>>> Hola Andres, te recomiendo que uses FDW para ese tipo de actividad en
>>> PostgreSQL, FDW provee una sintaxis más limpia y adem[as es compatible con
>>> los estándares y en la mayor[iaa de los escenarios puede ofrecer un mejor
>>> rendimiento
>>>
>>> para la version 9.6:
>>> https://www.postgresql.org/docs/9.6/postgres-fdw.html
>>>
>>> Asi podrás también simplicar el tema que preguntas del sinónimo(que en
>>> PostgreSQL no existe ese concepto), pues ya defines la tabla que es otro
>>> objeto más de tu base de datos aunque los datos estan en otra base.
>>>
>>>
>>> Saludos
>>>
>>>
>>> On 20/8/21 12:27, Andrés P.P. wrote:
>>>
>>>
>>> Estimados
>>>
>>> Quiero comunicar dos BDs que están en la misma máquina (motor 9.6), asi
>>> que antes de tocar las BDs oficiales me creé el siguiente caso-ejemplo
>>> Una bd1 con una tabla, otra bd2 con otra tabla y el objetivo es leer
>>> datos de la bd1 desde la bd2.
>>>
>>> Al final les hago las consultas...
>>>
>>>
>>> *Primero creé mi bd1, un usuario, un schema y una tabla *
>>>
>>> ==
>>> postgres=# \c template1 postgres
>>> Ahora esta conectado a la base de datos «template1» con el usuario
>>> «postgres».
>>>
>>> template1=# create database mibd_1;
>>> CREATE DATABASE
>>>
>>> template1=# \c mibd_1 postgres
>>> Ahora esta conectado a la base de datos «mibd_1» con el usuario
>>> «postgres».
>>>
>>> mibd_1=# create user miuser_db1 password 'miuser_db1' nocreatedb;
>>> CREATE 

Re: Dudas DBLink

2021-08-20 Thread Andrés P . P .
Estimados, Anthony..

Probé el postgres_fdw y me funcionó... pero nuevamente para el usuario
postgres...

Creé las mismas dos bds, esquemas y tablas... y luego, en vez de dblink
hice lo siguiente:

mibd_2=> \c mibd_2 postgres
Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».

mibd_2=# CREATE EXTENSION postgres_fdw;
CREATE EXTENSION

mibd_2=# CREATE SERVER mibd1_srv FOREIGN DATA WRAPPER postgres_fdw OPTIONS
(host 'localhost',dbname 'mibd_1', port '5432');
CREATE SERVER

mibd_2=# CREATE USER MAPPING FOR postgres SERVER mibd1_srv OPTIONS(user
'miuser_db1', password 'miuser_db1');
CREATE USER MAPPING

mibd_2=# CREATE FOREIGN TABLE db1_mitabla1 (id integer, name varchar(20))
SERVER mibd1_srv OPTIONS(schema_name 'midb1_catalog', table_name
'mitabla1');
CREATE FOREIGN TABLE

mibd_2=# select * from db1_mitabla1;
 id | name
+---
  1 | registrodb1_1
  2 | registrodb1_2
  3 | registrodb1_3
(3 filas)

*osea, nuevamente excelente!...funciona!...  pero desde el usuario
postgres cuando intento hacerlo desde mi usuario:  miuser_db2 ..
falla..*

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».

mibd_2=> select * from db1_mitabla1;

*ERROR:  permiso denegado a la relacion db1_mitabla1*

*...volví al usuario postgres le di un grant select para mi
usuario miuser_db2*.* volví a conectarme a mi usuario* *y probé de
nuevo..*

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».

mibd_2=> select * from db1_mitabla1;

*ERROR:  no se encontro un mapeo para el usuario «miuser_db2»*

*Me podrían ayudar con este detallito.??..*

...en una de las pruebas también creé un user mapping adicional:

CREATE USER MAPPING FOR miuser_db2 SERVER mibd1_srv OPTIONS(user
'miuser_db1', password 'miuser_db1');

pero al conectarme y probar:

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».

mibd_2=> select * from db1_mitabla1;


*ERROR:  password is requiredDETALLE:  Non-superuser cannot connect if the
server does not request a password.SUGERENCIA:  Target server's
authentication method must be changed.*

osea, me encuentro casi con los mismos errores que con dblink...

Slds.
Andrés






El vie, 20 ago 2021 a las 12:51, Andrés P.P. ()
escribió:

>
> oh!...voy a investigar eso...
>
> Gracias Anthony.
>
> Slds.
> Andrés.
>
>
> El vie, 20 ago 2021 a las 12:47, Anthony Sotolongo ()
> escribió:
>
>> Hola Andres, te recomiendo que uses FDW para ese tipo de actividad en
>> PostgreSQL, FDW provee una sintaxis más limpia y adem[as es compatible con
>> los estándares y en la mayor[iaa de los escenarios puede ofrecer un mejor
>> rendimiento
>>
>> para la version 9.6:
>> https://www.postgresql.org/docs/9.6/postgres-fdw.html
>>
>> Asi podrás también simplicar el tema que preguntas del sinónimo(que en
>> PostgreSQL no existe ese concepto), pues ya defines la tabla que es otro
>> objeto más de tu base de datos aunque los datos estan en otra base.
>>
>>
>> Saludos
>>
>>
>> On 20/8/21 12:27, Andrés P.P. wrote:
>>
>>
>> Estimados
>>
>> Quiero comunicar dos BDs que están en la misma máquina (motor 9.6), asi
>> que antes de tocar las BDs oficiales me creé el siguiente caso-ejemplo
>> Una bd1 con una tabla, otra bd2 con otra tabla y el objetivo es leer
>> datos de la bd1 desde la bd2.
>>
>> Al final les hago las consultas...
>>
>>
>> *Primero creé mi bd1, un usuario, un schema y una tabla *
>> ==
>> postgres=# \c template1 postgres
>> Ahora esta conectado a la base de datos «template1» con el usuario
>> «postgres».
>>
>> template1=# create database mibd_1;
>> CREATE DATABASE
>>
>> template1=# \c mibd_1 postgres
>> Ahora esta conectado a la base de datos «mibd_1» con el usuario
>> «postgres».
>>
>> mibd_1=# create user miuser_db1 password 'miuser_db1' nocreatedb;
>> CREATE ROLE
>>
>> mibd_1=# create schema midb1_catalog authorization miuser_db1;
>> CREATE SCHEMA
>>
>> mibd_1=# \c mibd_1 miuser_db1
>> Ahora esta conectado a la base de datos «mibd_1» con el usuario
>> «miuser_db1».
>>
>> mibd_1=# create table midb1_catalog.mitabla1 (id integer, name
>> varchar(20));
>> CREATE TABLE
>>
>> mibd_1=# insert into midb1_catalog.mitabla1 values(1,'registrodb1_1');
>> INSERT 0 1
>> mibd_1=# insert into midb1_catalog.mitabla1 values(2,'registrodb1_2');
>> INSERT 0 1
>> mibd_1=# insert into midb1_catalog.mitabla1 values(3,'registrodb1_3');
>> INSERT 0 1
>>
>> mibd_1=# select * from midb1_catalog.mitabla1;
>>  id | name
>> +---
>>   1 | registrodb1_1
>>   2 | registrodb1_2
>>   3 | registrodb1_3
>>
>> ==
>>
>> *Luego, en la misma máquina, creé mi bd2 , un usuario, un esquema y una
>> tabla *
>> postgres=# \c template1 postgres
>> Ahora esta conectado a la base de datos «template1» con el 

Re: Dudas DBLink

2021-08-20 Thread Andrés P . P .
oh!...voy a investigar eso...

Gracias Anthony.

Slds.
Andrés.


El vie, 20 ago 2021 a las 12:47, Anthony Sotolongo ()
escribió:

> Hola Andres, te recomiendo que uses FDW para ese tipo de actividad en
> PostgreSQL, FDW provee una sintaxis más limpia y adem[as es compatible con
> los estándares y en la mayor[iaa de los escenarios puede ofrecer un mejor
> rendimiento
>
> para la version 9.6: https://www.postgresql.org/docs/9.6/postgres-fdw.html
>
> Asi podrás también simplicar el tema que preguntas del sinónimo(que en
> PostgreSQL no existe ese concepto), pues ya defines la tabla que es otro
> objeto más de tu base de datos aunque los datos estan en otra base.
>
>
> Saludos
>
>
> On 20/8/21 12:27, Andrés P.P. wrote:
>
>
> Estimados
>
> Quiero comunicar dos BDs que están en la misma máquina (motor 9.6), asi
> que antes de tocar las BDs oficiales me creé el siguiente caso-ejemplo
> Una bd1 con una tabla, otra bd2 con otra tabla y el objetivo es leer datos
> de la bd1 desde la bd2.
>
> Al final les hago las consultas...
>
>
> *Primero creé mi bd1, un usuario, un schema y una tabla *
> ==
> postgres=# \c template1 postgres
> Ahora esta conectado a la base de datos «template1» con el usuario
> «postgres».
>
> template1=# create database mibd_1;
> CREATE DATABASE
>
> template1=# \c mibd_1 postgres
> Ahora esta conectado a la base de datos «mibd_1» con el usuario «postgres».
>
> mibd_1=# create user miuser_db1 password 'miuser_db1' nocreatedb;
> CREATE ROLE
>
> mibd_1=# create schema midb1_catalog authorization miuser_db1;
> CREATE SCHEMA
>
> mibd_1=# \c mibd_1 miuser_db1
> Ahora esta conectado a la base de datos «mibd_1» con el usuario
> «miuser_db1».
>
> mibd_1=# create table midb1_catalog.mitabla1 (id integer, name
> varchar(20));
> CREATE TABLE
>
> mibd_1=# insert into midb1_catalog.mitabla1 values(1,'registrodb1_1');
> INSERT 0 1
> mibd_1=# insert into midb1_catalog.mitabla1 values(2,'registrodb1_2');
> INSERT 0 1
> mibd_1=# insert into midb1_catalog.mitabla1 values(3,'registrodb1_3');
> INSERT 0 1
>
> mibd_1=# select * from midb1_catalog.mitabla1;
>  id | name
> +---
>   1 | registrodb1_1
>   2 | registrodb1_2
>   3 | registrodb1_3
>
> ==
>
> *Luego, en la misma máquina, creé mi bd2 , un usuario, un esquema y una
> tabla *
> postgres=# \c template1 postgres
> Ahora esta conectado a la base de datos «template1» con el usuario
> «postgres».
>
> template1=# create database mibd_2;
> CREATE DATABASE
>
> template1=# \c mibd_2 postgres
> Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».
>
> mibd_2=# create user miuser_db2 password 'miuser_db2' nocreatedb;
> CREATE ROLE
>
> mibd_2=# create schema midb2_catalog authorization miuser_db2;
> CREATE SCHEMA
>
> mibd_2=# \c mibd_2 miuser_db2
> Ahora esta conectado a la base de datos «mibd_2» con el usuario
> «miuser_db2».
>
> mibd_2=# create table midb2_catalog.mitabla2 (id integer, name
> varchar(20));
> CREATE TABLE
>
> mibd_2=# insert into midb2_catalog.mitabla2 values(1,'registrodb2_1');
> INSERT 0 1
> mibd_2=# insert into midb2_catalog.mitabla2 values(2,'registrodb2_2');
> INSERT 0 1
> mibd_2=# insert into midb2_catalog.mitabla2 values(3,'registrodb2_3');
> INSERT 0 1
> mibd_2=# insert into midb2_catalog.mitabla2 values(4,'registrodb2_4');
> INSERT 0 1
>
> mibd_2=# select * from midb2_catalog.mitabla2;
>  id | name
> +---
>   1 | registrodb2_1
>   2 | registrodb2_2
>   3 | registrodb2_3
>   4 | registrodb2_4
>
> ===
> *Hasta aquí todo sin novedades..*
>
>
> *Intento crear la extension (aún conectado a mi usuario miuser_db2) *
> mibd_2=> create extension dblink;
> ERROR:  se ha denegado el permiso para crear la extension «dblink»
> SUGERENCIA:  Debe ser superusuario para crear esta extension.
>
> Asi que me conecto al usuario postgres
>
> mibd_2=> \c mibd_2 postgres
> Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».
>
> mibd_2=# create extension dblink;
> CREATE EXTENSION
>
> bien!
> ===
>
>
> *Luego (aún conectado al usuario postgres), intenté leer desde mi db2 la
> data de la db1... de acuerdo a los ejemplos que vi.. *
> mibd_2=# *select t1.name  from dblink('dbname=mibd_1
> user=miuser_db1 password=miuser_db1','select name from
> midb1_catalog.mitabla1') AS t1(name varchar(20))*;
>  name
> ---
>  registrodb1_1
>  registrodb1_2
>  registrodb1_3
>
> *bien! ...  HASTA AQUÍ LOGRÉ EL OBJETIVO!..  (Sin embargo, necesito que
> funcione estando conectado al usuario particular que creé..  miuser_db2)*
>
>
> 
> *Me cambié a mi usuario:*
>
> mibd_2=# \c mibd_2 

Dudas DBLink

2021-08-20 Thread Andrés P . P .
Estimados

Quiero comunicar dos BDs que están en la misma máquina (motor 9.6), asi que
antes de tocar las BDs oficiales me creé el siguiente caso-ejemplo
Una bd1 con una tabla, otra bd2 con otra tabla y el objetivo es leer datos
de la bd1 desde la bd2.

Al final les hago las consultas...


*Primero creé mi bd1, un usuario, un schema y una tabla*
==
postgres=# \c template1 postgres
Ahora esta conectado a la base de datos «template1» con el usuario
«postgres».

template1=# create database mibd_1;
CREATE DATABASE

template1=# \c mibd_1 postgres
Ahora esta conectado a la base de datos «mibd_1» con el usuario «postgres».

mibd_1=# create user miuser_db1 password 'miuser_db1' nocreatedb;
CREATE ROLE

mibd_1=# create schema midb1_catalog authorization miuser_db1;
CREATE SCHEMA

mibd_1=# \c mibd_1 miuser_db1
Ahora esta conectado a la base de datos «mibd_1» con el usuario
«miuser_db1».

mibd_1=# create table midb1_catalog.mitabla1 (id integer, name varchar(20));
CREATE TABLE

mibd_1=# insert into midb1_catalog.mitabla1 values(1,'registrodb1_1');
INSERT 0 1
mibd_1=# insert into midb1_catalog.mitabla1 values(2,'registrodb1_2');
INSERT 0 1
mibd_1=# insert into midb1_catalog.mitabla1 values(3,'registrodb1_3');
INSERT 0 1

mibd_1=# select * from midb1_catalog.mitabla1;
 id | name
+---
  1 | registrodb1_1
  2 | registrodb1_2
  3 | registrodb1_3

==

*Luego, en la misma máquina, creé mi bd2 , un usuario, un esquema y una
tabla*
postgres=# \c template1 postgres
Ahora esta conectado a la base de datos «template1» con el usuario
«postgres».

template1=# create database mibd_2;
CREATE DATABASE

template1=# \c mibd_2 postgres
Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».

mibd_2=# create user miuser_db2 password 'miuser_db2' nocreatedb;
CREATE ROLE

mibd_2=# create schema midb2_catalog authorization miuser_db2;
CREATE SCHEMA

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».

mibd_2=# create table midb2_catalog.mitabla2 (id integer, name varchar(20));
CREATE TABLE

mibd_2=# insert into midb2_catalog.mitabla2 values(1,'registrodb2_1');
INSERT 0 1
mibd_2=# insert into midb2_catalog.mitabla2 values(2,'registrodb2_2');
INSERT 0 1
mibd_2=# insert into midb2_catalog.mitabla2 values(3,'registrodb2_3');
INSERT 0 1
mibd_2=# insert into midb2_catalog.mitabla2 values(4,'registrodb2_4');
INSERT 0 1

mibd_2=# select * from midb2_catalog.mitabla2;
 id | name
+---
  1 | registrodb2_1
  2 | registrodb2_2
  3 | registrodb2_3
  4 | registrodb2_4

===
*Hasta aquí todo sin novedades..*


*Intento crear la extension (aún conectado a mi usuario miuser_db2)*
mibd_2=> create extension dblink;
ERROR:  se ha denegado el permiso para crear la extension «dblink»
SUGERENCIA:  Debe ser superusuario para crear esta extension.

Asi que me conecto al usuario postgres

mibd_2=> \c mibd_2 postgres
Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».

mibd_2=# create extension dblink;
CREATE EXTENSION

bien!
===


*Luego (aún conectado al usuario postgres), intenté leer desde mi db2 la
data de la db1... de acuerdo a los ejemplos que vi..*
mibd_2=# *select t1.name  from dblink('dbname=mibd_1
user=miuser_db1 password=miuser_db1','select name from
midb1_catalog.mitabla1') AS t1(name varchar(20))*;
 name
---
 registrodb1_1
 registrodb1_2
 registrodb1_3

*bien! ...  HASTA AQUÍ LOGRÉ EL OBJETIVO!..  (Sin embargo, necesito que
funcione estando conectado al usuario particular que creé..  miuser_db2)*


*Me cambié a mi usuario:*

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».
mibd_2=> *select t1.name  from dblink('dbname=mibd_1
user=miuser_db1 password=miuser_db1','select name from
midb1_catalog.mitabla1') AS t1(name varchar(20));*


*ERROR:  password is requiredDETALLE:  Non-superuser cannot connect if the
server does not request a password.SUGERENCIA:  Target server's
authentication method must be changed.*

*Leí las sugerencias, me conecté al usuario postgres y apliqué unos
permisos para usar una función alternativa a dblink:*

mibd_2=> \c mibd_2 postgres
Ahora esta conectado a la base de datos «mibd_2» con el usuario «postgres».
mibd_2=# grant execute on function *dblink_connect_u*(text) TO miuser_db2;
GRANT
mibd_2=# grant execute on function *dblink_connect_u*(text,text) TO
miuser_db2;
GRANT

*Intento nuevamente*

mibd_2=# \c mibd_2 miuser_db2
Ahora esta conectado a la base de datos «mibd_2» con el usuario
«miuser_db2».

mibd_2=> 

Re: Replicación M-M.... BDR, plogical.... en PG 9.5

2018-05-18 Thread Andrés P . P .
Muchas gracias Martin

Por ahora usaré SR y haré el switch cuando se requiera ..y veremos si
podemos aprovechar el StandBy para Reportería y quitarle esa carga al
principal..
De todas formas intentaré hacer un ambiente de pruebas para ir probando el
PGlogical y seguir esperando al BDR.. :)

La verdad es que el esquema M-M es lo ideal, pero los requerimientos
actuales (cliente) tampoco generan una obligatoriedad de una implementación
de ese tipo  y comercialmente (acá) tampoco.. :) ... pero se habría
visto bonito presentarla y verla en operaciones.

Gracias nuevamente

Slds.
AP.
.


El 18 de mayo de 2018, 9:31, Martín Marqués 
escribió:

> Hola Andrés,
>
> El 16/05/18 a las 16:22, Andrés P.P. escribió:
> >
> > Gracias Martín por el detalle.
> >
> > ...creo que no le puse atención a la parte comercial.. :(
> >
> > Sip, me llegó el correo de la buena nueva de BDR v3 para PG10... pero
> > tampoco puse atención en los términos comerciales...
>
> Como dije, BDR 3 no está terminado aún. Esta en beta aun. Por el momento
> no será liberado al público general, pero trataremos de incorporar más
> partes en la próxima versión de postgres 12.
>
> > Respecto a PGlogical, por ahora no tengo opción de migrar a PG10 los
> > servidores que serán replicados son PG 9.5.7 y debo encontrar la mejor
> > opción para eso tú me dices que puedo utilizar PGlogical para la
> > versión PG 9.5 ??  Espero tu comentario para ponerme a investigar al
> > respecto...  (te agradecería si tienes a la mano algún link ejemplo como
> > para asimilarlo más rápido)...
>
> Esto es muy complicado como para una respuesta Si/No.
>
> Te recomiendo leer la documentación de pglogical y hacer *muchas*
> pruebas. Creo que donde más problemas a resolver vas a tener es en los
> cambios de esquema (ejecución de DDL) y resolución de conflictos.
>
> Si realmente necesitas poner en marcha multimaestro, te recomendaría
> ponerte en contacto con la gente de ventas de 2ndQuadrant para ver como
> te podemos ayudar.
>
> P.D.: Se de personas que han implementado hace ya muchos años MM con
> replicación por triggers, pero es harto complicado, y tienen muchas
> limitaciones.
>
> --
> Martín Marquéshttp://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>


Re: Replicación M-M.... BDR, plogical.... en PG 9.5

2018-05-16 Thread Andrés P . P .
Gracias Martín por el detalle.

...creo que no le puse atención a la parte comercial.. :(

Sip, me llegó el correo de la buena nueva de BDR v3 para PG10... pero
tampoco puse atención en los términos comerciales...

Respecto a PGlogical, por ahora no tengo opción de migrar a PG10 los
servidores que serán replicados son PG 9.5.7 y debo encontrar la mejor
opción para eso tú me dices que puedo utilizar PGlogical para la
versión PG 9.5 ??  Espero tu comentario para ponerme a investigar al
respecto...  (te agradecería si tienes a la mano algún link ejemplo como
para asimilarlo más rápido)...

Gracias nuevamente.

Slds.
AP.
.




El 16 de mayo de 2018, 13:51, Martín Marqués 
escribió:

> El 15/05/18 a las 20:42, Andrés P.P. escribió:
> >
> > Estuve leyendo sobre BDR, pero finalmente no pude determinar si sirve o
> > no para 9.5 al parecer se hizo para versiones modificadas de 9.4...
> > pero para 9.5 no se hizo nada ..pero sí se incluiría como parte del
> > paquete 9.6  eso fue lo que entendí (o mal entendí).  y en los
> > foros que busqué BDR con PG 9.5 tampoco me dejó claro que pudiera
> > hacerse... incluso proponían el mismo método de instalación para PG 9.4
> > pero sin certeza absoluta de éxito..
>
> El proceso de BDR arranco por 9.2 donde se empezaron a desarrollar
> funcionalidades que eran necesarias para un sistema MM con alta latencia.
>
> La primer versión que se liberó fue cuando se pudo incorporar a postgres
> "logical decoding" y "replication slots". Pero aun faltaban algunas
> piezas en 9.4, por eso BDR funciona sobre una versión modificada de
> postgres 9.4.
>
> Eso que faltaba en 9.4 se fue incorporando en las versiones sucesivas de
> postgres.
>
> Para 9.6 hay una versión de BDR pero es solo para clientes de
> 2ndQuadrant y es básicamente un "rebase" de BDR 1.x, con algunos cambios
> menores.
>
> Para postgres 10 va a haber una versión nueva de BDR, que va a funcionar
> sobre versiones oficiales de postgres 10 (sin parches). Inicialmente,
> solo va a estar disponible para clientes de 2ndQuadrant, con intensiones
> de librar el código más adelante.
>
> > Podrían orientarme al respecto?.. y en caso que BDR no se pueda..
> > es posible configurar pglogical para dejar como master un server que
> > originalmente era esclavo ??..
>
> Si, eso es posible de hacer con pglogical. Más aún, una de las
> utilidades de pglogical es realizar upgrade online, que es en esencia
> tener un proveedor de cambios y un subscriptor con la nueva versión y en
> un momento indicado, mover la aplicación a la nueva versión.
>
> > Yo alguna vez implementé un modelo Hot StandBy, pero quiero probar con
> > alguna de estas dos nuevas formas...
>
> Podrías arrancar con la replicación lógica en PG10.
>
> Saludos
>
>
> --
> Martín Marquéshttp://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>


Replicación M-M.... BDR, plogical.... en PG 9.5

2018-05-15 Thread Andrés P . P .
Hola!

Necesito orientación..

Tengo una bd en PG 9.5.7 de tamaño > 100GB... y quiero configurar un modelo
de replicación maestro - maestro con otro server que tendrá el mismo PG..

Estuve leyendo sobre BDR, pero finalmente no pude determinar si sirve o no
para 9.5 al parecer se hizo para versiones modificadas de 9.4... pero
para 9.5 no se hizo nada ..pero sí se incluiría como parte del paquete
9.6  eso fue lo que entendí (o mal entendí).  y en los foros que
busqué BDR con PG 9.5 tampoco me dejó claro que pudiera hacerse... incluso
proponían el mismo método de instalación para PG 9.4 pero sin certeza
absoluta de éxito..

Podrían orientarme al respecto?.. y en caso que BDR no se pueda..  es
posible configurar pglogical para dejar como master un server que
originalmente era esclavo ??..

Yo alguna vez implementé un modelo Hot StandBy, pero quiero probar con
alguna de estas dos nuevas formas...

Desde ya muchas gracias por cualquier orientación al respecto.

Slds.
AP.
.