Contents

  1. PostgreSQL
  2. Instal·lació
  3. Configuració
    1. Psql 9.3
  4. Optimitzar postgres
  5. Comandes
    1. Crear usuari
    2. Eliminar usuari
    3. Veure usuaris donats d'alta
    4. Crear base de dades
    5. Eliminar base de dades
    6. Reanomenar base de dades
    7. Canviar propietari de la base de dades
    8. Canviar propietari de totes les taules, vistes i seqüències d'una base de dades
  6. Còpies de Seguretat
    1. Manualment
      1. Opció 1
      2. Opció 2
    2. Scripts automatitzats
  7. Restore una taula
  8. RestoreDB
  9. Copia base de dades entre servidors
  10. Control de bloquejos de taules
  11. Comandes varies
    1. Unir tots els resultats en un sol registre
    2. Usuaris usant b.d. i matar queries
    3. Copiar / Actualitzar dades entre bases de dades
    4. Volcar dades SQL a fitxer
    5. Modificar estructura taula
    6. Canviar caràcters d'un camp per tots els registres
    7. Detectar dos registres amb el mateix camp
    8. Omplir un camp que relaciona dos taules amb la informació recíproca
    9. Crear un usuari de postgres amb permisos de només lectura
    10. Llista del nom de totes les taules d'una b.d.
    11. Llista del nombre de registres de totes les taules d'una b.d.
    12. Modificar el número de seqüència de l'identificador d'una taula
    13. Reset del WAL de postgres (write-ahead log ) si ha quedat corrupte
    14. Canviar LOCALE
    15. Trobar tots els camps que apunten a una taula (són clau forània)
    16. Update amb dos taules
    17. Drop Not Null
    18. Strings i tractament
    19. aggregate
    20. update with subquery
  12. PhpPgAdmin
  13. Postgres 8.4 / 9.1
    1. Reinici servidors postgres
    2. Accedir psql 8.4
  14. Actualitzar PostgreSQL 8.4 a 9.1 rere actualització del sistema operatiu
  15. Replicació
    1. Create user replication in the master
    2. Check
    3. Create
  16. Monitorizació
  17. Upgrades
    1. Ubuntu
    2. Debian
    3. Canviar de port de postgres
    4. Iniciar PSQL quan s'inicia el servidor (both)

PostgreSQL

PostgreSQL és, junt amb MySQL, un gestor de bases de dades amb llicència lliure molt popular.

Instal·lació

Abans de començar s'ha de comprovar que els locale del sistema operatiu estan correctament configurats.

$ sudo aptitude install postgresql postgresql-client libpq-dev

Configuració

Quan s'instal.la PostgreSQL es crea un usuari postgres (usuari en el sistema linux i de la base de dades). Aquest usuari ens permetrà administrar/configurar PostgreSQL.

$ sudo su postgres
postgres@maquina#

Ara ja podem crear un usuari amb la seva clau d'accés (password) i una base de dades:

postgres@maquina# createuser --pwprompt --createdb --no-createrole --no-superuser <nom_usuari>
postgres@maquina# createdb NOM_BASE_DE_DADES -E UTF8 -O NOM_DE_USUARI

Usuari amb password:

$ createuser --pwprompt --no-superuser moodle 
Enter password for new role: 
Enter it again: 

Psql 9.3

postgres@maquina# createuser -d --pwprompt NOM_DE_USUARI

Ja tenim creada una base de dades i un usuari amb la seva clau d'accés. Sortirem de l'usuari postgres amb Ctlr+D o escrivint la comanda exit al terminal.

Mirarem que el fitxer de configuració /etc/postgresql/8.3/main/postgresql.conf (segons versió serà 8.1, 8.2 o 8.3) no es trobi comentada la línia:

port = 5432

Si només acceptem connexions des del localhost:

listen_addresses = 'localhost'

Però si acceptem connexions de tot arreu:

listen_addresses = '*'

O d'alguna IP en concret (podem posar una llista de IPs separades per comes):

listen_addresses = 'localhost,80.35.151.105'            # what IP address(es) to listen on;

i a més a més en el fitxer /etc/postgresql/8.3/main/pg_hba.conf cal tenir una o més línies com aquestes depenent si volem només connexions localhost:

# "local" is for Unix domain socket connections only
local   all             all                                     peer

