站长资讯网
最全最丰富的资讯网站

mysql高可用解析

实验环境:

server5:MHA管理节点 172.25.66.5

server6:myslq master 172.25.66.6

server7:mysql Candicate slave 172.25.66.7

server8:mysql slave 172.2.66.8

1.安装数据库,搭建主从复制:(server6、7、8)

以server6为例:

mysql高可用解析

vim /etc/my.cnf

mysql高可用解析

重启服务并初始化数据库

/etc/init.d/mysqld start

grep password /var/log/mysqld.log

mysql -p

mysql高可用解析

进入数据库首先需要重置root用户密码

mysql高可用解析

查看master的状态,并授权slave能通过repl用户,使用‘Yuanxiaoxi+007‘的密码从master端进行数据同步

mysql高可用解析

两个slave端的配置:

vim /etc/my.cnf

mysql高可用解析

mysql高可用解析

mysql高可用解析

问题:SQL线程显示为NO,错误提示中有“PRIMARY'

mysql高可用解析

解决:在master端 reset master

在slave端:

mysql高可用解析

测试两个slave是否可以和master保持数据同步

在master端插入数据

mysql高可用解析

slave端数据同步

mysql高可用解析

MHA端的配置:

mysql高可用解析

mysql高可用解析

mysql高可用解析

mysql高可用解析

检查ssh连接

masterha_check_ssh

mysql高可用解析

mysql高可用解析

原因:MHA manager通过ssh访问所有的node节点,各个node节点同样也需要ssh来相互发送不同的relay log文件,所以有必要在每一个node和manager之间配置ssh无密码登陆

ssh-keygen

ssh-copy-id 172.25.66.5

scp -r .ssh/ 172.25.66.6:

scp -r .ssh/ 172.25.66.7:

scp -r .ssh/ 172.25.66.8:

mysql高可用解析

检查repl环境

mysql高可用解析

mysql高可用解析

解决方法:在master上

mysql高可用解析

在检测时可能还会出现报错:

mysql高可用解析

mysql高可用解析

slave节点配置:

在sever7和server8上配置slave为只读,但不要写入配置文件,因为master机down掉后可能随时升级为master

set global read_only=1;

测试:

在server5开启MHA监控模式:

mysql高可用解析

启动参数介绍:

–remove_dead_master_conf 该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。

–manger_log 日志存放位置

–ignore_last_failover 在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免ping-pong效应。该参数代表忽略上次MHA触发切换产生的文件, 默认情况下,MHA发生切换后会在日志目录下产生app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后手动删除该文件,为了方便,这里设置为–ignore_last_failover。

将Master的服务down掉

mysql高可用解析

在server5查看日志:

mysql高可用解析

server7变为了master

mysql高可用解析

server8的状态

mysql高可用解析

为了后续的实验,将server6的服务恢复

/etc/init.d/mysqld start

mysql高可用解析

在线切换:在许多情况下, 需要将现有的主服务器迁移到另外一台服务器上。 比如主服务器硬件故障,RAID 控制卡需要重建,将主服务器移到性能更好的服务器上等等。

mysql高可用解析

mysql高可用解析

server7上变为了slave

mysql高可用解析

server6变为了master

mysql高可用解析

手动切换:手动failover,这种场景意味着在业务上没有启用MHA自动切换功能,当主服务器故障时,人工手动调用MHA来进行故障切换操作

将server6的mysql服务down掉,在server5上手动切换到server7上

mysql高可用解析

mysql高可用解析

mysql高可用解析

server7已经变为了master

mysql高可用解析

通过脚本的方式管理VIP:

mysql高可用解析

vim master_ip_failover

mysql高可用解析

vim master_ip_online_change

mysql高可用解析

vim /etc/masterha/app1.cnf

mysql高可用解析

第一次需要添加虚拟ip

mysql高可用解析

在客户端测试:可以访问服务器

mysql高可用解析

将server7的mysql服务down掉,看是否server6能否接替

mysql高可用解析

客户端使用虚拟ip访问不受影响,并且虚拟ip自动调转到了server6上

mysql高可用解析

mysql高可用解析

发送告警邮件

server5:

mysql高可用解析

vim root/MHA/send_report

mysql高可用解析

cp send_report /usr/local/bin/

cd /usr/local/bin/

chmod +x send_report

vim /etc/masterha/app1.cnf

mysql高可用解析

mysql高可用解析

mysql高可用解析

测试:

mysql高可用解析

mysql binlog日志优化

在数据库安装完毕,对于binlog日志参数设置,有一些参数的调整,来满足业务需求或使性能最大化。Mysql日志主要对io性能产生影响,本次主要关注binlog日志。binlog日志会记录下数据库的所以增删改操作,当不小心删除、清空数据,或数据库系统出错,这时候就可以使用binlog日志来还原数据库,简单来说就是一个记录备份的东西

mysql高可用解析

参数binlog_row_image 控制着这种image类型,默认为FULL(log all columns),即记录before&after images。
该参数还有两种,minimal和noblob,minimal表示只记录after更改后的值,并且如果有主键或者非空唯一索引,则只以该字段作为where条件判断;noblob同full,只是不记录blob、text列。

mysql高可用解析

慢查询日志 slow_query_log,这个东西是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,然后就可以进行数据库或sql语句或程序上的优化,简单来说就是一个优化辅助工具

1.开启慢查询日志

mysql高可用解析

如果想关闭慢查询日志,只需要执行 set global slow_query_log = off

2.查询慢查询时间临界点:查询时间高于这个临界点的都会被记录到慢查询日志中

mysql高可用解析

3.设置慢查询时间临界点:所有执行时间超过1秒的sql都将被记录到慢查询文件中

set long_query_time = 1;

4.查看慢查询日志

mysql高可用解析

mysql高可用解析

比如上面,就表示 sql语句select sleep(10); 执行时间为10.001548秒,超出了我们设置的慢查询时间临界点10s,所以被记录下来了。

5.我们通过查看慢查询日志可以发现,很乱,数据量大的时候,可能一天会产生几个G的日志,根本没有办法去清晰明了的分析。所以,这里,我们采用工具进行分析。

mysql高可用解析

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号