本文目录一览:
如何动态监控mysql binlog
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
如何有效的监控单点,集群的mysql
Mysql作为使用非常广泛的数据库,确实给我们带来了很多帮助,就像任何软件系统一样,一旦正式投入生产环境,那监控手段就不可或缺。如何有效的监控Mysql的运行情况,尤其是在复杂IT环境下就更显得迫切了,如Mysql集群部署; 1、单点Mysql的监控 到底一个Mysql服务我们应该监控哪些指标呢?每个人可能都有不同的见解,但下面这些指标是基本的: 当前已打开连接数:表示当前打开的数据库连接; 启动以来同时处理的最大连接数:表示自从数据库启动来同时处理的最大连接请求,这个值对于提供数据库的处理能力比较重要,下面是两个优化的量化经验: 假设数值tmpPercent =启动以来同时处理的最大连接数/ 设置的最大连接数 l 如果tmpPercent = 0.1,则mySQL服务器最大连接数设置的过高了 l 如果tmpPercent 90,则mySQL服务器最大连接数设置的过低了 锁等待率:如果该值 0.02,则mySQL服务器需要等待的表锁数有点多了, 如果当前数据库表类型是MyISAM请最好换成InnoDB类型; 表扫描率:如果该值 4000,则mySQL进行了太多表扫描, 很有可能是索引没建好, 增加read_buffer_size值会有一些好处, 但最好不要超过8MB; 北京运维技术出品的EOMP作为一个IT监控平台,提供了很多实用功能来帮助用户有效的运维各种IT资源,下面我们就如何通过EOMP对mysqlt进行有效监控做一个详细介绍: EOMP里mysql的详细监控界面如下: 上图中做标记的4个地方,都是EOMP反映给用户的重要监控信息。同时EOMP还可以监控Mysql中的数据库表信息,如下图: 通过对这些关键指标进行阀值、故障通知等设置,就可以在严重问题出现前有效的进行处理。EOMP阀值的设置很简单,在图中任何一个做标记*的监控指标处或是文本框没有灰掉的地方,点击鼠标右键弹出菜单,进行相关设置,如我们想对‘正在使用的连接数’这个指标进行如下设置:在上午8:00-下午7:00间,任意5分钟内,该指标至少有3次超过100,就发出问题级别的告警,并通过Email、手机短信等方式通知相关人员;下面是具体阀值和故障通知设置截图: 并且如果‘正在使用的连接数’确实发生了故障,我们可以通过刚才弹出菜单中的‘历史数据查询’功能,对这个监控指标的所有历史数据进行故障分析,下图是一次查询结果: 2、集群Mysql的监控 对于复杂的集群Mysql,就应该把它们通过某种方式放到一起来共同运维和监控,EOMP提供的‘视图’功能,就能很好完成这个任务,下图是EOMP一个简单Mysql集群的‘监控视图’: 上图中,我们把集群的两个Mysql服务放到一张视图里,同时把它们的一些关键监控指标也放到这张视图里,如响应时间、正在工作线程数等,通过这样一张视图,用户可以把所有反映这个Mysql集群健康情况的监控信息都放到一起,这在很大程度上方便用户的监控。 EOMP是以‘视图’为其设计核心,所以它的视图配置非常灵活,既可以是整个一个Mysql服务,也可以是某个Mysql服务的一个监控指标。越是复杂的监控要求,越是能体现出这种内在设计的灵活性。 ‘视图’不仅仅是个展现的窗口,它是个监控实体,如下图EOMP的首页所示,任何故障信息都是以‘视图’为载体的,这样用户在任何时候都可以看到自己能理解的监控信息,而不是什么什么设备或服务等。
用Mycat需要注意什么
实习的时候,在一个项目当中,项目经理要求把原先的MySQL数据连接基于mycat来进行改造 。当时就在想MyCat是什么东西?为什么要用它呢?
*一、什么是MyCat: MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度
二、那么为什么要用到MyCat呢?
*例如操作系统是对各类计算机硬件的抽象。那么我们什么时候需要抽象?假如只有一种硬件的时候,我们需要开发一个操作系统吗? 再比如一个项目只需要一个人完成的时候不需要leader,但是当需要几十人完成时,就应该有一个管理者,发挥沟通协调等作用,而这个管理者对于他的上层来说就是对项目组的抽象。 同样的,当我们的应用只需要一台数据库服务器的时候我们并不需要Mycat,而如果你需要分库甚至分表,这时候应用要面对很多个数据库的时候,这个时候就需要对数据库层做一个抽象,来管理这些数据库,而最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,这就是Mycat的核心作用。 所以可以这样理解:数据库是对底层存储文件的抽象,而Mycat是对数据库的抽象。*
注意事项:
(1)、原始表的自增主键{AUTO_INCREMENT=1446}值,就是之前用掉的值,要去掉。新库按照新的来
(2)、{CREATE TABLE IF NOT EXISTS `edu_impoverish` } 改成 {CREATE TABLE `edu_impoverish` (}。mycat没有判断是否存在的功能
(3)、DROP TABLE IF EXISTS `onlinenum`; 这种格式是支持的。
(4)、全局表,字典表:可能会在其他表中存有其id字段的值。所以这些表id也要导过来。
(5)、业务表的id最好也导入过来,避免重新生成导致关联对不上的情况。
(6)、全局表、跨库分表都要用全局序列。单库单业务,不和其他关联的表;可以用数据库自带的自增主键。