per

# "local" is for Unix domain socket connections only
local   all             all                                     md5

Si també d'algunes màquines de l'exterior farem:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
host    all         all         192.168.0.0 255.255.255.0 md5
host    all         all         62.57.200.0 255.255.248.0 md5

Per arrancar, aturar o rearrancar el servidor PostgreSQL ho podem fer amb les comandes (segons versió serà 8.1, 8.2 o 8.3):

usuari@maquina$ sudo /etc/init.d/postgresql-8.3 start
usuari@maquina$ sudo /etc/init.d/postgresql-8.3 stop
usuari@maquina$ sudo /etc/init.d/postgresql-8.3 restart

Optimitzar postgres

Nota: Available Memory = Memòria física de la màquina - Memòria usada per altres serveis (apache, mysql, openerp, ...).

Cal editar els següents paràmetres del fitxer /etc/postgresql/8.?/main/postgresql.conf i posteriorment reengegar servidor postgres:

^Paràmetre            ^ Valor per defecte ^ Recomanat                            ^ Notes
|shared_buffers       |                   | 0.25 * Available Memory              | Veure Nota (a)
|work_mem             | 1MB               | Available Memory / (max_connections) | Si no arriba a 16MB, caldria comprar més memòria
|maintenance_work_mem | 16MB              | Available Memory / 8                 | 
|wal_buffers          | 64kB              | -1 (agafarà 8MB o 16MB)              | Noves versions postgres agafarà automàticament 8MB o 16MB si és -1
|checkpoint_segments  | 3                 | 16 a 128                             | 
|effective_cache_size | 128MB             | Available Memory * 0.75              | 
|cpu_tuple_cost       | 0.0100            | 0.0030                               | 
|cpu_index_tuple_cost | 0.0050            | 0.0010                               | 
|cpu_operator_cost    | 0.0025            | 0.0005                               | 

Nota (a): Si es puja el paràmetre shared_buffers, cal canviar el paràmetre kernel.shmmax de linux. El valor shared_buffers *2 en bytes cal posar-lo a /proc/sys/kernel/shmmax i per fer-lo persistent als reinici de linux com a opció dins del fitxer de configuració /etc/sysctl.conf. Per exemple, per pujar-lo a 100MB:

  echo 104857600 > /proc/sys/kernel/shmmax
  vi /etc/sysctl.conf (i afegir una línia amb: kernel.shmmax = 104857600)
  sysctl -p /etc/sysctl.conf

Per optimitzar queries individuals, podem activar el log de queries lentes, per exemple les que durin més de 30 mseg:

  log_min_duration_statement = 30

Per fer un import d'una b.d. molt voluminosa es pot optimitzar canviant aquests paràmetres (cal tornar a deixar els paràmetres anteriors un cop l'import estigui fet i executar un VACUUM ANALYZE sobre la b.d. per actualitzar les estadístiques internes):

  fsync = off
  shared_buffers = [1/3 of available memory]
  wal_buffers = 1MB
  checkpoint_timeout = 1h
  checkpoint_segments = 300  # Have a *lot* of spare disk space for this
  maintenance_work_mem = [1/3 of available memory]

Comandes

Crear usuari

sudo su postgres
createuser --pwprompt --createdb nom_usuari

Eliminar usuari

sudo su postgres
dropuser nom_usuari

Veure usuaris donats d'alta

$ sudo su postgres
$ psql
# select * from pg_shadow;

Crear base de dades

sudo su postgres
createdb nom_base_de_dades -O nom_usuari

o

$ psql
postgres=# CREATE DATABASE nom_base_de_dades OWNER nom_usuari;

Eliminar base de dades

sudo su postgres
dropdb nom_base_de_dades

Reanomenar base de dades

ALTER DATABASE <dbname> RENAME TO <dbnamenew>;

On:

Canviar propietari de la base de dades

ALTER DATABASE <dbname> OWNER TO <new_owner>;

On:

Canviar propietari de totes les taules, vistes i seqüències d'una base de dades

Executar des d'una terminal shell com a usuari postgres les següents tres comandes:

