PostgreSQL
Tutoriel vidéo
Vous pouvez activer les sous-titres en Anglais ou en Français pour avoir les explications.
Installation
Après le provisionnement de l'instance et la première installation :
- Mettre à
falsecette variable dans le fichier d'environnement ansible (env/{ instance_hash }.yml), les guillements sont importants :
pgsql_first_install: "false"
- Dans le même fichier, il est hautement recommandé de n'ouvrir le port
5432qu'aux machines ou réseaux qui ont besoin d'accéder à cette base :
firewall_allow:
- port: 22
- port: 80
- port: 443
- port: 5432
ip: {put your ip or range here}
- Se connecter avec ssh, ensuite initialiser la base de données et l'utilisateur :
sudo su -
su - postgres
psql
postgres=> CREATE ROLE your_username LOGIN PASSWORD 'your_password' SUPERUSER; # if you want to be a superuser
postgres=> CREATE ROLE your_username LOGIN PASSWORD 'your_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; # if you want to only be granted on one db
postgres=> CREATE DATABASE "your_db" WITH OWNER = your_username ENCODING = 'UTF8';
- Vous serez en mesure de vous connecter avec l'utilisateur comme ceci :
psql -U your_username -W your_db
password:
your_db=> CREATE TABLE my_table(my_id INT);
your_db=> INSERT INTO my_table VALUES (1);
Si vous voulez vous connecter depuis l'extérieur :
psql -h {your_instance_hash}.pgsql.comwork.(cloud|dev|info) -U your_username -W your_db
Voici l'URL JDBC que vous pourrez mettre dans vos applications Java :
jdbc:postgresql://{your_instance_hash}.pgsql.comwork.(cloud|dev|info):5432/i4db
Sauvegarder et importer une sauvegarde
Générer la sauvegarde
Sur votre ancienne instance PostgreSQL :
sudo su -
su - postgres
pg_dump -d <dbname> -p 5432 -F c -f db.backup
Envoyer la sauvegarde sur la nouvelle instance
Sur votre ancienne instance PostgreSQL :
sudo su -
mv /var/lib/pgsql/db.backup /home/cloud
su - cloud
scp -i ~/.ssh/id_rsa db.backup cloud@<new instance ip>:
Importer la sauvegarde
Sur votre nouvelle instance PostgreSQL :
sudo su -
mv /home/cloud/db.backup /var/lib/pgsql/
psql
postgres=> CREATE DATABASE <dbname>
postgres=> CREATE ROLE <username> LOGIN PASSWORD '<yourpassword>' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
Sorti puis lancer :
psql <dbname>
dbname=> GRANT ALL ON SCHEMA public TO <username>;
dbname=> GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO <username>;
dbname=> GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO <username>;
dbname=> GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO <username>;
Sorti puis lancer :
pg_restore db.backup --dbname <dbname>