Mysql

MySQL Workbench 在遷移過程中是否鎖定數據庫?

  • September 26, 2017

我正在通過 MySQL 工作台工具將我的數據庫從一台伺服器 (RDS) 遷移到另一台伺服器 (localhost)。我想知道在此過程中我的數據庫是否會被鎖定以進行寫入和讀取操作?我的表類型是 InnoDB。

編輯:

我想我應該得到 -1 的簡潔和不完整(即錯誤)的答案。我正在打電話,必須保持快速。

讓我再嘗試一次。

我使用 MySQL Workbench 6.3 CE 遷移嚮導在兩台測試伺服器上為您進行了試執行。

使用預設選項,遷移是-非鎖定的。然而,這種香草方法有一個缺點。如果您在其他 DML 事務正在進行時進行遷移,您可能會在目標上獲得不一致的數據集,因為它不會遷移一致的快照,如下面的語句所示。此風險旨在實現非鎖定性質。

這是香草執行的一般日誌的摘錄:

151105  7:51:09 10398 Connect   root@my_host_name.com as anonymous on 
   10398 Query SET NAMES 'utf8'
   10398 Query USE `test_db_01`
   10398 Query SELECT count(*) FROM `t2`
   10398 Query USE `test_db_01`
   10398 Query SELECT count(*) FROM `t1`
   10398 Quit  
   10399 Connect   root@my_host_name.com as anonymous on 
   10399 Query SET NAMES 'utf8'
   10399 Query USE `test_db_01`
   10399 Query SELECT count(*) FROM `t2`
   10399 Query USE `test_db_01`
   10400 Connect   root@my_host_name.com as anonymous on 
   10400 Query SET NAMES 'utf8'
   10400 Query USE `test_db_01`
   10400 Query SELECT count(*) FROM `t1`
   10400 Query USE `test_db_01`
   10400 Prepare   SELECT `id`, `intcol1`, `intcol2`, `intcol3`, `intcol4`, `charcol1`, `charcol2`, `charcol3`, `charcol4`, `charcol5`, `charcol6`, `charcol7`, `charcol8`, `charcol9`, `charcol10` FROM `t1` ORDER BY `id`
   10399 Prepare   SELECT `id`, `intcol1`, `intcol2`, `intcol3`, `intcol4`, `charcol1`, `charcol2`, `charcol3`, `charcol4`, `charcol5`, `charcol6`, `charcol7`, `charcol8`, `charcol9`, `charcol10` FROM `t2` ORDER BY `id`
   10399 Execute   SELECT `id`, `intcol1`, `intcol2`, `intcol3`, `intcol4`, `charcol1`, `charcol2`, `charcol3`, `charcol4`, `charcol5`, `charcol6`, `charcol7`, `charcol8`, `charcol9`, `charcol10` FROM `t2` ORDER BY `id`
   10400 Execute   SELECT `id`, `intcol1`, `intcol2`, `intcol3`, `intcol4`, `charcol1`, `charcol2`, `charcol3`, `charcol4`, `charcol5`, `charcol6`, `charcol7`, `charcol8`, `charcol9`, `charcol10` FROM `t1` ORDER BY `id`
   10400 Close stmt    
   10399 Close stmt    
   10399 Quit  
   10400 Quit  

另一種選擇是使用 mysqldump。這將是非鎖定的,但也會創建數據庫的一致快照商店。

Mysqldump --databases [db name] --user [user] --password --opt --triggers --routines --events --single-transaction | mysql -u[user] -p -h[host_address]

不,MySQL Workbench 不會鎖定您的數據庫以進行讀取或寫入。

引用自:https://dba.stackexchange.com/questions/120010