Mysql管理必备工具Maatkit详解之十五(mk-slave-restart)
Leave a Comment2010年03月09日 作者: 大头刚
mk-slave-restart - 对slave进行监控,以及在slave报错后,重启slave。安装方法查看这里。
其实可以理解成在slave执行了如下命令:
stop slave;
set global sql_slave_skip_counter=1;
start slave;
下面举例说明:
先模拟一个slave报错,在主库建表,然后在从库删除,再去主库删除。报错如下:
Last_SQL_Errno: 1051
Last_SQL_Error: Error ‘Unknown table ‘test_sg” on query. Default database: ‘test’. Query: ‘drop table test_sg’
在利用mk-slave-restart去重启这个slave;
[root@mysql2 ~]# mk-slave-restart -u xxx -p xxx -h xxx –run-time 3 –skip-count 1
2010-03-09T14:01:57 h=xxx,p=…,u=xxx slave-relay-bin.000215 74173942 1051
解释下参数:
run-time:指监控slave的时间,单位是秒;
skip-count:指跳过log的数量;
解释下输出:
1、time
2、slave IP
3、user
4、passwd
5、MASTER_LOG_FILE
6、MASTER_LOG_POS
7、Last_SQL_Errno
很显然mk-slave-restart是一个很不错的slave监控工具,当salve出错后能及时报警,并直接重启slave。同时输出了报错的相关信息,方便后面查询在哪出错,是什么错。下面给出它的帮助:
[root@mysql2 ~]# mk-slave-restart –help
mk-slave-restart watches one or more MySQL replication slaves for errors, and
tries to [...]
Mysql实现split函数
1 Comment2010年01月14日 作者: 大头刚
一个朋友遇到点问题,想在mysql里把一段用固定符号分隔的字符串,按分隔符分别列出来。就是一个典型的split应用,但是mysql却没有自带这个函数,在网上搜了一把。可以通过自建函数来解决,以下的函数来自互联网。
DELIMITER $$
CREATE FUNCTION `func_get_split_string_total`(
f_string varchar(1000),f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
return 1+(length(f_string) - length(replace(f_string,f_delimiter,”)));
END$$
DELIMITER ;
DELIMITER $$
CREATE FUNCTION `func_get_split_string`(
f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8
BEGIN
declare result varchar(255) default ”;
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
return result;
END$$
DELIMITER ;
需要设置下参数:
SET GLOBAL log_bin_trust_function_creators = 1;
下面我们来测试下:
CREATE TABLE "t" (
-> "t1" varchar(100) [...]
Mysql的IP处理函数inet_aton()和inet_ntoa()
1 Comment2009年12月18日 作者: 大头刚
有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。具体可以查看官方手册。
INET_ATON(expr)
给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。
mysql> SELECT INET_ATON(’209.207.224.40′);
+—————————–+
| INET_ATON(’209.207.224.40′) |
+—————————–+
| 3520061480 |
+—————————–+
1 row in set (0.01 sec)
产生的数字总是按照网络字节顺序。如上面,数字按照 209×2563 + 207×2562 + 224×2561 + 40 ×2560 进行计算。我们来验算下:
mysql> select 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0);
+————————————————————+
| 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0) |
+————————————————————+
| 3520061480 |
+————————————————————+
1 row in set (0.05 sec)
INET_ATON() 也能理解短格式 IP 地址:
mysql> SELECT INET_ATON(’127.0.0.1′), INET_ATON(’127.1′);
+————————+——————–+
| INET_ATON(’127.0.0.1′) | INET_ATON(’127.1′) |
+————————+——————–+
| 2130706433 | 2130706433 |
+————————+——————–+
1 row in set (0.00 sec)
可以理解成为中间2为地址默认为0。
注:在存储由INET_ATON() 产生的值时,推荐你使用 [...]
Mysql管理必备工具Maatkit详解之十三(mk-slave-find)
Leave a Comment2009年12月07日 作者: 大头刚
mk-slave-find - 顾名思义,根据master查找slave。安装方法查看这里。
在mysql5.1里查看一个master有哪些slave可以通过PROCESSLIST系统表查出:
mysql> select HOST from information_schema.PROCESSLIST where STATE like ‘%slave%’;
+——————+
| HOST |
+——————+
| 192.168.1.2:44846 |
| 192.168.1.3:33022 |
| 192.168.1.4:50836 |
| 192.168.1.5:32769 |
| 192.168.1.6:33113 |
| 192.168.1.7:33005 |
| 192.168.1.8:32786 |
| 192.168.1.9:32862 |
+——————+
11 rows in set (0.00 sec)
在5.1之前想查出有哪些slave比较麻烦,比较直接的就是直接通过show processlist把所有进程列出,在去刷选查出:
show processlist;
+———–+———-+——————+———–+————-+———-+—————————————————————-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+———–+———-+——————+———–+————-+———-+—————————————————————-+——————+
| 1211 | slave2 [...]
用Mysql存储过程查询你的三险一金及收入
Leave a Comment2009年10月09日 作者: 大头刚
三险即:养老保险、失业保险、医疗保险。
一金即:住房公积金(购房按揭时所用)。
每个地区的缴费比例可能不太一样,有些公司可能是五险一金。下面以北京三险一金为例,用mysql存储过程来查询你的三险一金以及你的收入,呵呵,也许你会发现你到手的收入只有你实际工资的一半哦。(参考了网上的PL/SQL过程)。
例如你的工资为5000元,那么你的实际收入情况如下:
mysql> call calc_salary(5000);
+———————————————–+
| income_info |
+———————————————–+
| pension_insurance_1(20.00%) : 1000.00 |
| pension_insurance_2(8.00%) [...]



