目录
1.慢查询
set global slow_query_log=ON;
show variables like "long%";
set long_query_time=5; show status like 'slow%';select sleep(10) 等待了十秒
2.路由器配置
MySQL Router 是轻量级中间件,可在应用程序和任何后端 MySQL 服务器之间提供透明路由。它可用于各种用例,例如通过有效地将数据库流量路由到适当的后端 MySQL 服务器来提供高可用性和可扩展性。可插拔架构还使开发人员能够为自定义用例扩展 MySQL 路由器。
我们在server4上安装MySQL Router,让server4作为一个路由。它连接着3台后端服务器,分别是:server1、server2和server3。
[routing:ro] ##只读 bind_address = 0.0.0.0 bind_port = 7001 ##端口号 destinations = 172.25.13.2:3306,172.25.13.3:3306 routing_strategy = round-robin ##轮叫 [routing:rw] ##读写 bind_address = 0.0.0.0 bind_port = 7002 destinations = 172.25.0.1:3306,172.25.0.2:3306,172.25.0.3:3306 routing_strategy = first-available ##按顺序先后
添加一个用户、设置密码
mysql> grant all on *.* to 'wxh'@'%' identified by 'westos'; ##因为server123三台主机是组复制,所以都会执行
查看7001.7002端口 访问server4mysql 跳转到server3
退出再次访问跳转到server2
访问7002端口跳转到server1
3.mha高可用
介绍
Master HA,对主节点进行监控,可实现自动故障转 移至其它从节点;通过提升某一从
节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多
从的架构,要搭建MHA,要求一个复制集群中必须最少有 三台数据库服务器,一主二从,
即一台充当master,一台充当备用master,另外一台充当从库,如果财大气粗,也
可以用一台专门的服务器来当MHA监控管理服务器MHA工作原理
从宕机崩溃的master保存二进制日志事件(binlog events)
识别含有最新更新的slave
应用差异的中继日志(relay log)到其他的slave
应用从master保存的二进制日志事件(binlog events)
提升一个slave为新的master
使其他的slave连接新的master进行复制
注意:MHA需要基于ssh,key验证登入方法MHA软件由两部分组成
Manager工具包和Node工具包,具体的说明如下。
1.Manager工具包主要包括以下几个工具:
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息
2.Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)实验前准备
MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当slave,所以至少需要三台服务器。
将server1.2.3恢复到主复制阶段
server1配置server2配置
server3同理serve2暂停服务查看repl用户将node 的安装包传给server123,并安装
将masterha_default.cnf内容传到app1中
[server default] user=root ##mysql主从节点的管理员用户密码,确保可以从远程登陆 password=westos ping_interval=3 ##发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行failover remote_workdir=/tmp ##远端mysql在发生切换时binlog的保存位置 repl_user=repl ##主从复制用户密码 repl_password=westos secondary_check_script=/usr/bin/masterha_secondary_check -s 172.25.13.2 -s 172.25.13.3 ssh_user=root ##ssh用户名 manager_workdir=/etc/masterha ##manager工作目录 manager_log=/etc/masterha/mha.log ##manager日志文件 master_binlog_dir=/date/mysql ##mysql主服务器的binlog目录 #master_ip_failover_script=/etc/masterha/master_ip_failover ##failover自动切换脚本 #master_ip_online_change_script= /usr/local/bin/master_ip_online_change ##手动切换脚本 [server1] hostname=172.25.13.1 port=3306 #candidate_master=1 #check_repl_delay=0 [server2] hostname=172.25.13.2 port=3306 candidate_master=1 ##指定failover时此slave会接管master,即使数据不是最新的 check_repl_delay=0 [server3] hostname=172.25.13.3 port=3306 no_master=1 ##始终是slave
检测是否正常error为秘钥问题、生成秘钥测试秘钥是否正确再次检测-成功检查用户调试成功
4.mha高可用实验
手动切换
masterha_master_switch --conf=/etc/mysql/app1.cnf --master_state=alive --new_master_host=172.25.13.2 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000
进入server1查看master是否手动切换手动再将master更改回server1
masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=172.25.13.1 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000
自动切换
赋予脚本执行权限
修改配置文件将脚本挂入后台让其自行检测在server1上添加vip
关闭server1,脚本执行退出
此时master会变成server2并且vip也会转到server2