CREATIONS-1-

もじばけらった

もじばけらった

入力された文章を様々な文字コードに相互変換させて表示する、文字化けの解読を助けるサービスです。

Web Services

  • 入力された文章を様々な文字コードに相互変換させて表示する、文字化けの解読を助けるサービスです。
  • ご近所で頑張っているフリーランサー同士を結ぶ、仲間探しサービスです。
  • ユーザー登録には音源のアップロードが必須という、中級者以上に的を絞ったバンドメンバー募集サイトです。
  • 皆様からのご投稿情報を基に、かっこいいバナー・かわいいバナー・クリエイティブなバナーなどを収集・まとめて一覧できる、バナー専門のギャラリーサイトです。
  • Google・WIKIPEDIA・YouTube・twitter・facebookの5サイトの検索窓を1ページ内で統合させたウェブサービスです。
  • YouTubeにアップロードされている二つの動画を同時再生して、混ざり合う音声を楽しむウェブサービスです。
  • オンラインで複数人とのリアルタイムなブレーンストーミングが出来て、出たアイディアはcsvファイルでダウンロード出来るというウェブサービスです。
  • 複数のRSSフィードをひとつのタブにまとめて読み込み、そんなタブを最大5つまで表示させるスクリプトジェネレーターです。

WordPress Plugins

  • A8.netをはじめとした、各種バナー広告をWordPress上で管理するためのプラグインです。
  • JavaScriptで作られたBSDライセンスの「snowstorm.js」を使って、webページ上に幽玄閑寂の如く「雪を降らせる」という、なんとも情緒あふれるプラグインです。
  • 記事の冒頭に「記事を全て読み終えるまでにかかる、おおよその所要時間」を表示させるプラグインです。

Other Creations

  • 2011年3月14日作成。当バナーにおける一切の著作権は放棄しています。出来る人が、出来る事を、出来る範囲で。
  • 商用利用、全然OK!バックリンクも使用報告も要りません!使用に関して、一切の制約はありません!!そんな壁紙です。
  • いま現在サーバの中にあるフォルダとファイルを表示するPHPファイルです。

AUTHORIZED BY-2-

smkn

Author

smkn(1979 / 5.22 / ♂)

Contact

Profile

東京都内でデザイン/コーディング/プログラミングからWEBマーケティング/SEO施策/ITコンサルティングまで、フリーランス「kiki verb」としてオールラウンド・クリエイターしています。
ホームページ制作・webサービス企画開発に関するご質問やご相談など、お気軽にどぞ☆

Skills

  • Photoshop
  • Illustrator
  • Flash
  • HTML
  • CSS
  • JavaScript
  • jQuery
  • PHP
  • PEAR
  • WordPress
  • MySQL

Tools

  • Photoshop
  • Illustrator
  • Flash
  • Firefox
  • Google chrome
  • Thunderbird
  • 秀丸エディタ
  • EmEditor
  • XAMPP
  • phpMyAdmin
  • FFFTP
  • WinSCP
  • Namery
  • DF
  • Devas
  • IcoFX
  • Color Dialog 003
  • QRWindow
  • Unlocker
  • Janetter

Pastime

  • 和太鼓
  • ドラム
  • バレーボール
  • 沖縄
  • 温泉
  • コーヒー
  • カクテル
  • 芋焼酎
  • あぐー
  • マーケティング理論
  • 宇宙物理学
  • 競馬
  • 麻雀
  • オートバイ
  • ネコ

RECENT SHOUTS-3-

XserverでPHP+mysqldumpコマンドを使ってデータベースのバックアップを取る方法

2011年 07月 05日

  • このエントリーをはてなブックマークに追加
  • このエントリーをfacebookでシェアする
この記事の所要時間: 69

タイトルそのまんま、レンタルサーバ「Xserver」でmysqldumpコマンド使ってデータベースバックアップを取ろうぜ!ってゆーお話。

XserverはSSHとかtelnetとか使えないので、いざデータベースバックアップを取りたいって場合、基本的には管理画面に付属のphpMyAdminでエクスポートっちゅーのが王道、というか他の選択肢はお膳立てされてないのです。

でも例えば自作のサービスなんかを運用してる場合、毎日phpmyAdmin開いて手動でバックアップ取るってゆーのも面倒。

そーなるとPHPのsystem関数とmysqldumpコマンドの出番ですが、どこ探してもピンポイントの情報が無く苦戦しちゃったので、ここでシェアします。

どなたかの参考になれば幸いです。

XserverでPHP+mysqldump使ってDBをバックアップする方法

