这是在主从复制高可用的基础上做的,基于上篇博客
####分别打开server1,2,3的mysql
/etc/init.d/mysqld start
mysql -p
show slave status\G; ###分别做下列操作,主要是看谁是主,谁是从
####在调度器里面进行下列操作
cd /etc/masterha
ls
cat app1.cnf ##查看自己以前的设置,将脚本的注释打开,才能读这两个脚本
cd
cd MHA
ls
cp master_ip_* /usr/local/bin
cd /usr/local/bin
ls ###有两个复制过来的文件
ll ##这是两个脚本文件,需要加执行权限
chmod +x *
vim master_ip_online_change
#!/usr/bin/env perl
use strict;
use warnings FATAL =>'all';
use Getopt::Long;
my $vip = '172.25.254.100/24'; #虚拟vip
my $key = "1";
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
my $exit_code = 0;
ll /sbin/ip ##显示路径对不对
###在主master里面做
ip addr add 172.25.17.100/24 dev eth0
####在真物理机里面做
mysql -h 172.25.17.100 -u repl -p ###登陆虚拟ip,观看能不能登上去
show databases;
####在调度器里面做_
masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=172.25.17.2 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=100000 ###master进行转换
####在原来主master里面
ip addr ##观看虚拟ip有没有漂
mysql -p
show slave status\G; ##挂看master有没有转换到自己设定的ip里面
####在新设置的主master里面
ip addr ##观看虚拟ip有没有漂过来
mysql -p
show slave status\G; ###应该不显示,因为他就是master
2、慢查询日志
慢查询日志是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。
通过使用--slow_query_log[={0|1}]选项来启用慢查询日志。所有执行时间超过long_query_time秒的SQL语句都会被记录到慢查询日值,可以使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志。
3、慢查询日志演示
long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s
slow_query_log : 指定是否开启慢查询日志
log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)
slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
min_examined_row_limit:查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
log_queries_not_using_indexes: 不使用索引的慢查询日志是否记录到索引
在主master里面做
mysql -p
show variables like '%low%'; ###slow_query_log off
set global slow_query_log=1; ###打开慢查询
show variables like '%low%'; ###slow_query_log on 日至文件为 /var/lib/mysql/server2-slow
cd /var/lib/mysql
ls ###有server2-slow.log 这个文件
mysql -p
show variables like '%long%'; ###可以看见他的延长时间为10s,可以对他进行设置时间
set global long_query_time=1; ##设置全局的
set long_query_time=1; ##设置临时的
show variables like '%long%'; ####时间改为1秒
select sleep(2);
select sleep(3);
select sleep(4);
cat server3-slow.log ##查看日志
4、格式化慢查询日志
结构化慢查询日志就是把慢查询日志中的重要信息按照便于阅读以及按照特定的排序方式来提取SQL。
这种方式有点类似于Oracle中有个tkprof来格式化oracle的trace文件。
对于前面的慢查询日志我们使用mysqldumpslow来提取如下:
mysqldumpslow -s t -t 5 server3-slow.log #-t 显示top前几的 t##设定的时间