MySQL+MHA+keepalive+VIP高可用性実験

8897 ワード

一、概要:本文はMySQLの高可用性の実現方案MHAを紹介した.MHAはNodeとManagerから構成され、Nodeは各MySQLサーバー上で運行され、MySQLメインサーバーであろうと、MySQLスレーブサーバーであろうと、Nodeをインストールしなければならない.主従はkeepalivedをインストールし、仮想ipドリフトを実現し、プログラムはIPを変更することなく自動的に切り替える.二、環境1.ソフトウェアバージョンオペレーティングシステムバージョン:CentOS release 6.4 MySQLデータベースバージョン:5.6.14 MHAバージョン:mha 4 mysql-node-0.54-0.el6.noarch.rpm、mha4mysql-manager-0.55-0.el6.noarch.rpmkeepalivedバージョン:1.2.72.ホスト配置MHA管理機、クライアントシミュレーション:192.168.1.1100 master:192.168.1.1 slave:192.168.1.2三、実験手順.MySQLをインストールします.MySQLはマスター再コピーを構成します.ssh無パスワードログイン環境を確立する.MHAmha 4 mysql-node,mha 4 mysql-managerパッケージをインストールします.管理機managerにMHAファイルを配置する.masterha_check_sshツールはssh信頼ログインが成功したかどうかを検証する.masterha_check_replツールはmysqlコピーが成功したかどうかを検証します.MHA managerを起動し、ログファイルを監視します.マスターのダウンタイムをテストすると、自動的に切り替えるかどうか.MHAを使用したテストマスター_ip_Failover、フェイルオーバを実現
.主従はkeepalivedをインストールし、仮想ipドリフトを実現する
1.MySQLmasterのmyをインストールします.cnfmore/etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_UNSIGNED_SUBTRACTION 
port = 6603
server_id = 1 
lower_case_table_names = 1
character_set_server = utf8
autocommit = off
innodb_flush_log_at_trx_commit = 1
skip_name_resolve = ON
innodb_strict_mode = ON
log_bin = mysql-bin
innodb_data_home_dir = /usr/local/mysql/data
innodb_log_group_home_dir = /usr/local/mysql/data
binlog_format=mixed

slaveのmy.cnf
more/etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_UNSIGNED_SUBTRACTION 
port = 6603
server_id = 2 
lower_case_table_names = 1
character_set_server = utf8
autocommit = off
innodb_flush_log_at_trx_commit = 1
skip_name_resolve = ON
innodb_strict_mode = ON
log_bin = mysql-bin
innodb_data_home_dir = /usr/local/mysql/data
innodb_log_group_home_dir = /usr/local/mysql/data
binlog_format=mixed
read_only = ON

MySQLインストール手順略
2.MySQL構成マスター再コピー(略)
3.ssh無パスワードログイン環境の確立
192.168.1.1100、192.168.1.1、192.168.1.2でhostname:vi/etc/hostsを変更
192.168.1.100	manage
192.168.1.1	master
192.168.1.2	slave
#  192.168.1.100:
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

#  192.168.1.1:
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

#  192.168.1.2:
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

テスト:
#  192.168.1.100:
ssh 192.168.1.1
ssh 192.168.1.2

#  192.168.1.1:
ssh 192.168.1.100
ssh 192.168.1.2

#  192.168.1.2:
ssh 192.168.1.100
ssh 192.168.1.1

4.MHA mha 4 mysql-node,mha 4 mysql-managerパッケージのインストール
#  192.168.1.100:
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
yum install perl-DBD-MySQL
yum install perl-Config-Tiny
yum install perl-Log-Dispatch
yum install perl-Parallel-ForkManager
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm
rpm -ivh mha4mysql-manager-0.55-0.el6.noarch.rpm

#  192.168.1.1:
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
yum install perl-DBD-MySQL
yum install perl-Config-Tiny
yum install perl-Log-Dispatch
yum install perl-Parallel-ForkManager
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

#  192.168.1.2:
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
yum install perl-DBD-MySQL
yum install perl-Config-Tiny
yum install perl-Log-Dispatch
yum install perl-Parallel-ForkManager
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

5.管理機managerにMHAファイルを配置する
192.168.1.1100:mkdir-p/masterha/app 1 mkdir/etc/masterhavi/etc/masterha/app 1.cnf
[server default]
user=root
password=12345
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
remote_workdir=/masterha/app1
ssh_user=root
repl_user=repl
repl_password=12345
ping_interval=1
[server1]
hostname=192.168.1.1
port=6603
master_binlog_dir=/usr/local/mysql/data
candidate_master=1
[server2]
hostname=192.168.1.2
port=6603
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

