mysql on.000002_mysql | 同乐学堂

一、安装centos6.5

https://jingyan.baidu.com/article/25648fc1a235c99191fd0008.html  小白安装centos6.5

00:50:56:2C:66:9A

二、centos6.5 安装mysql 5.5

1、先卸载5.1:yum -y remove mysql*

// 增加mysql的repo源

2、 rpm -Uvh http://mirror.steadfast.net/epel/6/i386/epel-release-6-8.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

//查看yum中是否存在mysql5.5

3、 yum --enablerepo=remi,remi-test list mysql mysql-server

// 安装mysql 5.5

4、 yum --enablerepo=remi,remi-test install mysql mysql-server

5、cp /usr/share/mysql/my-medium.cnf /etc/my.cnf  (改名为my.cnf作为mysql配置文件)

//配置中继日志的位置,可以默认不配。

relay_log  = /var/lib/mysql/mysql-relay-bin

// 允许从库将其重放的事件也记录到自身的二进制日志中。

log_slave_updates =1

为了区分和标识mysql集群:SHOW VARIABLES LIKE 'server_id';(需要修改my.cnf 的serverid) 。

// 启动mysql

6、 /etc/init.d/mysqld start

// 设置开机启动

7、 chkconfig --levels 345 mysqld on

// 设置root密码。

8、 /usr/bin/mysql_secure_installation

// 登陆mysql

9、mysql -u root -p

10、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'zhangtongle123' WITH GRANT OPTION ; (允许远程用户登陆)

11、FLUSH PRIVILEGES;(刷新权限)

12、exit(退出)

三、安装依赖包

yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

必装,不要问我为什么,转,执行!

四、 安装perl 环境

yum  -y install cpan

yum -yinstall  *Time*

这块全是泪~。坑我好长时间~。别问为什么要安装~,直接执行,每个节点都要装!

五、安装mha框架和环境配置

上传到centos6.5 本地目录:

1、先安装node包,然后在安装manager包‘

tar -zxvf mha4mysql-node-0.56.tar.gz

cd mha4mysql-node-0.56

perl Makefile.PL

安装成功!

f7792f4e525f1d4b551d101dbd863be9.png

编译:make

make install

manager 包安装同上!

四,打通集群ssh免密码登录

参考网址:

11b7b6f8dee34202dc2f92cb804d1139.png

五,配置数据库一主二从的数据库复制模式。

环境:

192.168.1.60   master

192.168.1.61   slave1

192.168.1.62   slave2

192.168.1.59   MHA

创建数据库复制账号,和监控账号。

监控账号(在生产环境监控账号一定不能是root账号,并且不要授予delrte,update权限):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'zhangtongle123' WITH GRANT OPTION ;

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY '123456';

配置为一主二从模式

开启复制链路:*( 配置从库到主库的链路:MASTER_HOST  主库IP地址。MASTER_LOG_FILE :主库的binlog文件名。MASTER_LOG_POS:log的起始位置)

1、查看主库上(master:60):MASTER_HOST 当前bin-log位置: show master  status;  获得MASTER_LOG_FILE、MASTER_LOG_POS

2、在从库(slave1(61)、slave2(62))上执行:

CHANGE MASTER TO MASTER_HOST ='192.168.1.60',MASTER_USER='repl',MASTER_PASSWORD= '123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=107;

3、在slave1,slave2上:sql执行>start slave;

4、 查看复制链路:  SHOW SLAVE STATUS

如果同步有误:

操作如下:

