Mysql
來自 linux bash 的 mariadb 鎖定表
我擁有在 Linux 上為我們的 MariaDB 數據庫進行備份(lvm 快照)所需的所有程式碼。這些是我在終端中的命令:
mysql flush tables read lock; (in database) exit lvc create -l100%free -s -n mdbsnap /dev/vgm/lv mysql unlock tables; (in database) exit
它有效。
但現在我正在嘗試使用 Linux bash 自動化流程:
#!/bin/bash mysql -e "flush tables with read lock" lvc create -l100%free -s -n mdbsnap /dev/vgm/lv mysql -e "unlock tables"
並且它不起作用(鎖定不起作用並且數據庫不會保持鎖定狀態)。我認為這是因為我應該保持我的 mysql 連接打開以強制我們的數據庫在快照期間保持鎖定。有誰有想法嗎?
在另一個 stackexchange 的問題的幫助下,我找到了答案:
#!/bin/bash echo { echo " flush tables with read lock; system lvccreate -l100%free -s -n mdbsnap /dev/vgm/lv; " } | mysql --unbuffered