6. masterha_check_sshツールは、ssh信頼ログインが192.168.1.1.1100に成功したかどうかを検証します.masterha_check_ssh --conf=/etc/masterha/app1.cnf7. masterha_check_replツールmysqlレプリケーションが192.168.1.1.1100に成功したかどうかを確認します:masterha_check_repl --conf=/etc/masterha/app1.cnf8. MHA managerを起動し、192.168.1.1.1100:nohup masterha_でログファイルを監視します.manager --conf=/etc/masterha/app1.cnf >/tmp/mha_manager.log 2>&1#端末モニタログを1つ開く
tail -f tail -f/masterha/app1/manager.log
9.マスターダウンタイムをテストした後、192.168.1.1:service mysql stopが192.168.1.2:mysql>show slave statusGmysql>show variables like'rad_only';
10.MHAを使用したテストマスター_ip_failoverは、フェイルオーバリカバリを実現する主従構成(略)192.168.1.1100:ファイル/etc/masterha/app 1.cnfの[server default]セグメントに次の行master_を追加ip_failover_script=/tmp/master_ip_failoverはその後/tmp/master_ip_failoverは次のコードに書き込まれます.
#!/usr/bin/env php  
<?php  
$longopts = array(  
    'command:',  
    'ssh_user:',  
    'orig_master_host:',  
    'orig_master_ip:',  
    'orig_master_port:',  
    'new_master_host::',  
    'new_master_ip::',  
    'new_master_port::',  );  
$options = getopt(null, $longopts);  
if ($options['command'] == 'start') {  
    $params = array(  
        'ip'   => $options['new_master_ip'],  
        'port' => $options['new_master_port'],  
    );  
    $string = '<?php return ' . var_export($params, true) . '; ?>';  
    file_put_contents('config.php', $string, LOCK_EX);  }  
exit(0);  
?>

このファイルに実行可能な権限を付与:chmod+x/tmp/master_ip_failover
PHPのインストール:yum install php MHAプロセスの実行:nohup masterha_manager --conf=/etc/masterha/app1.cnf >/tmp/mha_manager.log 2>&1#単一端末監視ログtail-f tail-f/masterha/app 1/manager.log
テスト切り替え:master上のmysqlを192.168.1.1:service mysql stopを192.168.1.2:mysql>show slave statusGmysql>show variables like'rad_only';11.主従インストールkeepalived、仮想ipドリフトリカバリ主従構成(略)vip:192.168.1.3/192.168.1.4 master:192.168.1.1 slave:192.168.1.2主従2機器にkeepalived(略)をインストールする
keepalivedを192.168.1.1:vim/etc/keepalived/keepalivedに構成する.conf
global_defs {
 router_id MySQL-ha 
}

vrrp_instance VI_1 {
  state BACKUP
  interface eth1
  virtual_router_id 90
  priority 100
  advert_int 1
  nopreempt
  
  authentication {
  auth_type PASS  
  auth_pass 1111
  }
virtual_ipaddress {
  192.168.1.3
  192.168.1.4
  }
}

virtual_server 192.168.1.3 6603 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  nat_mask 255.255.255.0
  persistence_timeout 50
  protocol TCP
    real_server 192.168.1.1 6603 {
  weight 1
  notify_down /usr/local/mysql/bin/mysql.sh
  TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      connect_port 6603
      }
  }
}

vim/usr/local/mysql/bin/mysql.sh
#!/bin/bash
pkill keepalived

chmod +x/usr/local/mysql/bin/mysql.sh
#mysqlを起動してからkeepalivedservice mysql startservice keepalived startを起動192.168.1.2:vim/etc/keepalived/keepalived.conf
global_defs {
 router_id MySQL-ha
}

vrrp_instance VI_1 {
  state BACKUP
  interface eth1
  virtual_router_id 90
  priority 80
  advert_int 1
  authentication {  
  auth_type PASS  
  auth_pass 1111
  }
virtual_ipaddress {
  192.168.1.3
  192.168.1.4
  }
}

virtual_server 192.168.1.3 6603 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  nat_mask 255.255.255.0
  persistence_timeout 50
  protocol TCP
    real_server 192.168.1.2 6603 {
  weight 1
  notify_down /usr/local/mysql/bin/mysql.sh
  TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      connect_port 6603
      }
  }
}

vim/usr/local/mysql/bin/mysql.sh
#!/bin/bash
pkill keepalived

chmod +x/usr/local/mysql/bin/mysql.sh#mysqlを起動してからkeepalivedservice mysql startservice keepalived startを起動
192.168.1.1.1100:MHAプロセスの実行:nohup masterha_manager --conf=/etc/masterha/app1.cnf >/tmp/mha_manager.log 2>&1#単一端末監視ログtail-f tail-f/masterha/app 1/manager.log
テスト:192.168.1.1:ip a 192.168.1.2:ip amysql>show slave statusG 192.168.1100:mysql-u 1-p 12345-P 6603-h 192.168.1.3-e「show variables like'server_id'」mysql-u 1-p 12345-P 6603-h 192.168.1.3-e「show variables like'rad_only'」masterのmysqlを停止192.168.1.1:service mysql stopp a 192.168.1.2:ip amysql>show slave statusG 192.168.1100:mysql-u 1-p 12345-P 6603-h 192.168.1.3-e「show variables like'server_id'」mysql-u 1-p 12345-P 6603-h 192.168.1.3-e「show variables like'rad_only'」四、参照http://os.51cto.com/art/201307/401702.htmhttp://www.tuicool.com/articles/ZFfquahttp://www.tuicool.com/articles/ErU7nuhttp://www.tuicool.com/articles/2ENRjaIhttp://blog.itpub.net/14594028/viewspace-1073516/