停止主从复制服务: stop slave;(停止master,slave1.slave2

清除掉同步位置:reset slave;

完全清除同步信息:reset slave all;

安装完MYSQL服务器后在本机所有操作都正常, 但在其它机器上远程访问这个MYSQL服务器时怎么都连接不上.  shit!

怀疑是端口问题, 结果:

telnet 192.168.1.245 3306

发现连接不上, 原来如此是端口被防火墙限制了.

现在只需要是在防火墙中打开3306端口即可.

执行 vi /etc/sysconfig/iptables 如图:

day6-mysql%E6%9E%B6%E6%9E%84%E5%AE%9E%E6%88%98mha

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

加入这句话就可以了, 注意这句话一定要加在最后一句话的上面. 否则不会生效.

同样如果是其它端口把"3306"换成相应端口即可.

然后重启一下防火墙

service iptables restart

六、配置MHA

将app1.cnf 上传到/etc 下进行配置。

汽车之家的测试环境配置可供参考:

第一次接触的童鞋:可以参考这两篇文章,里面有详细的解释和参数值约束问题!

重点参数

MHA 重点参数详解

1、如果你的环境是链式复制架构,比如A-B-C,那么设置candidate_mast=1 如果不是,设置candidate_mast=0

2、在默认情况下,当一个slave同步延迟超过100M relay log, MHA在做故障切换时不会选择这个slave做为新的master,因为恢复需要经过很长时间。 当设置了check_repl_delay = 0, MHA将忽略被选择的slave上的同步延迟。 这个选项在设置了candidate_master = 1特声明的期望这台机器成为master的情况下特别有用。

3、在默认情况下,不会在slave存在故障的情况下(SQL Thread已经停止出错)的情况下进行Master的故障切换。 当设置了ignore_fail = 1时,MHA会在所有的机器有问题的时候也会进行故障切换。

搜索一下mysql的binlog位置:

ps -aux | grep mysql

存放到MHA:

配置文件中需要创建的目录:mkdir  -p /var/log/masterha/   创建存储log文件目录。四个节点都要创建。

mkdir /root/mha_sh

存放到master:

vip_ipaddr.sh  ----上传到 mkdir /root/vip

chmod 755 vip_ipaddr.sh

手工加载虚拟VIP进行测试:

ip addr add    192.168.1.100/32 dev eth2  //删除的话 add 替换成delete

59524c193e26d730c86f6830158ab7a3.png

测试MHA的ssh是否配置成功:

a8ff824003ebb305b0e896c8fd2d24be.png

测试MHA 的复制:

2246d3ff1e3abbdb56261f7ed512fe4c.png

701f463ee4db38a57d206c40e296f18b.png

2d3848e7094d28be73deef91b5ece453.png

去掉警告

在:slave1、slave2的my.cnf上配置如下:

read_only =1

log_slave_updates =1

relay_log_purge=0

出现的错误:

[error][/usr/local/share/perl5/MHA/ManagerUtil.pm, ln122] Got error when getting node version. Error:

错误原因:子节点没有安装好,重新安装重新编译就可以了。

启动:

[root@MHA mha_sh]# ./startmha.sh

验证:cd /var/log/masterha

tail -f manager.log

cat app1.master_status.health    ping ok

13fbb808b14d16da72207942e87e8520.png

b21f970e0d183ff07fa5f4bc04412c19.png

部署完毕,成功启动!

实际验证:现在master 60 机器上的虚拟vip通过 这个是100

ip addr add    192.168.1.100/32 dev eth2

在master上,执行msyql的停止: service mysqld stop

验证:切换到管理机器-mha 59

查看日志变化,提示已经成功故障转移!如下图。

:cd /var/log/masterha

tail -f manager.log

b974a60af6fea4d5e351a21b34c5dd7d.png

e6c86fef3374c53428a6185f11625bbe.png

备注:

4cbbc84e88c076a5189a44c95f03f85b.png

master:60宕机了,想要与最新的slave1 主库进行同步,复制啊,咋整呢?

切换到MHA:59机器上,

在app1.cnf 配置的log目录下>grep -i 'change' manager.log 并把里面的change 语句复制出来在有故障的机器上执行。

1dee224ded218c7f97b2c8a0b402f4fe.png

CHANGE MASTER TO MASTER_HOST='192.168.1.61', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=107, MASTER_USER='repl', MASTER_PASSWORD='123456';

4030d9e64b4f060fee76cb3ca448e070.png

别忘了在60master执行 mysql>start  slave

备注:报错了!解决: reset slave; 重新执行上面的change master语句!

手工离线切换VIP.

手工切换是通过这个脚本执行的:mha_mfailover.sh

#!/bin/bash

masterha_master_switch --conf=/etc/app1.cnf --master_state=dead --ignore_last_failover --dead_master_host=slave1 --dead_master_ip=192.168.1.61 --dead_master_port=3306

这里要指定自定义死亡的主机名称和IP地址

手工切换之前要执行这个操作:masterha_stop --conf=/etc/app1.cnf

然后关闭:slave1 数据库。:service mysqld stop

然后执行在mha_sh 目录下执行:./mha_mfailover.sh

期间有两次询问,填写yes即可。

手工从salve1:61,切换到master:60

故障转移报告:

0e5ec8bb400a64fa244cc6df044cc9cb.png

然后在查看VIP:192.168.1.100 是否在master上

4e781f909c9a454be24338ed0b3ceb95.png

手工:

slave1:61宕机了,想要与最新的 主库master:59进行同步,复制啊,咋整呢?

1、先启动salve1的mysql》service mysqld start

2、切换到MHA:59机器上,

在app1.cnf 配置的log目录下>grep -i 'change' manager.log 并把里面的change 语句复制出来在有故障的机器上执行。

CHANGE MASTER TO MASTER_HOST='192.168.1.60', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=107, MASTER_USER='repl', MASTER_PASSWORD='123456';

手工在线切换VIP  最常用的一种非常方便,无需停用mysql,无需重新执行复制链路命令。

直接在mha机器上执行就ok!

打赏

2e064ed1ef37769cd5e2a0e3922c84d4.png微信扫一扫,打赏作者吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值