Standing on the Shoulder of Linus

Home / 2013 / 6月 / 20 / Novius OS でデータベースのバックアップ

Novius OS でデータベースのバックアップ

Novius OS でデータベースのバックアップをする方法です。

Novius OS は FuelPHP ベースで構築されています。なので、FuelPHP の oil コマンドを利用してバックアップを行う事にします。

コードは下記のようになります。local/tasks/に、backup.phpという名前で保存してください。

<?php
/**
 * Backup Novius OS database
 * Author: Fumito MIZUNO
 * License: MIT
 */
namespace FuelTasks;

class Backup
{

    protected $mysqlpath = '/usr/bin'; //@TODO: to be defined
    protected $outputfile = '/home/fumito/backup'; //@TODO: to be defined
    protected $outputfile_date_format = 'Ymd'; //@TODO: to be defined
    
    public function run($env = 'production')
    {
        $file = $this->outputfile . '_' . date($this->outputfile_date_format) . '.sql';
        $data = static::dbinfo($env);
        $hostname = escapeshellarg($data['hostname']);
        $database = escapeshellarg($data['database']);
        $username = escapeshellarg($data['username']);
        $password = escapeshellarg($data['password']);
        system( "$this->mysqlpath/mysqldump --default-character-set=utf8 --host=$hostname --user=$username --password=$password  $database  > $file" );
    }
    
    protected static function dbinfo($env)
    {
        $envs = array('production','development','test','staging');
        if (!in_array($env,$envs)) {
            $env = 'production';
        }
        
        $db = Config::load('db', true);
        $dbinfo = $db[$env];
        $data = array(
                'hostname' => $dbinfo['connection']['hostname'],
                'database' => $dbinfo['connection']['database'],
                'username' => $dbinfo['connection']['username'],
                'password' => $dbinfo['connection']['password'],
        );
        return $data;
    }
}

実行は、

oil refine backup [production/development/test/staging]

で行います。環境の部分は省略可で、省略した場合(および指定ミスの場合)productionになります。

コードの最初にある、$mysqlpath、$outputfile、$outputfile_date_format は適宜変更してください。(phpstorm を使っている場合用に、@TODO を記載しています。)

※シェルアクセスできること、シェルから mysqldump が実行できること、が前提となります。

関連

Posted in cms | Tagged cms, バックアップ
← 管理画面からソースコードを確認できるプラグイン/アドオン WordPress 人気 50 プラグインの脆弱性 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.