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
slaveのmy.cnf
more/etc/my.cnf
MySQLインストール手順略
2.MySQL構成マスター再コピー(略)
3.ssh無パスワードログイン環境の確立
192.168.1.1100、192.168.1.1、192.168.1.2でhostname:vi/etc/hostsを変更
テスト:
4.MHA mha 4 mysql-node,mha 4 mysql-managerパッケージのインストール
5.管理機managerにMHAファイルを配置する
192.168.1.1100:mkdir-p/masterha/app 1 mkdir/etc/masterhavi/etc/masterha/app 1.cnf
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は次のコードに書き込まれます.
このファイルに実行可能な権限を付与: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
vim/usr/local/mysql/bin/mysql.sh
chmod +x/usr/local/mysql/bin/mysql.sh
#mysqlを起動してからkeepalivedservice mysql startservice keepalived startを起動192.168.1.2:vim/etc/keepalived/keepalived.conf
vim/usr/local/mysql/bin/mysql.sh
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/
.主従は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/