Ouvrez un mysql
fenêtre de commande et lancez cette commande :
mysql> FLUSH TABLES WITH READ LOCK;
Cela verrouillera tous tableaux dans tous bases de données sur cette instance MySQL jusqu'à ce que vous émettez UNLOCK TABLES
(ou mettez fin à la connexion client qui détient ces verrous en lecture).
Pour le confirmer, vous pouvez ouvrir une autre fenêtre de commande et essayer de faire un ALTER
, DROP
, RENAME
ou TRUNCATE
. Ces commandes se bloquent, attendant que le verrou de lecture soit libéré. Appuyez sur Ctrl-C pour mettre fin à l'attente.
Mais alors que les tables ont un verrou en lecture, vous pouvez toujours effectuer un mysqldump
sauvegarde.
Les FLUSH TABLES WITH READ LOCK
la commande peut être identique à l'utilisation de --lock-all-tables
option de mysqldump
. Ce n'est pas tout à fait clair, mais ce document
semble le supporter :
Les deux FLUSH TABLES WITH READ LOCK
et --lock-all-tables
utilisez l'expression "verrou de lecture global", donc je pense qu'il est probable que ceux-ci fassent la même chose. Par conséquent, vous devriez pouvoir utiliser cette option pour mysqldump
et protéger contre ALTER, DROP, RENAME et TRUNCATE simultanés.
Concernant. votre commentaire :ce qui suit provient de Guilhem Bichot dans le journal des bogues MySQL auquel vous avez lié :
À partir de là, il semble que vous ne puissiez pas obtenir un accès simultané lors d'une sauvegarde et bloquer simultanément ALTER, DROP, RENAME et TRUNCATE.