Автор Тема: mySQL backup table  (Прочетена 3577 пъти)

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
mySQL backup table
« -: 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.
Но така и не ще да запише нещо в директорията ...
Помощ '<img'>

ПП: пуска се като root
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

toxigen

  • Напреднали
  • *****
  • Публикации: 243
    • Профил
mySQL backup table
« Отговор #1 -: Jul 14, 2005, 10:17 »
Защо не го правиш с mysqldump - един ред е
Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
mySQL backup table
« Отговор #2 -: Jul 14, 2005, 10:42 »
Защо имам чувството, че директорията се създава в локалната файловата система и се очаква отдалечения хост да пише в нея.

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

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
mySQL backup table
« Отговор #3 -: Jul 14, 2005, 12:04 »
ППП:

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

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

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

Примерен код
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, но още не съм пробвал '<img'>

@rpetrov - чувството ти не те лъже '<img'>

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

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

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

toxigen

  • Напреднали
  • *****
  • Публикации: 243
    • Профил
mySQL backup table
« Отговор #4 -: 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.
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
mySQL backup table
« Отговор #5 -: Jul 14, 2005, 12:32 »
Благодаря за всичко toxigen '<img'>
Така със сигурност ще стане.

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

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P