今天凌晨,公司的一台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...