ポイントと注意点

前述の通りXserverではSSHやtelnetが使えないので、mysqldumpコマンドを使いたい場合はPHPのsystem関数を使う事になります。

今回ご紹介するプログラムでは外部入力を一切含まないので使ってませんが、もし何らかの外部入力値をプログラム内に含む場合には、適宜escapeshellarg関数やescapeshellcmd関数などを使い、セキュリティ対策を確実に施してくださいねー!

あと、この手のプログラム紹介の際の定型分になっちゃいますが、今回の掲載プログラムを使ったコトによる不具合や障害等の責任は負えませんので、ご利用は自己責任のもと、よろしくお願いしますです。

試行錯誤の経緯

まず、フツーに下記を記述したphpファイルをサーバにアップしてアクセス(=実行)してみました。

<?php
$dbUser = 'データベースのユーザー名';
$dbPass = 'データベースのパスワード';
$dbName = 'データベースの名前';

$fileName = date('ymd').'_'.date('His').'.txt';
$command = "mysqldump ".$dbName." -u ".$dbUser." -p".$dbPass." > ".$fileName;
system($command);

。。。結果、ダメ。

どうダメだったかっつーと、ファイルは生成されんだけど、中身が空。0バイト。無。

「?」と思いつつ、そもそも「-u」の後ろには半角スペース入れるのに「-p」の後ろには空白入れちゃいけないって書き方が気持ち悪かったので、一応の確認も含めて下記に書き換えて再びアクセス。

<?php
$dbUser = 'データベースのユーザー名';
$dbPass = 'データベースのパスワード';
$dbName = 'データベースの名前';

$fileName = date('ymd').'_'.date('His').'.txt';
$command = "mysqldump ".$dbName." --user=".$dbUser." --password=".$dbPass." > ".$fileName;
system($command);

記述は美しくなったものの、やはりダメ。空ファイル。無。

そもそもデータベースやSQLに詳しくないので、色々原因を探すべくgoogle先生に聞きまくってみた結果、愛しのウェブルさんの記事「mysqldump でバックアップが取れない件から MySQL の場所とかを物凄い追求してみた | ウェブル」を発見。

症状も似ていた(空ファイルは生成される)ので、「もしかしたらコレもmysqmldumpへの絶対パスが必要なんじゃないか?」と思い立つ。

んでXserverのmysqldump絶対パスをググるも一向に見つからず、困った時のサポート頼みでXserverに絶対パスの問い合わせ。

返答を待つ間、ちょこちょこ細かいオプションを足したり消したりするも、やはり結果は変わらぬまま。

作業開始から数時間後、そろそろ寝ようかと思った矢先、ふと脳裏をよぎる!

「、、、ホスト名!!!」

Xserverはホスト名がlocalhostじゃないので、それこそ当ブログのバックエンド「WordPress」を導入する際にもソレでつまずいた。

もしかして。

今回も。

そこで下記のように修正してみる。

<?php
$dbHost = 'データベースのホスト名';
$dbUser = 'データベースのユーザー名';
$dbPass = 'データベースのパスワード';
$dbName = 'データベースの名前';

$fileName = date('ymd').'_'.date('His').'.txt';
$command = "mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$fileName;
system($command);

キタ━━━━(゚∀゚)━━━━ !!!!!
山 は 動 い た !

生成された数万バイトのファイルをドヤ顔でダウンロードし、颯爽と中身を確認。

、、、文字化けとるやないかーい(棒読み)。

しかしコレは先程のgoogle先生質問攻め大会の時点でいくつも目にしてたので、慌てず騒がず優雅にプログラムに修正を追加。

結論

そんなこんなで、下記を実行してみる。

<?php
$dbHost = 'データベースのホスト名';
$dbUser = 'データベースのユーザー名';
$dbPass = 'データベースのパスワード';
$dbName = 'データベースの名前';

$fileName = date('ymd').'_'.date('His').'.txt';
$command = "mysqldump --default-character-set=binary ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$fileName;
system($command);

結局、絶対パスはなんら関係なく、上記でバッチリ動きましたとさ。

このプログラムをCronで時間指定して叩けば、晴れて自動バックアップでございます!

あー、ラクになるなー☆

  • このブログのRSSを購読する
  • このブログをtwitterでつぶやく
  • このブログをFacebookで共有する
  • このブログをはてなブックマークで共有する

Search

  • Recent
  • Random

Contact

お名前※必須

ご連絡先メールアドレス

お問い合わせ内容※必須


Advertisement

Affiliate

Advertisement