背景:在一些做唯一值时,有些视频网站用UUID来做视频的唯一值,所以这个是怎么保持不重复的哩?
阅读全文
阅读全文
解决办法:http://see.sl088.com/wiki/Explicit_defaults_for_timestamp
解决
进入/etc/my.cnf,增加一项设置
# seem 5.6 need this
explicit_defaults_for_timestamp = 1
阅读全文
解决
进入/etc/my.cnf,增加一项设置
# seem 5.6 need this
explicit_defaults_for_timestamp = 1
阅读全文
背景:对于Mysql下的单向同步Master/slave目前好多都在用,而对于双机热备确实是一个在为了解决多区域下的访问提速上有所应用。
阅读全文
阅读全文
1.登录mysql,进入mysql命令提示符:mysql>
2.查看是否mysql支持InnoDB
执行命令:show engines;
如果没有InnoDB字样,就说明不支持。
3.查看mysql,plugin目录
执行命令:show variables like 'plugin_dir';
查看执行后结果的目录里是否有:ha_innodb.so,没有的话最好重新编译mysql
4.增加InnoDB
执行命令:INSTALL PLUGIN InnoDB SONAME 'ha_innodb.so';
执行完成后,用上面几个命令查看是否安装完成。
不用重启mysql服务,即可使用
来自赵卫的Qzone空间:
http://user.qzone.qq.com/57718700?ptlang=2052#!app=2&via=QZ.HashRefresh&pos=1309765858
2.查看是否mysql支持InnoDB
执行命令:show engines;
如果没有InnoDB字样,就说明不支持。
3.查看mysql,plugin目录
执行命令:show variables like 'plugin_dir';
查看执行后结果的目录里是否有:ha_innodb.so,没有的话最好重新编译mysql
4.增加InnoDB
执行命令:INSTALL PLUGIN InnoDB SONAME 'ha_innodb.so';
执行完成后,用上面几个命令查看是否安装完成。
不用重启mysql服务,即可使用
来自赵卫的Qzone空间:
http://user.qzone.qq.com/57718700?ptlang=2052#!app=2&via=QZ.HashRefresh&pos=1309765858
有时我们需要MySQL中的定时执行一些命令,平时大都用的Crontab下运行脚本如php,python,perl等来做的,这儿可以实现通过存储过程来实现,如下:
mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------------------+---------+
| event_scheduler | OFF |
| performance_schema | OFF |
+---------------------------------------------------+---------+
将事件计划开启
mysql> set global event_scheduler =1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------------------+---------+
| event_scheduler | ON |
创建存储过程test
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;
创建event e_test
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
关闭事件任务
alter event e_test ON
COMPLETION PRESERVE DISABLE;
开户事件任务
alter event e_test ON
COMPLETION PRESERVE ENABLE;
以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(GPL)
来自:http://blogread.cn/it/article/811?f=wb
mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------------------+---------+
| event_scheduler | OFF |
| performance_schema | OFF |
+---------------------------------------------------+---------+
将事件计划开启
mysql> set global event_scheduler =1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------------------+---------+
| event_scheduler | ON |
创建存储过程test
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;
创建event e_test
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
关闭事件任务
alter event e_test ON
COMPLETION PRESERVE DISABLE;
开户事件任务
alter event e_test ON
COMPLETION PRESERVE ENABLE;
以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(GPL)
来自:http://blogread.cn/it/article/811?f=wb
今天在导入Mysql数据库时总是提示:Unknown command ‘\n’,也不知道问题出在哪里,经过无数次研究后问题才得以解决,下面给出具体思路及解决方法。 之前我的Mysql数据库版本是Server version: 5.1.51-log,我现在导入新的数据库是Server version: 5.5.24-log,我发现在Mysql5版本的数据库之间导入数据没有问题,不出现错误提示,但是导入到Mysql5时就出错了。
解决方法如下:
我们在导出Mysql4数据库时指定编码即可,相关命令如下所示:
mysqldump -u root -p dbname --default-character-set=gbk >D:\htmer.sql
说明:上面的gbk编码根据实际中你的数据库编码而定。
通过上面的导出设置,你再导入到新的Mysql数据库中就不会出错了。
解决方法如下:
我们在导出Mysql4数据库时指定编码即可,相关命令如下所示:
mysqldump -u root -p dbname --default-character-set=gbk >D:\htmer.sql
说明:上面的gbk编码根据实际中你的数据库编码而定。
通过上面的导出设置,你再导入到新的Mysql数据库中就不会出错了。
他这个有按执行时间,有按执行次数,有按语句执行次数占总次数的百分比排序,就是特么没有按查询的时间排序的
执行时间不是查询的时间,执行时间是语句的使用了多少秒,而查询时间是哪月哪天,的什么时间进行了这次慢查询
阅读全文
点评:Mysql的;group_concat这个函数在PHP和Mysql结合的优化上可能在某些时候能够派上用场,如下:
Group_Concat 是 MySQL 中用户Group By 的一个函数,函数语法如下:
这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成。
充分利用此函数,可以简化我们程序中的一些写法。
比如我们现在有一个学生成绩表,为了方便不同班级科目的设置,对学生的成绩没有采用一条记录多个字段的方式,而是采用多条记录一个成绩字段方式存储。
现在要求获得一个班级中学生各科成绩列表。
通过Group_Concat 函数,我们只要简单执行如下的SQL语句,
然后在程序中通过一个循环,将选出的结果输出来就可以了。如果不使用,我们通常需要将选出来的数据做再次整理,(多增加一些变量做一些循环判断,没有采用Group_Concat后的逻辑简单)
来自:http://www.sunnyu.com/?p=160
Group_Concat 是 MySQL 中用户Group By 的一个函数,函数语法如下:
这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成。
充分利用此函数,可以简化我们程序中的一些写法。
比如我们现在有一个学生成绩表,为了方便不同班级科目的设置,对学生的成绩没有采用一条记录多个字段的方式,而是采用多条记录一个成绩字段方式存储。
现在要求获得一个班级中学生各科成绩列表。
通过Group_Concat 函数,我们只要简单执行如下的SQL语句,
然后在程序中通过一个循环,将选出的结果输出来就可以了。如果不使用,我们通常需要将选出来的数据做再次整理,(多增加一些变量做一些循环判断,没有采用Group_Concat后的逻辑简单)
来自:http://www.sunnyu.com/?p=160
Demo:
查看:
tail -f /tmp/jack.txt
一:tee
方法一、配置文件
在服务器上的/etc/my.cnf中的[client]加入
tee =/tmp/client_mysql.log即可.
方法二、命令行
1.mysql -uroot --tee=/tmp/client_mysql.log
2.这个类似于sqlplus的spool功能,可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。
mysql> tee client_mysql.log
Logging to file 'client_mysql.log '
或者
mysql> \T client_mysql.log
Logging to file 'client_mysql.log '
mysql> notee
Outfile disabled.
或者
mysql> \t
Outfile disabled.
二:mysql pager、tee、prompt说明:
当表中数据行很多,一页看不完时,可以使用pager [cmd]更改mysql的查询输出,cmd为linux的标准命令,如:
mysql> pager less;
mysql> select * from test.dept;
查询输出都是通过管道传给less命令,可以实现分页浏览
mysql> nopager;即可回到标准输出stdout
还可使用如下语句将输出发送到文件中:
mysql> pager cat>/home/pw/osq.txt;
less说明:
退出:“:q”
下一页:“F”
上一页:“B”
查询
向前搜索
/ - 使用一个模式进行搜索,并定位到下一个匹配的文本
n - 向前查找下一个匹配的文本
N - 向后查找前一个匹配的文本
向后搜索
? - 使用模式进行搜索,并定位到前一个匹配的文本
n - 向后查找下一个匹配的文本
N - 向前查找前一个匹配的文本
tee说明
mysql>tee filename
可以将之后在mysql的所有输入输出操作记录到filename中。
prompt说明
用于修改mysql提示符
[mysql]
prompt=(
来自:http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html
阅读全文
查看:
tail -f /tmp/jack.txt
一:tee
方法一、配置文件
在服务器上的/etc/my.cnf中的[client]加入
tee =/tmp/client_mysql.log即可.
方法二、命令行
1.mysql -uroot --tee=/tmp/client_mysql.log
2.这个类似于sqlplus的spool功能,可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。
mysql> tee client_mysql.log
Logging to file 'client_mysql.log '
或者
mysql> \T client_mysql.log
Logging to file 'client_mysql.log '
mysql> notee
Outfile disabled.
或者
mysql> \t
Outfile disabled.
二:mysql pager、tee、prompt说明:
当表中数据行很多,一页看不完时,可以使用pager [cmd]更改mysql的查询输出,cmd为linux的标准命令,如:
mysql> pager less;
mysql> select * from test.dept;
查询输出都是通过管道传给less命令,可以实现分页浏览
mysql> nopager;即可回到标准输出stdout
还可使用如下语句将输出发送到文件中:
mysql> pager cat>/home/pw/osq.txt;
less说明:
退出:“:q”
下一页:“F”
上一页:“B”
查询
向前搜索
/ - 使用一个模式进行搜索,并定位到下一个匹配的文本
n - 向前查找下一个匹配的文本
N - 向后查找前一个匹配的文本
向后搜索
? - 使用模式进行搜索,并定位到前一个匹配的文本
n - 向后查找下一个匹配的文本
N - 向前查找前一个匹配的文本
tee说明
mysql>tee filename
可以将之后在mysql的所有输入输出操作记录到filename中。
prompt说明
用于修改mysql提示符
[mysql]
prompt=(
来自:http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html
阅读全文
1:在终端下:mysql -V。 以下是代码片段:
[shengting@login ~]$ mysql -V
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
2:在mysql中:mysql> status;
以下是代码片段:
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
Connection id: 416
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 3.23.56-log
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /tmp/mysql_3311.sock
Uptime: 62 days 21 hours 21 min 57 sec
Threads: 1 Questions: 584402560 Slow queries: 424 Opens: 59664208 Flush tables: 1 Open tables: 64 Queries per second avg: 107.551
3:在help里面查找
以下是代码片段:
[shengting@login ~]$ mysql --help | grep Distrib
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
4:使用mysql的函数
以下是代码片段:
mysql> select version();
+-------------+
| version() |
+-------------+
| 3.23.56-log |
+-------------+
1 row in set (0.00 sec)
来自:http://www.cnblogs.com/end/archive/2011/10/18/2216461.html
[shengting@login ~]$ mysql -V
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
2:在mysql中:mysql> status;
以下是代码片段:
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
Connection id: 416
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 3.23.56-log
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /tmp/mysql_3311.sock
Uptime: 62 days 21 hours 21 min 57 sec
Threads: 1 Questions: 584402560 Slow queries: 424 Opens: 59664208 Flush tables: 1 Open tables: 64 Queries per second avg: 107.551
3:在help里面查找
以下是代码片段:
[shengting@login ~]$ mysql --help | grep Distrib
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
4:使用mysql的函数
以下是代码片段:
mysql> select version();
+-------------+
| version() |
+-------------+
| 3.23.56-log |
+-------------+
1 row in set (0.00 sec)
来自:http://www.cnblogs.com/end/archive/2011/10/18/2216461.html
虚拟机默认启动Mysql,发现没有启动得了,于是,看了下Mysql的启动日志,如下:
解决办法:
这主要是没有权限读取,给个权限就OK了
1: 初始化数据库做了没有?
/usr/local/mysql/bin/mysqld_install_db --user=mysql
2:权限问题
chown -R root.mysql /usr/local/mysql/
chown -R mysql /usr/local.mysql/var/
调整lib库路径:
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
重新加载配置
ldconfig
启动mysql
/usr/local/mysql/bin/mysql_safe --user=mysql &
查看是否启动了
netstat -ntpl | grep 3306
解决办法:
这主要是没有权限读取,给个权限就OK了
1: 初始化数据库做了没有?
/usr/local/mysql/bin/mysqld_install_db --user=mysql
2:权限问题
chown -R root.mysql /usr/local/mysql/
chown -R mysql /usr/local.mysql/var/
调整lib库路径:
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
重新加载配置
ldconfig
启动mysql
/usr/local/mysql/bin/mysql_safe --user=mysql &
查看是否启动了
netstat -ntpl | grep 3306
MySQL 命令自动补齐功能
实践得知,这个只是在本服务器上,且在是自己的client连接自己的db时有这个补全,但是呢,这有个问题是补全并不很智能。
方法一、
vi /etc/my.cnf
[mysql]
#no-auto-rehash
auto-rehash #添加auto-rehash
默认是:
[mysql] [mysql]
no-auto-rehash auto-rehash
在重启一下mysql服务,补全命令按 TAB 建,效果如下
mysql> select co
code comment commentCount consumeAmount content country connect
方法二、
在mysql启动时加参数auto-rehash
mysqld_safe --user=mysql --auto-rehash &
http://blog.chinaunix.net/uid-11327712-id-165736.html
实践得知,这个只是在本服务器上,且在是自己的client连接自己的db时有这个补全,但是呢,这有个问题是补全并不很智能。
方法一、
vi /etc/my.cnf
[mysql]
#no-auto-rehash
auto-rehash #添加auto-rehash
默认是:
[mysql] [mysql]
no-auto-rehash auto-rehash
在重启一下mysql服务,补全命令按 TAB 建,效果如下
mysql> select co
code comment commentCount consumeAmount content country connect
方法二、
在mysql启动时加参数auto-rehash
mysqld_safe --user=mysql --auto-rehash &
http://blog.chinaunix.net/uid-11327712-id-165736.html
Mysql5.5新特性—半同步复制,mysql5.5.9半同步复制功能部署
如果主备网络故障或者备库挂了,主库在事务提交后等待10秒(rpl_semi_sync_master_timeout的默认值)后,就会继续。这时,主库就会变回原来的异步状态。MySQL在加载并开启Semi-sync插件后,每一个事务需等待备库接收日志后才返回给客户端。如果做的是小事务,两台主机的延迟又较小,则Semi-sync可以实现在性能很小损失的情况下的零数据丢失。
在MySQL5.5版本之前,MySQL Slave实例在异常终止服务之后,可能导致复制中断,并且relay binlog可能损坏,在MySQL再次启动之后并不能正常恢复复制。在MySQL5.5中这一问题得到了解决,MySQL可以自行丢弃顺坏的而未处理的数据,重新从master上获取源数据,进而恢复复制。
参考网络文章:http://space.itpub.net/133735/viewspace-687487
mysql5.5.6配置手册:
如果主备网络故障或者备库挂了,主库在事务提交后等待10秒(rpl_semi_sync_master_timeout的默认值)后,就会继续。这时,主库就会变回原来的异步状态。MySQL在加载并开启Semi-sync插件后,每一个事务需等待备库接收日志后才返回给客户端。如果做的是小事务,两台主机的延迟又较小,则Semi-sync可以实现在性能很小损失的情况下的零数据丢失。
在MySQL5.5版本之前,MySQL Slave实例在异常终止服务之后,可能导致复制中断,并且relay binlog可能损坏,在MySQL再次启动之后并不能正常恢复复制。在MySQL5.5中这一问题得到了解决,MySQL可以自行丢弃顺坏的而未处理的数据,重新从master上获取源数据,进而恢复复制。
参考网络文章:http://space.itpub.net/133735/viewspace-687487
mysql5.5.6配置手册:
下载文件