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 が実行できること、が前提となります。