lock 全部資料庫
flush tables with read lock;
而
lock tables aaa read;
則只是 lock aaa資料表, 也只有aaa資料表能被 select,
其它則顯示說沒有被 lock,也就是說其它資料表也要 lock 才能被 select
所以要
lock tables aaa read,bbb read;
以上,可能需要在永久連線或同一連線下的狀態才能生效
比如要這麼下指令才行
echo "LOCK TABLES aaa READ;select * from aaa;" | mysql -u root -p dbname
而不能
echo "LOCK TABLES aaa READ;" | mysql -u root -p dbname
echo "select * from aaa;" | mysql -u root -p dbname
以上的應用是想直接備份/var/lib/mysql目錄,但牽涉到可能在備份其間資料寫入造成漏備份了那個檔,
所以才想研究一下 lock tables,不過不盡理想,自寫 script的話要考慮很多,
為了省麻煩,還是使用 mysqlhotcopy吧 ^^"
留言