安装Mysql,配置主从


配置MHA
   建立ssh无密码登录环境
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub '-p 27005 [email protected]'
ssh-copy-id -i .ssh/id_rsa.pub '-p 27005 [email protected]'
ssh-copy-id -i .ssh/id_rsa.pub '-p 27005 [email protected]'

ssh 连接测试看是否还需要密码

安装MHA node
  所有节点安装
   yum install perl-DBD-MySQL -y
   rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
会生成几个脚本文件
  /usr/bin/apply_diff_relay_logs
/usr/bin/filter_mysqlbinlog
/usr/bin/purge_relay_logs
/usr/bin/save_binary_logs


设置relay log的清除方式
在每个slave节点上:
  Sql>  set global relay_log_purge=0;
       show variables like "%relay_log_purge%";
 注意:MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,
 采用手动清除relay log的方式。

设置定期清理relay脚本(两台slave服务器)
cat purge_relay_log.sh 
#!/bin/bash
user=root
passwd=1
port=3306
log_dir='/var/log'
purge='/usr/bin/purge_relay_logs'

if [ ! -d $log_dir ]
then
   mkdir $log_dir -p
fi

$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> 
$log_dir/purge_relay_logs.log 2>&1

crontab -l
0 4 * * * /bin/bash /root/purge_relay_log.sh
安装MHA Manager
每台服务器配置 : 
/etc/hosts  和mha配置文件对应
192.168.3.129    server1
192.168.3.128    server2
192.168.3.132    server3
修改ssh默认连接端口
vim ~/.ssh/config
 Port 27005
cd ~/.ssh && chmod 600 config


安装MHA Node软件包,和上面的方法一样
安装依赖  
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

mkdir -p /etc/masterha
cat  /etc/masterha/app1.cnf
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/data/mysql/data/    #设置master 保存binlog的位置
master_ip_failover_script= /usr/local/bin/master_ip_failover
#master_ip_online_change_script=
password=123456    #监控用户,统一使用主从复制用户
user=root
ping_interval=1
remote_workdir=/tmp
repl_password=123456    #设置复制用户的密码
repl_user=slave
report_script=/usr/local/send_report    #设置发生切换后发送的报警的脚本
secondary_check_script=/usr/bin/masterha_secondary_check -s server3 -s server2            
#shutdown_script=""      #设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)
ssh_user=root  
ssh_port=27005


[server1]
hostname=192.168.3.129
port=3306

[server2]
hostname=192.168.3.128
port=3306
candidate_master=1   #设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集
群中事件最新的slave
check_repl_delay=0   #默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,
因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,
这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master

[server3]
hostname=192.168.3.132
port=3306

vim /usr/bin/masterha_secondary_check  72行修改默认ssh端口 

切换脚本:  /usr/local/bin/master_ip_failover   
(主mysql添加ifconfig eth0:1 192.168.3.130/24)

masterha_check_ssh --conf=/etc/masterha/app1.cnf   检查ssh
masterha_check_repl --conf=/etc/masterha/app1.cnf   检查mysql状态
masterha_check_status --conf=/etc/masterha/app1.cnf 检查MHA Manager的状态

确认检查都正常后开启MHA
nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null >
 /var/log/masterha/mha.log 2>&1 &  开启MHA Manager监控
    --remove_dead_master_conf      该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。
--manger_log                            日志存放位置
--ignore_last_failover                 在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行
Failover,之所以这样限制是为了避免ping-pong效应

开启MHA后不要重启主mysql,也会导致切换

masterha_stop --conf=/etc/masterha/app1.cnf  关闭MHA Manage监控


之前主库宕机后不要再切换,配置成和新主库主从同步,加入mha集群,
注意需要运行sql:set global relay_log_purge=0;


模拟测试
  yum install sysbench –y
  sysbench --test=oltp --oltp-table-size=1000000 --oltp-read-only=off --init-rng=on --num-threads=16 --max-requests=0
   --oltp-dist-type=uniform --max-time=1800 --mysql-user=root --mysql-socket=/var/lib/mysql/mysql.sock 
   --mysql-password=1 --db-driver=mysql --mysql-table-engine=innodb --oltp-test-mode=complex prepare  生成测试数据

  sysbench --test=oltp --oltp-table-size=1000000 --oltp-read-only=off --init-rng=on --num-threads=16 --max-requests=0 
  --oltp-dist-type=uniform --max-time=180 --mysql-user=root --mysql-socket=/var/lib/mysql/mysql.sock 
  --mysql-password=1 --db-driver=mysql --mysql-table-engine=innodb --oltp-test-mode=complex run    压力测试

results matching ""

    No results matching ""