Mysql

來自 linux bash 的 mariadb 鎖定表

  • January 31, 2022

我擁有在 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 

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