NEW_OWNER="<new_owner>"
DBNAME="<dbname>"
for TBL in `psql -qAt -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public';" ${DBNAME}` ; do  psql -c "ALTER TABLE \"${TBL}\" OWNER TO ${NEW_OWNER}" ${DBNAME} ; done
for TBL in `psql -qAt -c "SELECT table_name FROM information_schema.views WHERE table_schema = 'public';" ${DBNAME}` ; do  psql -c "ALTER TABLE \"${TBL}\" OWNER TO ${NEW_OWNER}" ${DBNAME} ; done
for TBL in `psql -qAt -c "SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = 'public';" ${DBNAME}` ; do  psql -c "ALTER TABLE \"${TBL}\" OWNER TO ${NEW_OWNER}" ${DBNAME} ; done

On:

Còpies de Seguretat

Manualment

Opció 1

pg_dump dbname > filename

Si volem només una taula:

pg_dump dbname -t res_country > res_country.sql

Es recupera amb:

psql dbname < filename

Nota: Si cal canviar l'owner de la base de dades, ho podem fer amb la comanda:

cat filename.sql | sed 's/OWNER TO openerp6/OWNER TO oerp6_demo/g' > newfilename.sql

Opció 2

pg_dump -Fc dbname > filename

Es recupera amb:

pg_restore -d dbname filename

Cal indicar l'opció -i si la versió de pg_dump no coincideix amb la versió del servidor.

Scripts automatitzats

export PGPASSWORD=%s
dropdb -U %s %s_copia
createdb -U %s -T %s %s_copia -O %s
pg_dump %s -U %s > %s/backup/backup_%s.sql
export PGPASSWORD=

Restore una taula

pg_restore -U USUARI -d DB -t product_code backup-2017-05-16_00\:15\:08/

RestoreDB

Per volcar un SQL a la nostra màquina (canvi usuari) podem usar aquesta comanda:

restoredb() {
  echo "Create database $1 owned to $2 from input file $3 owned to $4"
  sed -i 's/OWNER TO '$4'/OWNER TO '$2'/g' $3
  sudo -u postgres dropdb $1 -p 5435
  sudo -u postgres createdb $1 -p 5435 -O $2
  sudo -u postgres psql -p 5435 $1 < $3 >/dev/null
}

Per executar-la:

restoredb dblocal usuarilocal psql_db.sql usuariremot

Copia base de dades entre servidors

Control de bloquejos de taules

Comandes ordenades segons nivell de detall:

SELECT * FROM pg_stat_activity WHERE datname = 'basededades';

SELECT a.datname,
       c.relname,
       l.transactionid,
       l.mode,
       l.granted,
       a.usename,
       a.query, 
       a.query_start,
       age(now(), a.query_start) AS "age", 
       a.pid 
  FROM  pg_stat_activity a
   JOIN pg_locks         l ON l.pid = a.pid
   JOIN pg_class         c ON c.oid = l.relation
  ORDER BY a.query_start;

select l.* from pg_locks l inner join pg_database d on d.oid = l.database where d.datname = 'basededades';

Comandes varies

Unir tots els resultats en un sol registre

SELECT string_agg(name, ',') FROM  ir_module where state = 'installed';

Usuaris usant b.d. i matar queries

Per saber quins usuaris estan usant les diferents b.d. o quines queries s'estan executant:

Per matar una query en concret, hem d'agafar el número de la columna procpid del llistat anterior i fer:

Veure més detalls a http://www.postgresql.org/docs/8.2/static/functions-admin.html

Copiar / Actualitzar dades entre bases de dades

Copy the result of a select query to a csv file in order to make an update in another database.

COPY (
    SELECT
        *
    FROM
        ir_property
    WHERE
            res LIKE 'product.template,%'
        AND
            field = (
                SELECT
                    f.id
                FROM
                        ir_model_field as f
                    LEFT JOIN
                        ir_model as m
                            ON f.model = m.id
                WHERE
                        m.model = 'product.template'
                    AND
                        f.name = 'cost_price'
            )
    )
TO '/tmp/ir_property.csv' DELIMITER ';' ;

Copy the file to a temporary table in the target Database and update the actual table from there. If the imported table matches the table to be updated exactly, this may be convenient.

CREATE TEMP TABLE tmp_x AS SELECT * FROM ir_property LIMIT 0;

Could look like this.

COPY tmp_x FROM '/tmp/ir_property.csv' DELIMITER ';' ;

UPDATE
        ir_property AS p
