Как я могу разделить резервное копирование сервера phpmyadmin на резервные копии базы данных?

Вы еще не задавали вопроса (:)), но поскольку Вы хотите запуститься с начала, я думаю, что Вам нужны некоторые руководства по установке как:

Microsoft technet или здесь

3
задан 15 June 2012 в 12:03
3 ответа

Проверьте здесь, возможно, это поможет вам http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/

Но если вы может удаленно подключаться к базе данных или даже иметь доступ к оболочке, вы должны использовать mysqldump для создания резервной копии для каждой базы данных или даже для каждой таблицы.

этот простой скрипт id сделает это за вас:


#!/bin/bash
dbuser=
dbpass=
backupdir=
$mysql -e "show databases" --user=$dbuser --password=$dbpass | $grep -v "Database" | while read dbase
    do
            $mkdir -p $backupdir/$dbase/
            $mysqldump  -c -u $dbuser --password=$dbpass $dbase > $backupdir/$dbase/full-$dbase.sql 

            #if dont want to dump one table per sql file then erase next 4 lines then it will dump one database per sql file   
            $mysql -e "show tables" --user=$dbuser --password=$dbpass $dbase | $grep -v "Tables_in_" | while read dbtable
                do
                      $mysqldump -c -u $dbuser --password=$dbpass $dbase $dbtable > $backupdir/$dbase/$dbtable.sql
                done
    done

Вы должны изменить / поместить dbuser dbpass и backupdir и скрипт должны делать полный дамп каждой базы данных на сервере (одна база данных на файл sql и каждая таблица в базе данных на файл sql). Этот пример должен быть выполнен на сервере, но с небольшими изменениями вы можете использовать его для удаленного дампа.

1
ответ дан 3 December 2019 в 07:35

Если вы просто хотите разделить файл для разработки, а не для восстановления - должен быть скрипт / инструмент для разделения файла .sql, но никогда не видел - возможно, кто-то опубликует.

Если вы восстанавливаете резервную копию:

С большими файлами - у вас всегда может быть эта проблема. Вы не можете быть уверены, что все БД маленькие. достаточно для импорта данных позже

Если сервер в ваших руках - импортируйте его из консоли mysql: http://dev.mysql.com/doc/refman/5.5/en/mysqlimport.html

phpMyAdmin также может обрабатывать большие файлы, но для веб-сервера и ограничения php необходимо установить более высокие значения. Кроме того, phpMyAdmin поддерживает gzip и bzip2, сжимайте с помощью bzip2 и попробуйте еще раз.

На данный момент вы можете попробовать импортировать большой файл с консоли, а затем повторно экспортировать все базы данных отдельно с помощью mysqldump: http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

0
ответ дан 3 December 2019 в 07:35

Это сценарий, который я написал для разделения резервной копии сервера phpmyadmin на отдельные файлы базы данных:

#!/usr/bin/php
<?php
define('SOURCE_FILE', './localhost.sql');
define('TARGET_DIR', './DBs');

$fhs = fopen(SOURCE_FILE, 'r') or die("e-1!\n"); # source handler
$fht = null; # file handler for database files
$header = ''; # phpmyadmin settings at the begining of the file

while (($str = fgets($fhs)) !== false) {
    if(preg_match('@^CREATE DATABASE `(.*?)`@', $str, $matches)) {
        @fclose($fht);
        $fht = fopen(TARGET_DIR . '/' . $matches[1] . '.sql', 'w') or die("e-2: {$matches[1]}!\n");
        echo "Database: {$matches[1]}\n";
        fwrite($fht, $header);
    }

    if($fht)
        fwrite($fht, $str);
    else
        $header .= $str;
}

echo (feof($fhs)) ? 'All Done :)' : 'e-3: unexpected end!', "\n";

@fclose($fht);
@fclose($fhs);

?>
0
ответ дан 3 December 2019 в 07:35

Теги

Похожие вопросы