From af63303a48f55ceb65161c235ca4a1dc41762444 Mon Sep 17 00:00:00 2001
From: Jeremy Lecour PostgreSQL est une base de données qui met l'accent sur le respect du standard SQL et la sécurité des données.
-Il se base notamment sur des journaux de transaction (WAL), fichiers binaires qui contient toutes les données
-avant écriture sur les disques.
-
-Attention à la locales
-
-
+# apt install postgresql
-# vim sources.list
-deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main
-PostgreSQL
+
+
Installation
-
+Instances :
-# pg_ctlcluster < version > < cluster > start|stop|restart|reload|status|promote
-# pg_lsclusters
-
+
# vim sources.list
+deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main
+
+# apt install postgresql
Instances
+
+
+# pg_ctlcluster <version> <cluster> start|stop|restart|reload|status|promote
+# pg_lsclusters
+
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
-# dpkg-reconfigure locales
-$ /usr/bin/pg_createcluster < version > < cluster >
-
`/etc/postgresql/< version >/< instance >/`
`/var/log/postgresql/postgresql-< version >-< instance >.log`
`/var/lib/postgresql/< version >/< instance >/`
`/usr/lib/postgresql/< version >/< instance >/`
+
+# dpkg-reconfigure locales
+$ /usr/bin/pg_createcluster <version> <cluster>
+
+
+
+
++configuration : /etc/postgresql/<version>/<instance>/ + +journaux : /var/log/postgresql/postgresql-<version>-<instance>.log + +stockage : var/lib/postgresql/<version>/<instance>/ + +binaires et bibliothèques : /usr/lib/postgresql/<version>/<instance>/ +
-# sudo -u postgres psql
+# sudo -u postgres psql
+
$ createuser -P < login >
-$ createdb -O < login > < base >
++- local all all peer ++ local all all password +
++$ createuser -P <login> +$ createdb -O <login> <base> +
-+$ dropdb < base >
-$ psql -c "ALTER USER < login > WITH PASSWORD 'foo'"
-$ dropuser < login >
++$ dropdb <base> +$ psql -c "ALTER USER <login> WITH PASSWORD 'foo'" +$ dropuser <login>
+=# SELECT * FROM pg_user; =# \du +
$ psql -l
-= # \d
-= # SELECT * FROM pg_database;
++$ psql -l
++=# \d +=# SELECT * FROM pg_database; +
-SELECT pid, datname, usename, client_addr, query_start, waiting, query FROM pg_stat_activity WHERE state='active' ORDER by query_start;
++SELECT pid, datname, usename, client_addr, query_start, waiting, query + FROM pg_stat_activity + WHERE state='active' + ORDER by query_start;
-+# aptitude install ptop pgbadger pgadmin3
-$ pg_top
- -Faire un VACUUM FULL sur toutes les bases de données :
-$ vacuumdb -a -f -v
- -ANALYSE sur toutes les tables d'une base de données :
-$ psql mydb
-=# ANALYZE; - +# aptitude install ptop pgbadger pgadmin3
+$ pg_top
+
$ vacuumdb -a -f -v
+
+$ psql mydb
+=# ANALYZE;
+
Optimisation
Sauvegarde
-$ pg_dump < base > >dump.sql
-$ pg_dumpall >dump.sql
-$ psql < base > < dump.sql
++-$ pg_dump <base> >dump.sql
+$ pg_dumpall > dump.sql
+$ psql <base> < dump.sql
+Archivage de WAL :
-wal_level = 'archive' +Archivage de WAL :
+wal_level = 'archive' archive_command = 'rsync %p backup.example.net:/backup/…/archives/%f'-+ barman+barman
Usage
-=> CREATE TABLE weather ( ++INSERT INTO weather VALUES ('San Francisco', 46,50,0.25, '1994-11-27'); ++CREATE TABLE weather ( city varchar(80), temp_lo int, -- low temperature temp_hi int, -- high temperature @@ -160,61 +192,73 @@ archive_command = 'rsync %p backup.example.net:/backup/…/archives/%f' date date ); -=> INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); -
-=> SELECT * FROM weather; -=> SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather; -=> SELECT * FROM weatherWHERE city = 'San Francisco' AND prcp > 0.0; -=> SELECT DISTINCT city FROM weather ORDER BY city; -=> SELECT * FROM weather, cities WHERE city = name; -=> SELECT weather.city, weather.temp_lo, cities.location FROM weather, cities WHERE cities.name = weather.city; -=> SELECT * FROM weather INNER JOIN cities ON (weather.city = cities.name); -=> SELECT * FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name); -=> SELECT * FROM weather w, cities c WHERE w.city = c.name; -+
+SELECT * FROM weather;
+
+SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
+
+SELECT * FROM weatherWHERE city = 'San Francisco' AND prcp > 0.0;
+
+SELECT DISTINCT city FROM weather ORDER BY city;
+
+SELECT * FROM weather, cities WHERE city = name;
+
+SELECT weather.city, weather.temp_lo, cities.location
+ FROM weather, cities WHERE cities.name = weather.city;
+
+SELECT * FROM weather
+ INNER JOIN cities ON (weather.city = cities.name);
+
+SELECT * FROM weather
+ LEFT OUTER JOIN cities ON (weather.city = cities.name);
+
+SELECT * FROM weather w, cities c WHERE w.city = c.name;
+
-Pooler de connexions :
+Pool de connexions :
Slony : réplication des données par trigger
-Ne réplique pas le schéma : toutes les bases à créer
SELECT * from pg_stat_replication;
-
+SELECT * from pg_stat_replication;
+* : peut être contourné mais fortement conseillé.
slonik_init_cluster | slonik+
slonik_create_set set1 | slonik
-Initialise le cluster Slony
-slonik_init_cluster | slonik - -Initialise le set de réplication (ensemble de tables à répliquer), notamment installation des triggers.
-slonik_create_set set1 | slonik - -# zcat /usr/share/doc/slony1-2-bin/examples/slon.conf-sample.gz >/etc/slony1/slon.conf
-# /etc/init.d/slony1 start
-$ slonik_subscribe_set set1 node2 | slonik
++# zcat /usr/share/doc/slony1-2-bin/examples/slon.conf-sample.gz \ + > /etc/slony1/slon.conf +
+# /etc/init.d/slony1 start
+$ slonik_subscribe_set set1 node2 | slonik