m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

MySQL5.6のソースインストール

環境

OS

LinuxCentOS 64bit)

仮想環境?

VMPlayer

ローカル?

当然

条件

MySQLソースコードをダウンロードするのにOracleのアカウントがいるのでアカウントは取得する必要があります。
※rpmやyumの場合は別の場所から取得できるので別の方法があるかも

あと他にいろいろな開発ツールなどはインストールしておくことyumでもaptでも行ける環境で試すと良い

時間

環境にもよるが1時間位かかった…適切なパッケージインストールがあるならそのほうが良いかも
なんかパッケージ(rpm)をインストールする場合いろいろあれがない…これがない…とかで挫折したけど

cmakeのインストール

手順
cd /tmp
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz
tar zxf cmake-2.8.12.1.tar.gz
cd cmake-2.8.12.1
./bootstrap
make
make install
バージョンの確認
[root@localhost cmake-2.8.12.1]# cmake --version
cmake version 2.8.12.1
[root@localhost cmake-2.8.12.1]#

MySQL5.6のソースインストール

手順
cd /tmp/
tar zxf mysql-5.6.14.tar.gz
cd mysql-5.6.14
cmake . \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DENABLED_LOCAL_INFILE=true \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_EXTRA_CHARSETS=all \
 -DWITH_READLINE=OFF
make
make install
設定ファイル
[client]
port   = 3306
#socket = /var/run/mysqld/mysqld.sock
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld_safe]
#socket = /var/run/mysqld/mysqld.sock
socket = /tmp/mysql.sock
nice   = 0

[mysqld]
# ==== Basic
sql_mode             = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user                 = mysql
pid-file             = /var/run/mysqld/mysql.pid
#socket               = /var/run/mysqld/mysqld.sock
socket               = /tmp/mysql.sock
port                 = 3306
basedir              = /usr/local/mysql
datadir              = /var/mysql/data
tmpdir               = /tmp
lc-messages-dir      = /usr/local/mysql/share
character-set-server = utf8
skip-external-locking
skip-character-set-client-handshake

# ==== Buffer
key_buffer              = 32M
max_allowed_packet      = 16M
sort_buffer_size        = 1M
read_buffer_size        = 1M
myisam_sort_buffer_size = 16M
thread_stack            = 192K
thread_cache_size       = 32
query_cache_limit       = 1M
query_cache_size        = 128M
tmp_table_size          = 64MB
max_heap_table_size     = 64M

# ==== Binary Log
log-bin          = mysql-bin  # データインポート時はコメントアウト
expire_logs_days = 10
max_binlog_size  = 100M

# ==== Connection
#bind-address       = 127.0.0.1
max_connections    = 100
max_connect_errors = 1000

# ==== MyISAM
myisam-recover = BACKUP

# ==== InnoDB
innodb_data_file_path           = ibdata1:1G:autoextend
innodb_file_per_table
innodb_autoextend_increment     = 64
innodb_buffer_pool_size         = 1G
innodb_write_io_threads         = 8
innodb_read_io_threads          = 8
innodb_log_buffer_size          = 8M   # 通常時:8程度, データインポート時:32程度
innodb_log_file_size            = 256M
innodb_flush_log_at_trx_commit  = 1  # 通常時:1(デフォルト), データインポート時:2 or 0
#skip_innodb_doublewrite  # ダブルライトバッファへの書き込みをスキップ(通常時は指定しない。データインポート時のみ)

# ==== Log
log-error           = /var/log/mysql/error.log
#general_log_file    = /var/log/mysql/mysql.log  # デバッグ時に有効化
#general_log         = 1                         # デバッグ時に有効化
#slow_query_log_file = /var/log/mysql/slow.log   # デバッグ時に有効化
#slow_query_log      = 1                         # デバッグ時に有効化

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]

[isamchk]
key_buffer = 16M
環境変数などの設定
# パスを追加
vim /etc/profile
----
export PATH=$PATH:/usr/local/mysql/bin
----
source /etc/profile
環境設定(ディレクトリ作成、ユーザー作成など)
# 設定ファイルをコピー
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
----

# ユーザー作成
groupadd mysql
useradd -g mysql -d /home/mysql -m mysql

# ディレクトリ作成
mkdir -p /var/log/mysql
mkdir -p /var/mysql/data
mkdir -p /var/run/mysqld

# 権限設定
chown -R mysql.mysql /var/log/mysql/
chown -R mysql.mysql /var/mysql/data/
chown -R mysql.mysql /var/run/mysqld/

#初期化
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/mysql/data --defaults-file=/etc/my.cnf

# 起動スクリプト準備
cp support-files/mysql.server /etc/init.d/mysqld

# 起動テスト
/etc/init.d/mysqld start
/etc/init.d/mysqld restart
/etc/init.d/mysqld status
/etc/init.d/mysqld stop

# 自動起動設定
chkconfig mysqld on
chkconfig --list mysqld

# 起動
service mysqld start

# 初回セキュリティ設定
/usr/local/mysql/bin/mysql_secure_installation

# 接続
mysql -uroot -p
show variables like 'character_set%';

grant all on *.* to root@"%" identified by 'password';
grant all on *.* to root@"localhost" identified by 'password';
flush privileges;
----

所感

4~5ヶ月前あたりに設定したことあったけどはてなブログやってなかったのでローカルにしか保存していなかったので
公開

インフラ系のエンジニアではないがこれくらいのコマンドは使用できないとマズイので勉強がてら
やる

vim設定ファイル編集している時、"#"のあとに改行したら#が出てきたのでちょっと調製した

vim ~/.vimrc
----
"行番号は非表示"
set nonumber

"全てのファイルの自動改行を無効にする"
autocmd FileType * :set formatoptions=q

"タブ"
set ts=4 sw=4 sts=4
----

なんか「autocmd FileType * :set formatoptions=q」をしたら改行しても#がつかなくなった

うーん、vimの勉強もちょっとずつやる必要があるのかな…なんか全然使えない