Debian GNU/Linux 7 Wheezy サーバに DB サーバ MariaDB をソースをビルドしてインストールする方法についての記録です。
当然、MySQL と同様な方法でインストールできます。
0. 前提条件
- Debian GNU/Linux 7.1.0 での作業を想定。
- 接続元のマシンは Linux Mint 14(64bit) を想定。
- インストールする MariaDB のバージョンは 5.5.33a(当記事執筆時点最新安定版)を想定。
- MariaDB とは言っても中身は MySQL が元になっているので、各所で “mysql” のキーワードを使用する。
- データディレクトリは “/var/lib/mysql” ディレクトリ配下とする。
1. 必要パッケージインストール
ビルド時に configure
ではなく cmake
を使用するので、未インストールならインストールしておく。
また、bison
, g++
, libncurses5-dev
等も未インストールならインストールしておく。(コンパイルオプションによって異なるかもしれないが、実際に cmake
してみてエラー・警告メッセージを確認するのもよい)
1
|
|
2. アーカイブダウンロード&展開
インストールに使用するアーカイブファイル “mariadb-5.5.33a.tar.gz” を別途「MariaDB 5.5.33a Stable - MariaDB」からダウンロードし適当なディレクトリへ解凍する。
1
|
|
3. ビルド&インストール
cmake
, make
, make install
でビルド・インストールする。(時間がかかる)
取り急ぎ、コンパイルオプションは以下のようにした。
1 2 3 4 5 6 7 8 9 10 11 |
|
CMAKE_INSTALL_PREFIX
: インストール先ディレクトリ (Default: /usr/local/mysql)MYSQL_DATADIR
: デフォルトのデータディレクトリMYSQL_UNIX_ADDR
: ソケットファイルのフルパス (Default: /tmp/mysql.sock)ENABLED_LOCAL_INFILE
: LOAD DATA INFILE を有効にするか(Default: OFF)DEFAULT_CHARSET
: デフォルトの文字セット(Default: latin1)DEFAULT_COLLATION
: デフォルトの照合順序(Default: latin1_swedish_ci)WITH_EXTRA_CHARSETS
: 追加の文字セット(Default: all)WITH_INNOBASE_STORAGE_ENGINE
: InnoDB ストレージ エンジンを有効にする
何かパッケージが不足していてパッケージインストール後に再度ビルドを行う場合は、CMakeCache.txt
を削除してから cmake
を行う。
4. ユーザ・グループ作成
MySQL 用のユーザとグループを作成する。
1 2 |
|
5. データディレクトリ作成
データディレクトリが無ければ作成し、所有者・グループを設定しておく。
1 2 |
|
6. ログディレクトリ作成
ログ用ディレクトリを作成し、所有者・グループを設定しておく。
1 2 |
|
7. ソケット・PIDディレクトリ作成
ソケット・プロセスID用ディレクトリの所有者・グループを設定する。
1 2 |
|
8. 設定ファイル編集
“/usr/local/mysql/support-files/” ディレクトリ内にあるデフォルトの設定ファイルの中から自分の環境に近いものを “/etc/mysql/my.cnf” にコピーするなどして、適当に編集する。
以下は当方の例。(ストレージエンジンに InnoDB を利用することを想定している)
実際は自分の環境に合わせてチューニングする。
1
|
|
File: /etc/my.cnf
1 [client]
2 port = 3306
3 socket = /var/run/mysqld/mysqld.sock
4 default-character-set = utf8
5
6 [mysqld_safe]
7 socket = /var/run/mysqld/mysqld.sock
8 nice = 0
9
10 [mysqld]
11 # ==== Basic
12 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
13 user = mysql
14 pid-file = /var/run/mysqld/mysqld.pid
15 socket = /var/run/mysqld/mysqld.sock
16 port = 3306
17 basedir = /usr/local/mysql
18 datadir = /var/lib/mysql
19 tmpdir = /tmp
20 lc-messages-dir = /usr/local/mysql/share
21 character-set-server = utf8
22 skip-external-locking
23 skip-character-set-client-handshake
24
25 # ==== Buffer
26 key_buffer = 256M
27 max_allowed_packet = 1M
28 sort_buffer_size = 1M
29 read_buffer_size = 1M
30 myisam_sort_buffer_size = 64M
31 thread_stack = 192K
32 thread_cache_size = 8
33 query_cache_limit = 1M
34 query_cache_size = 16M
35 tmp_table_size = 16M
36 max_heap_table_size = 16M
37 thread_concurrency = 2
38
39 # ==== Binary Log
40 log-bin = mysql-bin # データインポート時はコメントアウト
41 expire_logs_days = 10
42 max_binlog_size = 100M
43
44 # ==== Connection
45 #bind-address = 127.0.0.1
46 max_connections = 100
47 max_connect_errors = 100
48
49 # ==== MyISAM
50 myisam-recover = BACKUP
51
52 # ==== InnoDB
53 innodb_data_file_path = ibdata1:1G:autoextend
54 innodb_file_per_table
55 innodb_autoextend_increment = 64
56 innodb_buffer_pool_size = 512M # 768M
57 innodb_additional_mem_pool_size = 20M
58 innodb_write_io_threads = 8
59 innodb_read_io_threads = 8
60 innodb_log_buffer_size = 8M # 通常時:8程度, データインポート時:32程度
61 innodb_log_file_size = 128M # 256M
62 innodb_flush_log_at_trx_commit = 1 # 通常時:1(デフォルト), データインポート時:2 or 0
63 #skip_innodb_doublewrite # ダブルライトバッファへの書き込みをスキップ(通常時は指定しない。データインポート時のみ)
64
65 # ==== Log
66 log-error = /var/log/mysql/error.log
67 #general_log_file = /var/log/mysql/mysql.log # デバッグ時に有効化
68 #general_log = 1 # デバッグ時に有効化
69 #slow_query_log_file = /var/log/mysql/slow.log # デバッグ時に有効化
70 #slow_query_log = 1 # デバッグ時に有効化
71
72 [mysqldump]
73 quick
74 quote-names
75 max_allowed_packet = 16M
76
77 [mysql]
78 no-auto-rehash
79
80 [isamchk]
81 key_buffer = 16M
82
83 [myisamchk]
84 key_buffer_size = 128M
85 sort_buffer_size = 128M
86 read_buffer = 2M
87 write_buffer = 2M
88
89 [mysqlhotcopy]
90 interactive-timeout
【注意】
設定ファイルが複数存在する場合の読み込み順序は以下のようにして確認できる。存在する設定ファイルを順に全て読み込み、後に読み込んだ設定が有効になることに留意しておく。
“/etc/my.cnf” の設定を使用したい場合は、他の設定ファイルは読み込まないように削除(もしくは拡張子を “.cnf” 以外で終わるようにリネーム)しておくこと。
1 2 3 |
|
9. MySQL 初期化
MySQL データを初期化し、システムテーブルを作成する。
1 2 |
|
10. 起動スクリプト準備
起動用スクリプトを準備する。(用意されているスクリプトをコピーする)
場合によっては編集することになるが、my.cnf
で basedir
, datadir
等を指定しているので、ここでは特に編集はしない。
1
|
|
11. 起動・再起動・ステータス確認・停止のテスト
起動・再起動・ステータス確認・停止ができるか確認する。
1 2 3 4 |
|
もちろん、”service” コマンドでも起動・再起動・ステータス確認・停止ができるはずです。
12. 環境変数 PATH の設定
mysql コマンドへのパスを設定するために .bash_profile
の最終行に以下の記述を追加する。
File: /etc/profile
1 export PATH=/usr/local/mysql/bin:$PATH
マシンを再起動すれば PATH が有効化するが、直ちに有効化したければ以下のようにする。
1
|
|
13. MySQL セキュリティ設定
root のバスワード設定、テストDB削除等を行う。
(root のパスワードのみ設定して、後はデフォルト(エンター押下))
1
|
|
14. 動作確認
MySQL サーバにログインしてみる。
1 2 3 4 5 6 7 8 9 10 11 |
|
その他、実際にデータベースを作成してみたりしてみる。
15. 自動起動設定
マシン起動時に自動で MariaDB を起動させるには以下のようにする。(sysv-rc-conf
導入済みの場合)
1 2 3 |
|
もしくは、以下のようにする。
1
|
|
逆に、自動起動しないようにするには以下のようにする。(sysv-rc-conf
導入済みの場合)
1 2 3 |
|
あるいは、
1
|
|
16. ポート開放
外部から MariaDB サーバに直接アクセスする場合(GUI ツールを使用する場合等)、ポート(TCP:3306)を開放する必要があある。
iptables の場合、 “/etc/iptables/rules.v4” に以下を追加する。
File: /etc/iptables/rules.v4
1 # TCP3306番ポート(MariaDB)へのアクセスを許可
2 -A INPUT -p tcp --dport 3306 -j ACCEPT
そして、iptables を再起動する。
1
|
|
17. 参考サイト
以上。