Techyou labs
真正的爱应该超越生命的长度,心灵的宽度,灵魂的深度
常用标签
您正在查看:标签 Mysql 下的文章
August 15, 2022

本次文章完全使用 mysql 自带的 show 命令实现获取,从 connects、buffercache、lock、SQL、statement、Database throughputs、serverconfig7 大方面全面获取监控数据。

1 连接数(Connects)

  • 最大使用连接数: show status like 'Max_used_connections'
  • 当前打开的连接数: show status like 'Threads_connected'

2 缓存(bufferCache)

  • 未从缓冲池读取的次数: show status like 'Innodb_buffer_pool_reads'
  • 从缓冲池读取的次数: show status like 'Innodb_buffer_pool_read_requests'
  • 缓冲池的总页数: show status like 'Innodb_buffer_pool_pages_total'
  • 缓冲池空闲的页数: show status like 'Innodb_buffer_pool_pages_free'
  • 缓存命中率计算: (1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)\*100%
  • 缓存池使用率为: ((Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total)\*100%

3 锁(lock)

  • 锁等待个数: show status like 'Innodb_row_lock_waits'
  • 平均每次锁等待时间: show status like 'Innodb_row_lock_time_avg'
  • 查看是否存在表锁: show open TABLES where in_use>0; 有数据代表存在锁表,空为无表锁

备注:锁等待统计得数量为累加数据,每次获取得时候可以跟之前得数据进行相减,得到当前统计得数据

背景:

XtraBackup 用于Mysql 物理备份,相比于mysqldump能实现更快速的备份恢复和增量备份,本篇文章将介绍xtrabackup在使用中的注意事项和如何全量、增量备份和恢复,记录使用中的一些注意事项。
环境:


XtraBackup版本为:2.4
系统版本:ubuntu 16.04 64bit
MySQL版本:5.7.16

xtrabackup是基于innodb灾难恢复原理的备份工具,采用直接复制你的InnoDB数据文件(复制时会导致内部不一致的数据; 但是它会对文件执行崩溃恢复,以使其再次成为一个一致的可用数据库)。[[How Percona XtraBackup Works]][1]

使用:

备份策略:


每天进行全量备份,每30min基于上一次全量备份的增量备份。这样即使还原备份,也只要prepare全量和最近一次增量的备份即可
备份文件存本地一份,同时保存到备份服务器,备份服务器保留最近3个完整备份周期(增量+全量)。
备份一个从库,还原完成直接当从库来使用。

注意:


Finally, the binary log position will be printed to STDERR and xtrabackup will exit returning 0 if all went OK.
Note that the STDERR of xtrabackup is not written in any file. You will have to redirect it to a file, e.g., xtrabackup OPTIONS 2> backupout.log.

结语:

无论是mysqldump还是xtrabackup,均无法保证数据一致性,只能保事务级别的完整性。
如果想要更好的整库完整性,请使用基于文件系统快照备份,如lvs snapshot, zfs snapshot等

在MySQL5.7中,performance schema有很大改进,包括引入大量新加入的监控项、降低占用空间和负载,以及通过新的sys schema机制显著提升易用性。下面通过本文给大家介绍 MySQL5.7中 performance和sys schema中的监控参数解释,需要的朋友可以参考下

August 16, 2016

大部分时候,两个大表做join的时候,where条件前置不但可以节省扫描行数,还能避免创建磁盘临时文件:
优化前:


SELECT g.goods_id, g.add_time, g.goods_name, g.market_price, g.is_new
    , g.is_best, g.is_hot, g.shop_price AS org_price
    , IFNULL(mp.user_price, g.shop_price * '1.00') AS shop_price
    , g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_thumb, g.goods_img
    , g.goods_brief, g.goods_type
FROM `ecshop`.`fp_goods` g
    LEFT JOIN `ecshop`.`fp_member_price` mp
    ON mp.goods_id = g.goods_id
        AND mp.user_rank = '1'
WHERE (g.is_delete = 0
    AND g.is_on_sale = 1
    AND g.is_alone_sale = 1
    AND 1)
ORDER BY goods_id DESC
LIMIT 200, 40

背景:在平时和开发的交流 以及 在论坛回答问题的或称中会发现这个问题被问及的频率非常高。 程序中报错: MySQL server has gone away 是什么意思? 如何避免? 因此,感觉有必要总结一下发生这个问题的原因。今天正好看到一篇外文blog总结的比较好,就翻译过来了

原因1. MySQL 服务宕了

判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长


$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 68928 |
+---------------+-------+
1 row in set (0.04 sec)