Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: VladSun в Jul 13, 2005, 16:51



Титла: mySQL backup table
Публикувано от: VladSun в Jul 13, 2005, 16:51
Примерен код

#!/usr/bin/perl

use DBI;
use Date::Calc qw(:all);

my $dbh;
my $sth;

sub sql_query
{
        my($query) = @_;

        $sth = $dbh->prepare($query) or
                die "Error: ".$dbh->errstr();
        $sth->execute() or
                die "Couldn't execute statement: " . $sth->errstr;
        return $sth;
}


$dbh = DBI->connect("DBI:mysql:database=user:host=host.net;", "database", "password") or die "Couldn't connect to database: " . DBI->errstr;

($tyear,$tmonth,$tday) = Today();
$dirStr = $tday.".".$tmonth.".".$tyear;
`mkdir /sqlbackup/$dirStr`;

$result = sql_query("backup table table1, table2, table3 to '/sqlbackup/".$dirStr."/'");

$result->finish();
$dbh->disconnect();



Имам и FILE привилегии за user.
Но така и не ще да запише нещо в директорията ...
Помощ :)

ПП: пуска се като root


Титла: mySQL backup table
Публикувано от: toxigen в Jul 14, 2005, 10:17
Защо не го правиш с mysqldump - един ред е


Титла: mySQL backup table
Публикувано от: rpetrov в Jul 14, 2005, 10:42
Защо имам чувството, че директорията се създава в локалната файловата система и се очаква отдалечения хост да пише в нея.

Как си експортирал локалнатата /sqlbackup/ и как си я монтирал на отдалечения хост ? nfs/smb(cifs)/др. ?


Титла: mySQL backup table
Публикувано от: VladSun в Jul 14, 2005, 12:04
ППП:

Машина А - mySQL сървер
Машина Б - на която трябва да се запише базата (няма SQL сървер)

-------------------------------

@toxigen - ще пробвам, макар, че в момента чета и не виждам опция за директно отдалечено записване, без използване на още един MySQL сървер на другата машина Б :)

Примерен код
However, it's also very useful to populate another MySQL server with information from a database:

       mysqldump --opt database | mysql --host=remote-host -C database


надявам се, че mysqldump няма проблем с кирилицата - в базата има доста информация на крилица. Видях, че има опция за charset, но още не съм пробвал ;)

@rpetrov - чувството ти не те лъже ;)

за пръв път правя такова нещо, и мислех, че информацията се дърпа изцяло от сървера - машина А (подобно на SELECT) и вече е локална за машина Б, т.е., че не ми трябват допълнителни права и монтиране на директорията за да запиша в локална директория на машина Б

иначе намерих една статия, която ми звучи добре -
http://www.asiaosc.org/article_26.html


Титла: mySQL backup table
Публикувано от: toxigen в Jul 14, 2005, 12:17
относно mysqldump.
Опцията е --default-character-set=cp1251 ако използваш 1251 естествено.
Аз правя друго - в един скрипт слагам примерно:
mysqldump -u user -ppass --default-character-set=cp1251 somedb > somedb.sql
scp somedb.sql user@host:/path/to/store
 Като SSH authetication правя с private key/public key. Слагам скрипта в cron и всичко е наред.
По този начин не се налага да имаш още един mysql сървър на другата машина - единствено изискване е да поддържа ssh и private key auth.


Титла: mySQL backup table
Публикувано от: VladSun в Jul 14, 2005, 12:32
Благодаря за всичко toxigen :)
Така със сигурност ще стане.

Явно BACKUP не работи точно както очаквах ...