Vous n'êtes pas identifié(e).
Bonjour,
Je suis tout nouvel utilisateur de PostgreSQL version 9.4.4. Je souhaite mettre en marche la fonction REPLICATION entre 2 Pc sous Windows 7.
Voici le contenu de mon fichier " postgresql.conf" (je mets que les lignes actives)
listen_addresses = '*'
port = 25432
wal_level = hot_standby
archive_mode = on
archive_command = 'copy "%p" "\\\\192.168.1.161\\archives\\%f"'
max_wal_senders = 2
wal_keep_segments = 10
Sur mon poste distant le dossier "archives" est partagé avec tout les droits pour pouvoir écrire (sous exploreur la copie fonctionne).
Je redémarre mon service postgresql et voici mon retour de log:
2017-04-25 16:47:38 CEST LOG: le système de bases de données a été arrêté à 2017-04-25 16:47:34 CEST
2017-04-25 16:47:38 CEST LOG: MultiXact member wraparound protections are now enabled
2017-04-25 16:47:38 CEST LOG: le système de bases de données est prêt pour accepter les connexions
2017-04-25 16:47:38 CEST LOG: lancement du processus autovacuum
AccŠs refus‚.
2017-04-25 16:47:38 CEST LOG: échec de la commande d'archivage avec un code de retour 1
2017-04-25 16:47:38 CEST DÉTAIL: La commande d'archivage qui a échoué était : copy "pg_xlog\00000001000000000000001A" "\\192.168.1.161\archives\00000001000000000000001A"
Je vois bien qu'il y a un problème de droit mais je n'arrive pas à le contourner.
Est-ce que quelqu'un aurait déjà été confronté à ce problème?
Est-ce qu'il existe un moyen d'accorder les droits sans toucher au compte de connexion du service postgresql de Windows?
Merci d'avance pour votre aide.
Asdean.
Hors ligne
Quand vous dites que la copie fonctionne sous Explorer, êtes-vous bien connecté en tant qu'utilisateur postgres ? parce que là, le problème est dû à un droit manquant.
Guillaume.
Hors ligne
Bonjour,
Pour les copies distantes pouvez utiliser xcopy au lieu de copy ?
Cordialement,
Sébastien.
Hors ligne
Bonjour Guillaume et merci du retour,
Pour la copie sous Windows, je peux depuis le poste maitre écrire sur le poste esclave via explorer en mettant dans la barre d'adresse \\192.168.1.161\archives\ en copier/coller.
Lors de l'installation de Postgresql j'ai renseigné au mot de passe pour un utilisateur (postgres) que je retrouve en utilisant la console pgAdminIII mais je n'ai aucun utilisateur dans la gestion des utilisateur de Windows qui s'appel "postgres".
Le service "postgresql-x64-9.4" dans la gestion des services de Windows s'exécute en tant que "service réseau" donc à aucun endroit j'ai la possibilité de mettre l'utilisateur "postgres".
Je tourne un peu en rond.
Avez-vous assez d'éléments pour m'aider?
Cordialement,
Asdean
Hors ligne
Bonjour Sébastien,
Je viens de tenter avec la commande Xcopy, voici la ligne utilisé:
archive_command = 'xcopy "%p" "\\\\192.168.1.161\\archives\\%f"'
Et le retour dans les logs:
2017-04-26 08:00:10 CEST DÉTAIL: La commande d'archivage qui a échoué était : xcopy "pg_xlog\00000001000000000000001A" "\\192.168.1.161\archives\00000001000000000000001A"
Sp‚cification du lecteur non valide
Si je fais la commande sous DOS:
xcopy c:\ademis\Postgresql\9.4\data\pg_xlog\*.* \\192.168.1.161\archives\
Là ça fonctionne.
Ma commande ne doit pas être bonne dans le fichier "postgresql.conf"
Auriez-vous une idée?
Cordialement,
Asdean
Hors ligne
dans la doc l'archive_command pour windows reseemble plutôt à ça :
archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
Il manque donc pour vous la lettre du lecteur.
Désolé mais je ne travaille jamais avec un postgresql sous windows...donc je tâtonne aussi.
Cordialement,
Sébastien.
Hors ligne
De mes lointains souvenirs sur windows, utiliser un chemin réseau créé automatiquement un lecteur réseau pour l'utilisateur en question (la commande « net use » doit les afficher).
Quel est l'utilisateur démarrant le service postgres ? Peut-être y a-t-il des droits supplémentaires à donner pour cet utilisateur (que ce soit sur le partage, le répertoire, l'AD s'il y a ou l'utilisateur en question).
Julien.
https://rjuju.github.io/
Hors ligne
L'utilisateur qui démarre le service est : "service reseau"
Si je le change par administrateur par exemple j'ai: "echec de la connexion au service"
Hors ligne
dans la doc l'archive_command pour windows reseemble plutôt à ça :
archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # WindowsIl manque donc pour vous la lettre du lecteur.
Désolé mais je ne travaille jamais avec un postgresql sous windows...donc je tâtonne aussi.
S'agissant d'un chemin réseau Windows, la syntaxe utilisée par asdean est correcte. Le chemin indiqué dans la doc est un chemin local (qui pourrait pointer sur un lecteur réseau) d'où la lettre identifiant le lecteur en première position.
Il y a confusion entre les antislashes doublés dans une affectation et le double antislash introduisant un nom de machine ou adresse IP (ce qui dans une affectation donne 4 antislashes !)
Comme le dit rjuju c'est un problème de droits de l'utilisateur exécutant le service.
Vous pouvez les vérifier avec Propriétés : Onglet Sécurité puis Avancé et onglet Autorisations effectives
Hors ligne
Je reviens donner des nouvelles, je n'ai pas réussi à utiliser la commande "xcopy" mais j'ai avancé sur la commande "copy".
Comme mentionné plus haut il faut effectivement lancer le service "postgresql" avec les droits adéquates, voici comment j'ai procédé:
- Créer un utilisateur dans la gestion des utilisateurs de Windows (postgresql par exemple avec un mot de passe)
- sur la machine distante j'ai aussi créé un compte "postgresql" avec le même mot de passe.
- Ouvrir ensuite la console GPEDIT.MSC et aller dans les "Configuration ordinateur" -"Paramètres Windows" - "Paramètre de sécurité" - "Stratégies Locales" - "Attribution des droit utilisateurs", dans l'option "ouvrir une session en tant que service" ajouter l'utilisateur "postgresql"
- Aller dans gestion de l'ordinateur puis dans service, ouvrir les propriétés du service "postgresql" et selectionner l'onglet "Connexion". Dans Ce compte choisisser "postgresql" et insérer le mot de passe puis redémarrer le service.
Mais fichiers du dossier pg_xlog du poste maitre ce sont bien copié sur le poste slave.
Merci pour votre aide ;-)
Hors ligne