web-dev-qa-db-ja.com

mysqldumpを使用せずにクエリを使用してデータベースをバックアップする

データベースをファイルにダンプしたいのですが。

特定のウェブサイトホストはリモートアクセスまたはコマンドラインアクセスを許可していないため、一連のクエリを使用してこれを行う必要があります。

関連するすべての質問には、「mysqldumpを使用する」と書かれていますが、これは優れたツールですが、このデータベースにコマンドラインでアクセスすることはできません。

CREATEコマンドとINSERTコマンドを同時に作成したいのですが、基本的にはmysqldumpと同じパフォーマンスです。 SELECT INTO OUTFILE旅行するのに正しい道、または私が見落としている何か他のものがありますか?それともそれは不可能ですか?

16
Ben

使用する mysqldump-php基本から中程度の複雑さのユースケース向けにmysqldump実行可能ファイルの機能を複製する純粋なPHPソリューション-リモートCLIやmysqlの直接アクセスがない可能性があることは理解していますが、実行できる限りホスト上のhttpdでのHTTPリクエストを介して、これは機能します。

したがって、次の純粋なPHPスクリプトを/ www /のセキュアディレクトリから直接実行し、そこに出力ファイルを書き込んで、wgetで取得できるはずです。

mysqldump-php --Pure PHP GitHubのmysqldump

PHPの例:

<?php
require('database_connection.php');
require('mysql-dump.php')
$dumpSettings = array(
    'include-tables' => array('table1', 'table2'),
    'exclude-tables' => array('table3', 'table4'),
    'compress' => CompressMethod::GZIP, /* CompressMethod::[GZIP, BZIP2, NONE] */
    'no-data' => false,            
    'add-drop-table' => false,      
    'single-transaction' => true,   
    'lock-tables' => false,        
    'add-locks' => true,            
    'extended-insert' => true      
);

$dump = new MySQLDump('database','database_user','database_pass','localhost', $dumpSettings);
$dump->start('forum_dump.sql.gz');
    ?>
23
cerd

あなたの手をあなたのホストによって縛られて、あなたはかなり極端なアプローチをとらなければならないかもしれません。ホストが提供するスクリプトオプションを使用すると、少しの困難でこれを実現できます。自分だけが知っていて、すべての不正アクセスを防ぐために十分に保護された、安全なWebページまたは海峡のテキストダンプリンクを作成できます。ページ/テキストコンテンツを作成するスクリプトは、次の手順に従うように記述できます。

バックアップするデータベースごとに:

  • ステップ1:実行 SHOW TABLES

  • ステップ2:上記のクエリによって返されたテーブル名ごとに、 SHOW CREATE TABLE を実行して、別のサーバーで実行してテーブルを再作成し、結果をWebページに出力できるcreateステートメントを取得します。 。 「DROPTABLEXIFEXISTS;」の前に付ける必要がある場合があります。これらのクエリの結果によって生成される各createステートメントの前(!クエリ入力にはありません!)。

  • ステップ3:ステップ1から再度返されたテーブル名ごとに、SELECT *クエリを実行し、完全な結果をキャプチャします。画面に出力する前に、このクエリ結果に一括変換を適用して、各行をINSERT INTO tblXステートメントに変換し、変換された最終結果をWebページ/テキストファイルのダウンロードに出力する必要があります。

最終的なWebページ/テキストのダウンロードには、「存在する場合はテーブルを削除する」セーフガードを含むすべてのcreateステートメントの出力と、挿入ステートメントが含まれます。出力を「.sql」ファイルとして自分のマシンに保存し、必要に応じて任意のバックアップホストで実行します。

申し訳ありませんが、これを実行する必要があります。必要なmysqlユーザーアカウントを保持することはまったく別のことであることに注意してください。

2

PhpMySQLAdminを使用してWebサーバーにインストールし、[エクスポート]をクリックします。多くのウェブホストはすでにこれを事前設定されたサービスとして提供しており、まだインストールしていない場合は簡単にインストールできます(純粋なphp): http://www.phpmyadmin.net/

これにより、データベースをエクスポートしたり、他の面倒なデータベース操作を非常に迅速かつ簡単に実行したりできます。古いバージョンのPHP <5.3(Mysqldumpとは異なります)で機能します。ここで別の答えとしてphpが提供されています)。

質問に「クエリを使用する」と記載されていることは承知していますが、ここでのポイントは、シェルアクセスが利用できないときに必要な手段が求められることだと思います。これが、このページにたどり着いた方法であり、PhpMyAdminが私を救ってくれました。

1
user266926