ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql慢查询、主从复制

2022-01-16 18:30:44  阅读:130  来源: 互联网

标签:主从复制 slave log Mysql 查询 索引 MASTER mysql 日志


Mysql排序

1.使用索引:排好序快速查找的数据结构

2.filesort:自带的排序,比索引性能差,当

索引失效

如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列

%like前模糊也会导致索引失效,但like%后模糊可以使用索引

不等于(!= 或者<>)索引失效

is not null无法使用索引,is null可使用索引

类型转换导致索引失效(字段是字符串)

Join

1) left join 时,选择小表作为驱动表,大表作为被驱动表

2) inner join 时,mysql会自动将小结果集的表选为驱动表。选择相信mysql优化策略。

3) 能够直接多表关联的尽量直接关联,不用子查询

用explain出现时,表示没走索引

慢查询

默认关闭,需要手动打开

查看慢查询   可以看到开没开起与日志目录
SHOW VARIABLES LIKE '%slow_query_log%'; 
2.  开启:set global slow_query_log=1; 只对窗口生效,重启服务失效  默认10s
SET GLOBAL long_query_time=0.1;  设置慢查询时间
 对当前会话连接立即生效,对其他客户端无效。
SET SESSION long_query_time=0.1; #session可省略

查询当前系统中有多少条慢查询记录或者直接看慢查询日志

/var/lib/mysql/localhost-slow.log

SHOW GLOBAL STATUS LIKE '%Slow_queries%'; 查看慢日志

mysqldumpslow -s r -t 10 /var/lib/mysql/localhost-slow.log 查询慢的sq

 视图

将sql封装为一个虚拟的表,这个虚拟的表只保存sql逻辑,不保存查询结果

创建语句
CREATE VIEW view_name 
AS SELECT * FROM ..
查询
select * from view_name 
更新
CREATE OR REPLACE VIEW view_name 
AS SELECT .. FROM ..
删除
drop view view_name;

mysql 视图会随着表中的数据变化而动态变化

主从复制

Ø slave会从master读取binlog来进行数据同步

Ø MySQL复制三步骤:

1 master将写操作记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;

2 slave将master的binary log events拷贝到它的中继日志(relay log);

3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的,而且重启后从接入点开始复制。

复制的最大问题(延时

复制的基本原则

Ø 每个slave只有一个master

Ø 每个slave只能有一个唯一的服务器ID

Ø 每个master可以有多个salve

使用

在虚拟机中创建2台虚拟机,

在主机打开配置文件,加入

#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
#设置需要复制的数据库
binlog-do-db=mytestdb
#设置logbin格式  默认的
binlog_format=STATEMENT

logbin格式:

  • binlog_format=STATEMENT(默认):数据操作的时间,同步时不一致,可以用java代码同步时间

  • binlog_format=ROW:批量数据操作时,效率低

在从机配置文件

#[必须]从服务器唯一ID:
server-id=2
#[可选]启用中继日志:
relay-log=mysql-relay

重启,从机开启io读取

CHANGE MASTER TO MASTER_HOST='主机ip地址',

MASTER_USER='X',MASTER_PASSWORD='X',

MASTER_LOG_FILE='mysqlbin.具体数字',MASTER_LOG_POS=具体值;

 例如

CHANGE MASTER TO MASTER_HOST='192.168.200.131',
MASTER_USER='slave',MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1022; 

Ø 启动从服务器复制功能

start slave;

查看开启状态 show slave status\G;

Ø 下面两个参数都是Yes,则说明主从配置成功!

· Slave_IO_Running: Yes

· Slave_SQL_Running: Yes

如果出现:Slave_IO_Running:No

则可能的解决办法是:

1)停止stop slave; 再启动start slave;看是否能正常运行

2)两个服务器的防火墙是否关闭,是否互相能ping通

3)配置文件是否正确、是否重启了服务器

4)连接主机的语句是否正确

5) 可能是uuid 一致(master,slave uuid) vim /var/lib/mysql/auto.cnf 下更改uuid,重启服务

如果停止从服务复制功能,重新配置主从

在从机上执行。功能说明:停止I/O 线程和SQL线程的操作。
mysql> stop slave; 
 
在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
mysql> reset slave;
 
在主机上执行。功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。
用于第一次进行搭建主从库时,进行主库binlog初始化工作;
mysql> reset master;

标签:主从复制,slave,log,Mysql,查询,索引,MASTER,mysql,日志
来源: https://blog.csdn.net/weixin_52210557/article/details/122526525

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有