SET
        value = tmp_x.value
FROM (
        SELECT
                res,
                value,
                field
        FROM
                tmp_x
        ) AS tmp_x
WHERE
                p.res = tmp_x.res
        AND
                p.field = tmp_x.field;

DROP TABLE tmp_x; -- will also be dropped at end of session automatically

Volcar dades SQL a fitxer

psql base_dades usuari_postgres --command='SELECT name FROM res_users;' > fitxer.txt

COPY (SELECT name FROM res_users) TO ‘/tmp/volcat.csv’ WITH CSV HEADER;

Modificar estructura taula

ALTER TABLE public.res_country ADD COLUMN status boolean;
ALTER TABLE distributors DROP COLUMN address RESTRICT;

Més opcions: ALTER TABLE

Canviar caràcters d'un camp per tots els registres

UPDATE account_invoice SET number = replace(number, '/', '-') WHERE type='out_invoice';
UPDATE res_partner_address SET street=replace(street,'X','') WHERE street like '%X%';
UPDATE party_party SET name=regexp_replace(name, E'[\\n\\r]+', '', 'g' );

El darrer eliminar els canvis de línia del nom del tercer.

Detectar dos registres amb el mateix camp

  select magento_sku,count(*) from product_product group by magento_sku;
  select id, magento_url_key,count(*) as ct from product_product group by id,magento_url_key;
  select name,count(*) from product_template group by name having count(*) > 1;
  select number,count(*) from stock_lot group by number, product having count(*) > 1;

  select o.id from res_partner o where exists ( select 'x' from res_partner i where i.vat = o.vat and i.id < o.id);
  select o.id from product_product o where exists ( select 'x' from product_product i where i.magento_sku = o.magento_sku and i.id < o.id);

--
-- select duplicate rows
--
select o.id, o.a, o.b from test o
 where exists ( select 'x' 
                  from test i
                 where i.a = o.a
                   and i.b = o.b
                   and i.id < o.id
             );
--
-- delete duplicate rows
--
-- Note: PostgreSQL dosn't support aliases on
--       the table mentioned in the from clause
--       of a delete.
--
 
delete from test 
 where exists ( select 'x' 
                  from test i
                 where i.a = test.a
                   and i.b = test.b
                   and i.id < test.id
             );

Omplir un camp que relaciona dos taules amb la informació recíproca

Per exemple, per omplir el camp training_offer_invoicing_id de les factures que les relaciona amb els training_offer_invoicing, quan training_offer_invoicing té un camp invoice_id que apunta a les factures:

  update account_invoice i set training_offer_invoicing_id = (select id from training_offer_invoicing t where t.invoice_id = i.id);

Crear un usuari de postgres amb permisos de només lectura

# Crea el nou usuari mydbuser_ro:

  sudo su postgres
  createuser --pwprompt mydbuser_ro

# Dóna permisos d'usar l'esquema públic a l'usuari només lectura des del client psql:

  psql
  GRANT USAGE ON SCHEMA public TO mydbuser_ro;

# Dóna permisos de select (consultar) a totes les taules i a totes les vistes de la base de dades mydb des de la línia de comandes:

  psql -U postgres -qAt -c "SELECT 'GRANT SELECT ON ' || tablename || ' TO \"mydbuser_ro\";' FROM pg_tables WHERE schemaname = 'public'" mydb | psql -U postgres mydb
  psql -U postgres -qAt -c "SELECT 'GRANT SELECT ON ' || viewname || ' TO \"mydbuser_ro\";' FROM pg_views WHERE schemaname = 'public'" mydb | psql -U postgres mydb

Llista del nom de totes les taules d'una b.d.

  SELECT table_name
    FROM information_schema.tables
    WHERE table_type = 'BASE TABLE'
    AND table_schema NOT IN ('pg_catalog', 'information_schema')
    ORDER BY table_name ASC;

Llista del nombre de registres de totes les taules d'una b.d.

Al resultat de l'apartat anterior executar per cada taula SELECT count(*) FROM nom_taula;

O podem obtenir el nombre de registres aproximat executant:

SELECT
  nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
  nspname NOT IN ('pg_catalog', 'information_schema') AND
  relkind='r'
ORDER BY reltuples DESC;   

Modificar el número de seqüència de l'identificador d'una taula

