2009-05-06 6 views
3

Nous avons mis en place un schéma de réplication maître/esclave et nous avons eu des problèmes récemment car certains utilisateurs écrivaient directement sur l'esclave au lieu du maître, rendant l'ensemble incohérent.tables temporaires dans des procédures stockées sur des serveurs esclaves avec readonly

Pour éviter que ces problèmes ne se reproduisent, nous avons décidé de supprimer les droits d'insertion, de suppression, de mise à jour, etc. des utilisateurs accédant à l'esclave. Les problèmes sont que certaines procédures stockées (pour la lecture) nécessitent des tables temporaires.

Je lis que changer la variable globale read_only true ferait ce que je veux et permettre aux procédures stockées fonctionnent correctement (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_read_only) mais je continue à obtenir l'erreur:

Le serveur MySQL est en cours d'exécution avec le --read seule l'option ne peut donc pas exécuter cette instruction (1290)

La procédure stockée que je (à des fins de test) est celui-ci:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `test_readonly` $$ 
CREATE DEFINER=`dbuser`@`%` PROCEDURE `test_readonly`() 
BEGIN 

CREATE TEMPORARY TABLE IF NOT EXISTS temp 
(
`BT_INDEX` int(11), 
`BT_DESC` VARCHAR(10) 
); 

INSERT INTO temp (BT_INDEX, BT_DESC) VALUES (222,'walou'), (111,'bidouille'); 

DROP TABLE temp; 

END $$ 

DELIMITER ; 

La table de création temporaire et la table de dépôt fonctionnent correctement avec le drapeau readonly - si je commente la ligne INSERT, elle s'exécute correctement - mais chaque fois que je veux insérer ou supprimer de cette table temporaire, le message d'erreur.

J'utilise Mysql 5.1.29-rc. Mon moteur de stockage par défaut est InnoDB.

Merci d'avance, ce problème me rend vraiment fou.

Répondre

0

Il semble y avoir un bug ouvert à ce sujet pour la 6.0 beta:

http://bugs.mysql.com/bug.php?id=33669

[3 janvier 2008 19:26] Philip Stoev

Description: Lorsque le serveur est commencé avec --read-only, mises à jour à Falcon tables temporaires ne sont pas autorisés.

Vous voudrez peut-être ajouter vos résultats ici.

+0

ouais, j'avais vu ça, mais ça semble être un bug spécifique à Falcon, et j'utilise InnoDB comme moteur de stockage par défaut, donc je ne suis pas sûr que cela soit lié. – lau

Questions connexes