2013-11-12 6 views
2

Из того, что я читал в следующем: http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html, оператор LOCK TABLES подходит только для текущего сеанса. Как я могу навсегда заблокировать определенные таблицы, чтобы сделать их доступными только для чтения, для всех сеансов подключения, пока я их явно не разблокирую?MySQL Постоянная блокировка в таблице

+3

Я не верю, что вы можете. Какова проблема, которую вы пытаетесь решить? – Flimzy

+0

Я привожу несколько больших наборов данных для выполнения детального анализа и хочу убедиться, что исходные данные не изменяются после их импорта. –

ответ

3

Я не думаю, что вы можете просто заблокировать любой стол. Лучший способ вы можете сделать так, чтобы отменить все обновления, вставки и удаления привилегий

Somthing так:

REVOKE DROP, INSERT, TRUNCATE ON database.table FOR 'user'@'host' 
+1

Спасибо Рахул, это похоже на мой лучший вариант. –

0

Для больших, трудоемких операций, как, что, один хороший вариант может быть, чтобы скопировать данные в новое место, чтобы сделать ваши манипуляции. Это существенно делает снимок данных, оставляя базу данных беспрепятственно (и, возможно, все еще принимая чтение и запись) во время выполнения вашей операции.

  1. Остановить MySQL
  2. Скопируйте файлы данных в новое место.
  3. Restart MySqL
  4. Выполнение манипуляций с копией данных.
  5. Удалить копию (в ТАБЛИЦЕ DROP)
Смежные вопросы