ALTER SEQUENCE product_product_id_seq RESTART WITH 13113;

Més informació

Reset del WAL de postgres (write-ahead log ) si ha quedat corrupte

  sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_resetxlog -n /var/lib/postgresql/8.4/main  # Testejar
  sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_resetxlog /var/lib/postgresql/8.4/main     # Fer-ho
  sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_resetxlog /var/lib/postgresql/8.4/main -f  # Fer-ho forçadament

Canviar LOCALE

La instal·lació de PostgreSQL sobre Debian crida automàticament initdb i.e. i inicialitza el cluster amb la codificació per defecte del sistema. Aquesta codificació es pot canviar posteriorment però els locale no. Per canviar els locale s'ha d'esborrar el cluster per defecte i crear un de nou. Per fer-ho identificat com a super-usuari i executa les següents comandes:

pg_dropcluster --stop <version> main

Per exemple:

pg_dropcluster --stop 8.4 main

Executa initdb amb les teves opcions. Per exemple:

pg_createcluster --locale ca_ES.UTF-8 --start 8.4 main

Trobar tots els camps que apunten a una taula (són clau forània)

SELECT
                c.relname AS table_name,
                -- The name of the table related to account_account
                (
                    SELECT
                        t.column_name
                    FROM
                        information_schema.key_column_usage AS t
                    WHERE
                            t.table_name = c.relname
                        AND
                            cons.conname = t.constraint_name
                ) AS column_name
                -- The name of the column containing the foreign key
            FROM
                    pg_class c
                JOIN
                    pg_namespace n
                        ON
                            n.oid = c.relnamespace
                LEFT JOIN
                    pg_constraint cons
                        ON
                            cons.conrelid = c.oid
                LEFT JOIN
                    pg_class c2
                        ON
                            cons.confrelid = c2.oid
                LEFT JOIN
                    pg_namespace n2
                        ON
                            n2.oid = c2.relnamespace
            WHERE
                    c.relkind = 'r'
                AND
                    c2.relname = 'nom_taula'
                AND
                    n.nspname IN ('public')
                AND
                    (cons.contype = 'f' OR cons.contype IS NULL);

Update amb dos taules

update party_party p set name = s.name FROM (select p.id, a.name from party_party p, party_address a where p.id = a.party and p.name like 'None None') s where p.id = s.id;
update party_party p set name = 'pepito' where id in (select p.id from party_party p, party_address a where p.id = a.party and p.name like 'None None');

Drop Not Null

ALTER TABLE table ALTER COLUMN column DROP NOT NULL;

Strings i tractament

so.origin_cache = 'sale.sale,23442'

select substring(so.origin_cache, 1, 10) from stock_shipment_out as so where so.id = 22713;
sale.sale,

select substring(so.origin_cache, 11)::int from stock_shipment_out as so where so.id = 22713;
23442

select concat('product.template,', pt.id) from product_template as pt;

aggregate

array_agg(r.id)
array_to_string(array_agg(child_name), ',')

update with subquery

update stock_shipment_out set reference = sub.sref from (selectconcat(s.number, ' - ', s.description) as sref from stock_move as s) as sub where id = sub.shipment;

PhpPgAdmin

Administració de bases de dades Postgres mitjançant l'aplicació web Php Pg Admin (Nota: També es poden administrar còmodament amb l'aplicació d'escriptori PgAdminIII).

apt-get install phppgadmin

Creem un link simbòlic o un alias a l'apache per poder executar el phppgadmin amb Apache.

ln -s /usr/share/phppgadmin /var/www/

http://localhost/phppgadmin.

És normal que tinguem encara problemes per registrar-nos. Si es així, editeu el fitxer /etc/phppgadmin/config.inc.php i mirem si es troba a "false" la línia:

$conf['extra_login_security'] = false;

Postgres 8.4 / 9.1

Reinici servidors postgres

sudo service postgresql restart

Accedir psql 8.4

$ psql --cluster 8.4/main

Actualitzar PostgreSQL 8.4 a 9.1 rere actualització del sistema operatiu

Un cop feta l'actualització del sistema operatiu, s'haurà instal·lat la versió 9.1 de PostgreSQL i probablement desinstal·lat la versió 8.4. Executarem les següents comandes:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Si la darrera comanda falla perquè s'ha desinstal·lat la versió 8.4 de PostgreSQL, s'ha de tornar a instal·lar amb

