1 |
On 01/28/11 18:50, Alex Efros wrote: |
2 |
|
3 |
> Это можно реализовать иначе - установив FLUSH TABLES WITH READ LOCK из |
4 |
> скрипта, в котором потом сделать exec sh-скрипта для выполнения бэкапа |
5 |
> через lvm - пока процесс с PID-ом установившим FLUSH TABLES не выйдет |
6 |
> блокировка будет стоять, а когда он выйдет будет сделан автоматический |
7 |
> UNLOCK TABLES. |
8 |
> |
9 |
> Вот пример (вспомогательный скрипт моей тулзы powerbackup), который |
10 |
> запускает tar и использует отдельный mysql-аккаунт для работы: |
11 |
> |
12 |
> ---cut--- |
13 |
> #!/usr/bin/perl |
14 |
> # mysql> GRANT RELOAD ON *.* TO _backup@localhost IDENTIFIED BY "_backup"; |
15 |
> use warnings; |
16 |
> use strict; |
17 |
> use DBI; |
18 |
> |
19 |
> chomp(my $user = `cat /etc/powerbackup/mysql.user`); |
20 |
> chomp(my $pass = `cat /etc/powerbackup/mysql.pass`); |
21 |
> my $dbh = DBI->connect('dbi:mysql:', $user, $pass, {RaiseError=>1}); |
22 |
> $dbh->do('FLUSH TABLES WITH READ LOCK'); |
23 |
> |
24 |
> exec('tar', @ARGV); |
25 |
> ---cut--- |
26 |
|
27 |
Да, можно залочить таблицы php/perl скриптом, потом вызвать shell скрипт |
28 |
для бэкапа, потом снять лок в perl/php. |
29 |
|
30 |
Можно все это дело вообще одним perl/shell скриптом реализовать, но мне |
31 |
хотелось использовать именно shell дабы не прыгать от одного скрипта к |
32 |
другому, т.к. многие вещи удобно делать из shell, а не извращаться с |
33 |
perl/php. Да и доставлять ничего не придется. |
34 |
|
35 |
Видимо другого варианта нет, или же просто забить на ошибку... Вроде бы |
36 |
и так все работает. |