mysqldump的鎖表的問題

2021-06-21 23:23:02 字數 1114 閱讀 7021

今天凌晨,公司的一台mysql生產庫備份時間從2:30一直備份到8:30,正常情況下這個備份應該只會備份20分鐘,3:00之前就會備份完畢,

但是這次備份時間太長了,也影響了公司業務的使用。

先寫一下公司的備份語句

mysqldump -uroot -p123456 --opt --master-data=2 -r dbname | gzip >/data/dbname.sql.gz

分析一下上面這個語句

--opt 會lock 本次需要備份的所有表,因為本次備份的是 dbname資料庫,所以會鎖住dbname的所有表。

--master-data=2,--master-data=1 預設的話會--lock-all-tables,會鎖住整個mysql資料庫中的所有表。

但是如果加上--single-transaction會加上事務,不會鎖表。

所以我在原有引數的基礎上加上--single-transaction

mysqldump -uroot -p123456 --opt --single-transaction --master-data=2 -r dbname | gzip >/data/dbname.sql.gz

如果加上--single-transaction,備份的時候就不會鎖表了。

以前一直以為locks級別大於single transaction,經過這次實踐證明,single-transaction級別更高。

選擇備份多個資料庫的簡單語法:

mysqldump -uroot -p123 -h192.131.1.9 --single-transaction --master-data=2 -r --no-data --databases vgos_mcenter vgos_statnum>11.dmp

順便說一下,mysqldump預設是lock-tables的。

當執行mysqldump -uroot -p123 -h192.131.1.9 -r  vgos_statnum>11.dmp 的時候,lock整個vgos_statnum庫

當執行mysqldump -uroot -p123 -h192.131.1.9 -r  vgos_statnum t1>11.dmp 的時候,沒有lock整個vgos_statnum庫,lock的是t1表。

Hive鎖表的問題

旁邊的實習生一副很無奈的表情 集群又出現問題了,hive一直卡住不能用。我看了一下他執行的hivesql,發現他想查詢我正在往hive中導資料的表,這個時候hive由於鎖的問題,是無法查詢的,那麼資料庫的鎖究竟是什麼東東呢?詳情參考 鎖主要是為了保證資料的完整性和一致性 詳細請看官網 hive存在兩...

oracle表鎖問題

系統症狀使用者新增資料無法新增,日誌正常輸出,sql指令碼直接在資料庫執行,等待。判斷可能是開發操作表後沒有commit 通過alter system kill session命令結束程序 alter system kill session 6976,33967 查詢鎖物件 select alter...

oracle鎖表問題

參考 查詢被鎖表的sid等資訊 select t2.username,t2.sid,t2.serial t3.object name,t2.osuser,t2.machine,t2.program,t2.logon time,t2.command,t2.lockwait,t2.saddr,t2.pa...