北京某互联网公司招MYSQL DBA

Leave a Comment2010年06月12日 作者: 大头刚 

北京某互联网公司招聘MYSQL DBA一名,从事DBA一年以上,待遇面谈,肯定不会比同行业差,我们这里有充分的学习环境,公司也是很可能马上要上市了。
本来和一朋友谈好了,结果他有更好的去处,虽然被涮了,还是祝福他吧。
希望想跳的朋友想清楚在来。
MySQL DBA
1、精通/熟悉MySQL数据库的运行机制和体系架构
2、精通/熟悉MySQL数据库的管理,对于MySQL的参数有深入理解
3、精通/熟悉MySQL复制
4、精通/熟悉SQL
5、熟悉linux操作系统的使用
6、熟悉shell&perl编程
其实要求都不是硬性的,学习能力强、责任心强、能抗压才是最重要的。有意向的朋友可以联系我。我的MSN:shengang34 at hotmail.com。

简单对比Mysql的AUTO_INCREMENT和Oracle的SEQUENCE

1 Comment2010年06月11日 作者: 大头刚 

好几年前刚学习MYSQL的一些笔记,当时把MYSQL和ORACLE进行一系列对比。前几天遇到MYSQL的AUTO_INCREMENT值增长到极限,导致表无法插入的问题,正好把以前的笔记复习下。
使用oracle的scott模式的数据作为测试数据:

oracle>conn mytest/mytest
Connected.
 
oracle>@$ORACLE_HOME/sqlplus/demo/demobld.sql
 
oracle>select table_name from user_tables;
 
TABLE_NAME
————————————————————
BONUS
DEPT
DUMMY
EMP
SALGRADE

把这些表在导入到MYSQL,具体过程就省略了。

mysql> show tables;
+——————+
| Tables_in_mytest |
+——————+
| bonus |
| dept |
| dummy |
| emp [...]

MYSQL插入处理重复键值的几种方法

Leave a Comment2010年05月12日 作者: 大头刚 

当unique列在一个UNIQUE键上插入包含重复值的记录时,默认insert的时候会报1062错误,MYSQL有三种不同的处理方法,下面我们分别介绍。
先建立2个测试表,在id列上创建unique约束。

mysql> create table test1(id int,name varchar(5),type int,primary key(id));
Query OK, 0 rows affected (0.01 sec)
 
mysql> create table test2(id int,name varchar(5),type int,primary key(id));
Query OK, 0 rows affected (0.01 sec)
 
 
mysql> select * from test1;
+—–+——+——+
| id | name | type |
+—–+——+——+
| 101 | aaa | 1 |
| 102 | bbb | [...]

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) [...]