sudo aptitude install postgresql8.4

I tornar a executar la darrera comanda:

pg_upgradecluster 8.4 main

Un cop fet això, editem els fitxers /etc/postgresql/<version>/main/pg_hba.conf i canviem els ports de connexió de forma que a la versió nova quedi assignada el 5432 i a la vella un de diferent (5433).

Replicació

https://gist.github.com/ecarreras/67da7f9aa3faf45ceb3d

Create user replication in the master

sudo -u postgres psql -c "CREATE USER rep REPLICATION \
LOGIN ENCRYPTED PASSWORD 'thepassword';"

* Modify postgresql.conf in the master

listen_address = # make sure we're listening as appropriate
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 8    
wal_keep_segments = 8 

* Add rule to pg_hba.conf in the master

hostssl replication     rep      1.2.3.4            md5

* Ensure you have ssl activated in the postgresql.conf master

ssl = true

* Create server.crt and server.key files in the master if they don't exist.

Check

ls -l /var/lib/postgresql/$POSTGRES_VERSION/main/ | grep server

Create

sudo -u postgres ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /var/lib/postgresql/$POSTGRES_VERSION/main/server.crt
sudo -u postgres ln -s /etc/ssl/private/ssl-cert-snakeoil.key /var/lib/postgresql/$POSTGRES_VERSION/main/server.key

* Modify postgresql.conf in the slave

wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 8    
wal_keep_segments = 8 
hot_standby = on

* As a postgres user clone this repo in the slave

cd /var/lib/postgresql
git clone https://gist.github.com/67da7f9aa3faf45ceb3d.git replication

Run the replication/replicate_postgres.sh script in the slave

MASTER_IP="1.2.3.4"
MASTER_PORT="5432"
REPLICATION_USER="rep"
REPLICATION_PASSWORD="thepassword"
POSTGRES_VERSION="9.1"

echo Stopping PostgreSQL
sudo service postgresql stop
 
echo Cleaning up old cluster directory
sudo -u postgres rm -rf /var/lib/postgresql/$POSTGRES_VERSION/main
 
echo Starting base backup as replicator
sudo -u postgres pg_basebackup -h $MASTER_IP -D /var/lib/postgresql/$POSTGRES_VERSION/main -U $REPLICATION_USER -v -P

echo Linking server.crt and server.key

sudo -u postgres ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /var/lib/postgresql/$POSTGRES_VERSION/main/server.crt
sudo -u postgres ln -s /etc/ssl/private/ssl-cert-snakeoil.key /var/lib/postgresql/$POSTGRES_VERSION/main/server.key
 
echo Writing recovery.conf file
sudo -u postgres bash -c "cat > /var/lib/postgresql/$POSTGRES_VERSION/main/recovery.conf <<- _EOF1_
  standby_mode = 'on'
  primary_conninfo = 'host=$MASTER_IP port=$MASTER_PORT user=$REPLICATION_USER password=$REPLICATION_PASSWORD sslmode=require'
  trigger_file = '/tmp/postgresql.trigger'
_EOF1_
"
 
echo Startging PostgreSQL
sudo service postgresql start

Monitorizació

Monitorització de PostgreSQL

Upgrades

Ubuntu

http://askubuntu.com/questions/831292/how-to-install-postgresql-9-6-on-any-ubuntu-version

Ubuntu Yakkety (16.10)

sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

Ubuntu Xenial (16.04)

sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

Ubuntu Trusty (14.04)

sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

Ubuntu Precise (12.04)

sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

Debian

https://www.postgresql.org/download/linux/debian/ https://wiki.postgresql.org/wiki/Apt

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.6

Canviar de port de postgres

/etc/postgresql/9.3/main/postgresql.conf
port = 5433

/etc/postgresql/9.6/main/postgresql.conf
port = 5432

Accés psql per port:

psql -p 5433

Iniciar PSQL quan s'inicia el servidor (both)

sudo update-rc.d postgresql enable


CategorySistema

System/Postgresql (last edited 2018-04-03 11:19:46 by resteve)

Contenidos creados por el equipo de Zikzakmedia. Creative Commons By-NC-SA

PythonZikzakmedia