Хакерский способ - дождаться завершения транзакции:
mysql> FLUSH LOCAL TABLES;
Запрос ОК, затронутых строк 0 (11,31 сек)
, а затем получение блокировки чтения :
mysql> FLUSH TABLES WITH READ LOCK;
Запрос ОК, затронуто 0 строк (22,55 сек)
Теперь все запросы заблокированы (т. Е. Они ждут снятия блокировки) до вашего сеанса заканчивается. Имейте в виду - вам все равно нужно дождаться завершения всех транзакций. В зависимости от вашей рабочей нагрузки это может занять некоторое время (ОБНОВЛЕНИЕ нескольких миллионов строк ...).
Вы можете закодировать это на своем любимом скриптовом языке.
А если серьезно - почему бы не использовать Xtrabackup ? Он позаботится о согласованном снимке mysql за вас, и вы можете выгрузить его в файловую систему и сделать снимок zfs / lvm.
Это сбивает с толку. Во-первых, /usr
— это каталог. Но любой каталог также может быть точкой монтирования, к которой привязана файловая система. Файловая система сама по себе находится на блочном устройстве— это может быть либо раздел, либо логический том, либо файл, прикрепленный к петлевому устройству.
Существуют определенные каталоги, которые по традиции часто являются отдельными точками монтирования, и usr
является одним из них.Я думаю, что самый простой способ узнать состояние данной системы — это использовать команду df
— дать ей имя каталога, и она сообщит вам информацию о файловой системе, в которой находится этот каталог. Например, в моей системе:
$ df -h /usr
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora-root 79G 19G 57G 25% /
Это показывает, что для me/usr
находится в «корневой» файловой системе, которая находится на устройстве /dev/mapper. /fedora-root
, который смонтирован по адресу /
. В вашей системе, в зависимости от вашего обновления, /usr
разделены.
Для сравнения:
$ df -h /home/mattdm/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora-home 99G 74G 21G 79% /home
говорит мне, что мой домашний каталог находится в файловой системе, смонтированной в /home
.
Независимо от того, является ли конкретныйкаталог точкой монтирования, чтобы освободить больше места в любомкаталоге, вам необходимо увеличить пространство в файловой системе, в которой находится этот каталог. В моем случае, поскольку /usr
находится на
/dev/mapper/fedora-root
, смонтированная в /
, мне нужно увеличить размер этой /dev/mapper/fedora-root
. В вашем случае /usr
является точкой монтирования для файловой системы /dev/mapper/fedora-usr
, поэтому вам необходимо увеличить размер этафайловая система.
Чтобы освободить место на /usr
в вашей ситуации, вам сначала понадобится логический томс достаточным пространством — вы можете добавить физические томак тому, если нет свободного места.Затем вам нужно будет увеличить файловую систему
внутри этого логического тома. (Это можно сделать за один шаг с помощью флага --resizefs
на lvextend
.)
Я беру хороший ответ @mattdm, чтобы показать вам практические шаги, чтобы сделать то, что вам нужно.
Выводdf
/dev/mapper/fedora-usr 2,9G 2,7G 42M 99% /usr
показывает, что вы используете LVM (Logical Volume Manager ),и что каталог /usr
смонтирован на логическом томе LV ()с именем usr
в группе томов VG ()с именем fedora
.
Поэтому вам нужно сделать это:
1 )Добавьте к машине новый (физический или виртуальный )диск, чтобы обеспечить дополнительное дисковое пространство; назовем его /dev/sdc
.
2 )Создать новый раздел/dev/sdc1
(типа 0x8E = Linux LVM )на новом диске:
fdisk /dev/sdc
(Я предполагаю, что вы знаете, как это сделать, поэтому я опускаю детали :нажмите n , p , 1 , и т. д.)
Это не обязательно, но рекомендуется, потому что если у вас есть другие Операционные системы, обращающиеся к диску, могут не распознать LVM и увидеть все неразмеченный диск как пустой.
3 )Инициализировать новый раздел как физический том:
pvcreate /dev/sdc1
4 )Добавить вновь созданный PV в существующую группу томов:
vgextend fedora /dev/sdc1
5 )Расширить логический том usr
-, а также базовую файловую систему -, чтобы он занимал все свободное пространство:
lvresize -l+100%FREE --resizefs /dev/mapper/fedora-usr
Ваш раздел /usr
теперь больше любого размера раздела /dev/sdc
.