LogoMark.png

Database のバックアップ(No.1)


Database


データベースとは、大量のデータをコンピューターで扱いやすい形に整理したものです。インターネット検索、チケット予約、ブログ、オンラインショッピングなど、Webサイトのコンテンツ管理にはデータベースとの連携が必要となることが多々あります。
 データを格納する構造・アルゴリズムの違いによって、リレーショナルデータベース、カード型データベース、階層型データベースなどがありますが、現在はの主流はリレーショナル型データベースです。
 データベースを管理するソフトウェアのことを一般にデータベース管理システム(DBMS:DataBase Mnanagement System)と呼びますが、その代表はオープンソースのMySQL(派生版:MariaDB) です。


CONTENTS


MySQL(MariaDB)について

MySQLは、オープンソースのリレーショナル型データベース管理システム (RDBMS) の一つで、世界でもっとも普及しているものです。また、MariaDBは、MySQLをフォークして立ち上げられたプロジェクトが開発する派生版です。いずれもオープンソースとして開発されています。

付記:MariaDB について
MySQLはOracle社によって開発やソースコード管理が行われているのに対し、MariaDBは、純粋なオープンソースプロジェクトです。MariaDBのシェアは、MySQLには及びませんが、多くのLinuxディストリビューションが MySQL に代わって MariaDB を採用している点、また一般ユーザーが使いやすいという点で、MariaDB は世界中で急速にシェアを拡大しています。基本的なコマンド・操作方法は同じなので、学習目的で個人で実装する場合は、MariaDBの方がいいかもしれません。


ローマルマシンへのインストール

個人のPCにインストールする場合、XAMPP パッケージの導入が最も簡単です(同梱されています)。 XAMPPについては、LocalServer のページにも記載しています。DBサーバーの起動は、インストール後に、Manager ツールから MySQL の起動を選択するだけです。

レンタルサーバーにインストール

レンタルサーバーでは、DBサービスそのものはほぼインストール済みです。管理画面のメニューにそってサービスを起動することになりますが、管理画面の仕様はサービスによって異なるので、データベースのセットアップに関する基本的な用語を理解していることが前提となります。

プレーンなサーバーマシンにインストール

遠隔のLinuxマシン(CentOS)に Database をインストールするには、手元のPCの Terminal からSSH接続して、すべての操作をCUI(コマンド入力)で行う必要があります。

以下、MariaDBの場合と、MySQL8の2つの導入手順のメモを紹介します。
あくまでもメモです。この作業は、OS、そのバージョン、導入するDBの種類・バージョンによってそれぞれ異なります。インストール後の設定ファイル(my.cnf)の扱いや、認証方法の変更など、仕様の変更もあるので、同じ手順でうまくとは限りません

付記
説明の行頭に # があるのは rootでログインしていることを意味します。

# コマンドライン

一般ユーザでログインした場合は、コマンドの前に sudo が必要になります。

$ sudo コマンドライン




MariaDB導入事例

フラットな状態で提供された Linux(CentOS7)環境に、ターミナルからSSH接続でMariaDBをインストールする方法を紹介します。SSH接続って何? という方はこちら

準備

インストールの前に、サーバーの環境を確認します。


リポジトリの追加

MariaDBの10系をインストールするためにはMariaDB専用レポジトリの追加が必要になります。

インストールとサービスの起動

初期パスワードの設定


参考:rootユーザーのパスワード初期化手順

その後、上記の手順でパスワードをセット

接続と動作確認




MySQL導入事例

SSH接続で遠隔のCentOSに MySQL 8 をインストール

準備

インストールの前に、サーバーの環境を確認します。

リポジトリの追加

単にインストールコマンドを打っただけでは、欲しいバージョンのものが入らない場合があります。バージョンによってリポジトリ情報の追加が必要です。

# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

インストールとサービスの起動

初期パスワードの変更


接続と動作確認

文字コードについて

日本語文字化け回避のため、DBが使用する文字コードは正しく設定されていることが必要です。以下、文字コードを確認・変更する方法です。

文字コードの確認

mysql> show variables like "chara%"; 
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.10 sec)

設定ファイルの変更

文字コードの変更を行うには、設定ファイルに指定を加える必要があります。
Linuxの場合 /etc/my.cnf が設定ファイルです。vi が使えない場合は、FTP でDLして、手元で編集して戻す・・という作業になります。
 my.cnf をエディタで開いて、[mysqld] [client] [mysql]それぞれ「default-character-set」の文字コードを変更、あるいは追記を行います。


確認作業

phpMyAdmin で 管理

phpMyAdmin は MySQL サーバーをブラウザから管理するためのDB接続クライアントツールで、PHPで書かれています。SQL の文法を知らなくてもデータベースに対する様々な操作が可能です(もちろん SQL を記述して実行することもできます)。

ダウンロードとセットアップ

参考:phpMyAdmin の configファイル(必要に応じて変更)

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use scripts/setup.php
 *
 * All directives are explained in Documentation.html and on phpMyAdmin
 * wiki <http://wiki.phpmyadmin.net>.
 *
 * @version $Id$
 */

/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = 'ここには適当な文字列を入れる'; 
 /* YOU MUST FILL IN THIS FOR COOKIE  UTH! */

/*
 * Servers configuration
 */
$i = 0;

/*
 * First server
 */
$i++;

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost または サーバーアドレス'; ←これ
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = '********';  ←これ
$cfg['Servers'][$i]['controlpass'] = '********';  ←これ
/* Advanced phpMyAdmin features */
以下コメントアウト 

/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

?>


ローカルで XAMPP を利用している場合の DBへの接続と操作


レンタルサーバー・外部サーバのDBへの接続と操作

以下、上記と同様です。


ERR:mysqli 拡張がありません・・について

MySQLiとは MySQL improved extension の略で、PHPからMySQL/MariaDBを操作するインターフェースを提供するPHPの拡張機能です。システムにこれが無い場合は、追加でインストールする必要があります。

# yum -y install php-mysql

失敗するときは、以下のように正しいリポジトリを見に行くように指示。

# yum install --enablerepo=remi,remi-php73 php-mysql

有効化のため再起動が必要です。

# systemctl restart httpd.service

参考:リポジトリ選択の重要性
リポジトリを指定せずにインストールしようとすると、デフォルトで有効化されていないリポジトリからのインストールは行われません。リポジトリ情報は /etc/yum.repos.d にあって、それぞれ有効/無効が記載されています。有効化したリポジトリの xxxx.repo ファイルを編集し、enabled=1 にして実行することで、それができるようになります。

MySQL 8 で phpMyAdmin にログインできない場合




Terminal 接続で管理

ローカルマシンの場合も、リモートにSSH接続した場合も同様の操作です。

接続と基本操作

データベースのバックアップとリストア

MySQL(Mariadb)のデータ領域