質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

8278閲覧

PHPからMySQLのバックアップとリストア

teratere

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/21 08:04

編集2016/06/21 09:02

MySQLの特定のtableをバックアップ、リストアしたいと考えています。
現在、HeidSQLというツールを使用して実施しているのですが、端末が固定されてしまうため、Web画面から実施できればと考えています。

バックアップは HeidSQL でも良いのですが、リストアを PHP から実施することは可能でしょうか?
exec()、system()あたりは使わないで実現したいです。
巨大SQLのはずなので、PDO等を使用して、投入するとかっていう方法があったりするもんでしょうか?

よろしくお願いします。

<追記>
サーバ環境の制限により、サーバにログインしての作業ではなく、webからの操作としたいです。
また、phpの2M制限にも手を加えたくないので、sqlファイルは特定ディレクトリに置いたファイルをwebから操作するイメージだと嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

mysqldump を使用してはいかがでしょうか?
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html

特定のtableをバックアップ、リストアしたい

のであれば、以下のコマンドで実現できます。
これならWEB画面を作るまでもなく、MySQLクライアントがあればどこからでも実行可能です。

バックアップ

sh

1mysqldump [ログインユーザー、パスワードなど] データベース名 テーブル1 テーブル2 ... > ファイル名
リストア

sh

1mysql [ログインユーザー、パスワードなど] データベース名 < ファイル名

投稿2016/06/21 08:29

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratere

2016/06/21 08:43 編集

回答ありがとうございます。 サーバ環境の諸事情により、webからの操作を考えています。 mysqldump , mysql はPHPで実施しようとすると、exec()、system()あたりを使用しなければならない認識ですが、PHPの関数でこれを代替するようなものはありますか?
KiyoshiMotoki

2016/06/21 09:00

> mysqldump , mysql はPHPで実施しようとすると、exec()、system()あたりを使用しなければならない認識ですが、PHPの関数でこれを代替するようなものはありますか? 少なくとも私には、PDOなどで愚直に実装する以外の方法は思いつきません。 恐らくセキュリティのことを懸念されているのかと思いますが、外部から受け取ったパラメータをコマンドに含めたりしないのであれば、それほど問題はないかと思います。
teratere

2016/06/21 09:10

コメントありがとうございます。 exec()、system()は、サーバによっては使用に制限がかかる可能性があるようなので、採用を避けてました。 やはり、条件の諸々を考えると、PDOで愚直にっていうのが一番なんですかね。 ちょっとやってみます。
KiyoshiMotoki

2016/06/21 09:40

> exec()、system()は、サーバによっては使用に制限がかかる可能性があるようなので、 なるほど、そのような事情があるのですね。 解決できることを、祈っております。
guest

0

バックアップ対象とバックアップ形式を定義してそれを実装すれば可能です。
世の中にはサードパーティーなバックアップツール(PHP製もあります)が存在します。

以下追記
phpMyAdmin
https://www.phpmyadmin.net/
このツールはmysqldumpがなくても動きます。

バックアップ対象とは、データベース全体なのか、指定した個別のテーブルなのか、
全データが対象なのか、もしくは特定の条件に当てはまるものだけなのか、
トリガーは含むのか、等

テーブル一覧を取得するSQLは
SHOW TABLES DROM <DB_NAME>

テーブル情報を取得するには
SHOW CREATE TABLE <TBL_NAME>

テーブルデータを取得するには
SELECT * FROM <TBL_NAME>

これらを取得した後、CREATE TABLEやINSERT文としてダンプファイルに出力すれば
バックアップツールが作成できます。

投稿2016/06/21 08:28

編集2016/06/21 08:50
moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratere

2016/06/21 08:37

回答ありがとうございます。 > バックアップ対象とバックアップ形式を定義してそれを実装すれば可能です。 ちょっとイメージが出来ませんでした。 PHP製のバックアップツールをご紹介いただけると大変助かります。
teratere

2016/06/21 09:06

追記、ありがとうございます。 phpmyadminは2M制限に引っかかるので、今回はちょっと使えないと、候補から外していました。 リストアに関して、教えていただきたいのですが、サーバのローカルにファイルを置き、それを指定して、PHPからリストアするような仕組みを実現する方法はありますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問