2012年5月9日水曜日

install innobackupex on CentOS5

※this text from livedoor blog 2011/7/19

下記の記事を参照して欲しい
XtraBackupを使ってMySQLをバックアップしよう [2012/2/1]


innobackupexを使ってMySQLのデータをバックアップする

参考 http://www.percona.com/docs/wiki/percona-xtrabackup:start http://dbspelunker.blogspot.com/2010/11/xtrabackupmanual.html インストール my.cnfの設定の [mysqld]以下にdatadirの設定を記述 ※innobackupexが/etc/my.cnfからdatadirの値を使うため
# emacs /etc/my.cnf
datadir=/var/lib/mysql/
GnuPGが必須になるのでインストールする
# yum install gpg
Yumレポジトリをインストールする
32bit OS
# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.i386.rpm
64bit OS
# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
yum listに入っているかチェック
# yum list | grep xtrabackup
holland-xtrabackup.noarch                  1.0.6-3.el5                 epel     
xtrabackup.i386                            1.6-245.rhel5               percona  
xtrabackup-debuginfo.i386                  1.6-245.rhel5               percona  
インストール
# yum install xtrabackup
インストール場所のチェック
# which xtrabackup
# which innobackupex
バックアップ バックアップディレクトリ作成
# mkdir -p /mysqlbackup/xtrabackup/
バックアップ実行
# /usr/bin/innobackupex --user UUUUUUU --password PPPPPPP --slave-info /mysqlbackup/xtrabackup/
.............
.............
>> log scanned up to (542812997)
xtrabackup: Stopping log copying thread.
xtrabackup: Transaction log of lsn (542812997) to (542812997) was copied.
110719 18:25:44  innobackupex: All tables unlocked
110719 18:25:44  innobackupex: Connection to database server closed

innobackupex: Backup created in directory '/mysqlbackup/xtrabackup/2011-07-19_18-25-17'
innobackupex: MySQL binlog position: filename 'mysql-bin.000012', position 599281561            
innobackupex: MySQL slave binlog position: master host '', filename '', position 
110719 18:25:44  innobackupex: completed OK!
→/mysqlbackup/xtrabackup/2011-07-19_18-25-17以下にバックアップファイルが配置された ※リストアの際に/etc/my.cnfのデータファイルに関する設定を合わせる必要があるため/etc/my.cnfもバックアップを取ると良い 但し、リストアする時にそのままデータディレクトリにファイルが設置されて/var/lib/mysql/my.cnfが有効にならない様に my.cnf.org の様にリネームしておく ※バックアップファイルは圧縮して別サーバにコピーをしておく WAL(Write Ahead Log)を適用する
# /usr/bin/innobackupex --user UUUUUUU --password PPPPPPP --apply-log /mysqlbackup/xtrabackup/2011-07-19_18-25-17
.............
.............
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
110719 18:32:40  InnoDB: Starting shutdown...
110719 18:32:40  InnoDB: Shutdown completed; log sequence number 542814220
110719 18:32:40  innobackupex: completed OK!
リストア MySQLをストップし、既存のデータディレクトリを移動する
# /etc/init.d/mysqld stop
# mv /var/lib/mysql /var/lib/mysql.bak
# mkdir /var/lib/mysql
リストア実行
# /usr/bin/innobackupex --copy-back /mysqlbackup/xtrabackup/2011-07-19_18-25-17
ディレクトリの権限を変更して、MySQLをスタートする
# chown -R mysql:mysql /var/lib/mysql
# /etc/init.d/mysqld start
起動ログの確認をする
# tail -f /var/log/mysqld.log
もしくは
# tail -f /var/lib/mysql/****.err
※ib_logfile0のサイズによるエラーが出たときは、my.cnfのログデータに関する記述を修正する
InnoDB: Error: log file ./ib_logfile0 is of different size 0 134217728 bytes
InnoDB: than specified in the .cnf file 0 126877696 bytes!
110720 13:48:47 [ERROR] Plugin 'InnoDB' init function returned error.
110720 13:48:47 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
110720 13:48:47 [ERROR] Unknown/unsupported storage engine: InnoDB
110720 13:48:47 [ERROR] Aborting
.............
.............

# emacs /etc/my.cnf
innodb_log_file_size = XXX M
※MySQLのバージョンを上げた時にはmysql_upgradeを実行する
# /usr/bin/mysql_upgrade -uUUUUUUU -pPPPPPPP