背景:对于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
有时我们需要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数据库时总是提示: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数据库中就不会出错了。

   他这个有按执行时间,有按执行次数,有按语句执行次数占总次数的百分比排序,就是特么没有按查询的时间排序的
执行时间不是查询的时间,执行时间是语句的使用了多少秒,而查询时间是哪月哪天,的什么时间进行了这次慢查询
阅读全文
点评:Mysql的;group_concat这个函数在PHP和Mysql结合的优化上可能在某些时候能够派上用场,如下:
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
阅读全文
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
虚拟机默认启动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
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
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配置手册:

Demo:

阅读全文



show table status;
show table status where name ='表名'; 可以查看指定表的信息
show table status where name ='t_tst_draft_info';
近来发现Vps上的内存不够用,是由于Mysql启动后不断扩大内存引起的,于是查了下内存增大原因后,
为了减少内存,为了尽量使其能稳定运行Vps,Mysql内存减少是关键,这样的背景下,
关闭Mysql5.5.8的Innodb引擎,记录步骤如下:
1、stop mysql
2、编辑my.cnf文件[mysqld]下面的配置:
     1)将default-storage-engine=INNODB前的注释掉(#)去掉在[mysqld]下面加入:default-storage-engine = MyISAM
     2)将skip-innodb这行注释(不加上#); 如大版本的Mysql如:Mysql5.5,skip-innodb在Mysql5.5.18中已经改成loose-skip-innodb了!
     3)innodb=OFF
3、在数据库目录中把ibdata1、ib_logfile0、ib_logfile1 这三个文件删掉。也可不用删除,我个人觉得删除保险点儿,呵呵:

4、start mysql:

5.启动时看日志是否真关闭了InnoDB引擎:
这行是关键:111105 10:27:39 [Note] Plugin 'InnoDB' is disabled.
启动日志如下:

6.终端进入Mysql后查看配置后的情况,没有了Innodb:
mysql> show engines;
show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine         | MyISAM |
+------------------------+--------+

7.内存占用明显减少,改动前后:

果然,Innodb还是很耗费内存的,尤其是对一个小内存的Vps机器来说,而最主要是的Innodb还会在运行中消耗比启动时更大的内存,只是为了提高Innodb的性能罢了,所以,我的Vps果断关掉它,而要是自己生产服务器,还是建议打开并使用Innodb,更何况
现在的Mysql默认就是Innodb,在性能上都不是相当不错的。EOF

8.我的配置文件记录,Download Url:


为何要关闭,我是为了减少内存的消耗罢了,引用网上的文章摘录如下:
(1)  Innodb表缓存: Innnodb表有自己的缓存,它保存了从一开始访问每个表的元数据。它们从未被清除过,如果有很多Innodb表的话,那么这个量就很大了。这也就意味着拥有 CREATE TABLE 权限的用户就可能把MySQL服务器的内存耗尽。
(2) MyISAM缓冲:MyISAM表可能会分配一个足以装下指定表最大记录的缓冲,而且这个缓冲直到表关闭了才释放。
MyISAM我要用,Innodb这个我可以不用,所以关闭之,主要是Vps内存太小,这样可以省下不少空间。阅读全文
源码安装:http://www.blogjava.net/xiaomage234/archive/2012/07/18/383403.html
MONGO_URL=mongodb://localhost:27017 meteor
db.players.find().limit(100);
db.players.update({"_id":"177ffc27-608b-4807-923c-6ea57f17ce11"}, {"name" : "Ada Lovelace", "score" : 2000});



http://www.mongovue.com/downloads/  GUI
http://rockmongo.com/?action=downloads

mongoDB非正常关闭后无法启动问题
servers don't have journaling enabled by default. Please use --journal if you want durability:
解决方法:
1、删除%MONGO_HOME%/db下的.lock文件
2、输入命令 mongod --repair
3、重启mongoDB

-----------------------------------------------------------------------------------------------------------------------
post ={"title":"My Blog Post","content":"Here's my blog post","date":new Date()}
        db.blog.insert(post)
以上是插入示例。
shell中的基本操作
        1.创建
        post ={"title":"My Blog Post","content":"Here's my blog post","date":new Date()}
        db.blog.insert(post)
        
        2.读取
        db.blog.find() 会返回集合blog里面所有的文档
        db.blog.findOne() 只会查一个文档(更多详细看第四章)
        
        3.更新
           update 至少需要2个参数、
              1.更新文档的限定条件
              2.新文档
            post.comments = []
            db.blog.update("title":"My Blog Post",post)            
        
        4.删除
            db.blog.remove("title","My Blog Post")
            
        5.使用窍门
            help 获取帮助
            查看函数
              db.foo.update  
              
            如何得到 foo-bar 集合
            db.getCollection("foo-bar")
            
            属性和目标集合同名时
            db.getCollection("version")
            
            访问子集
             x.y 和 x['y']两种都可以 要学活灵活应用
            
         6.数据类型
            null {"x":null}
            boolean(true 和 false) {"x":true}
            64位浮点数 {"x",3}
            字符串 {"x":"foobar"}
            对象id {"x":ObjectId()}
            日期   {"x" : new Date()}
            正则表达式 {"x":/foobar/i}
            代码 {"x": function(){/*....*/}}
            未定义{"x":undefined}
            数组 {"x":["a","b","c"]}
            内嵌文档 {"x":{"foo":"bar"}}
            
            对象Id 在不同的机器上 每次生成都会保持不同
编译安装:http://blog.chinaunix.net/uid-26922865-id-3400712.html

直接安装:
1、安装MongoDB
     curl -o http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.0.tgz
     tar -zxvf mongodb-linux-i686-2.0.0
2、启动MongoDB
    ./bin/mongod -dbpath=../data
    ./bin/mongo
3、实际操作

这个是Ok的,通过RockMongo客户端后,用户名:admin 密码:admin登录。


需要验证,实践些问题,用下面去掉:--auth这个。

这个能启动,且可以终端登
方式一:


方式二:
05年再次实践:


如果没有问题,再次关闭后推入后台:
/usr/local/mysql/bin/mysqld_safe --user=root  &

mysqladmin -u root shutdown


停止:
[/usr/local/mysql/bin]# mysqladmin -u root shutdown


确定停止?:
[/usr/local/mysql/bin]# ps axu|grep mysql

root      4121  0.0  0.0   5800  2488 pts/35   S+   16:22   0:00 mysql
gastonwu  5365  0.0  0.0   5192  2256 pts/67   S+   Aug24   0:00 mysql -u root -p
root      5844  0.0  0.0   5800  2516 pts/28   S+   16:28   0:00 mysql -uwiki -p wiki -hlocalhost
root     11169  0.0  0.0   2768   744 pts/49   S+   16:46   0:00 grep mysql
root     15169  0.0  0.0   5844  2712 pts/8    S+   Sep23   0:00 mysql
gastonwu 18138  0.0  0.0   5188  2276 pts/91   S+   Aug25   0:00 mysql -u root -p DB_DemoSoapp
root     23843  0.0  0.0   5800  2584 pts/27   S+   15:40   0:00 mysql
root     27623  0.0  0.0   5800  2568 pts/99   S+   14:08   0:00 mysql

启动:
[/usr/local/mysql/bin]# /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root

Starting mysqld daemon with databases from /usr/local/mysql/data[1]+  Stopped                 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root


客户端登陆:
[/usr/local/mysql/bin]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


如果已经连上后,重启后会出现:

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***


当然,用pkill  杀mysql的进程也是也可以的,呵呵!
Left和date_format函数:
[code]
$sql="select count(*) from Tbl_XXshow_XX where  FXX='$XX' and FCode=2 and left(FTime,7)=left(now(),7)";
select count(*) as c from Tbl_Exchange_XX where FLType=218 and date_format(now(),'%Y-%m-%d')=date_format(FTime,'%Y-%m-%d')
[/code]
在mysql中涉及到编码是最让人头疼的。
编写update.txt (注意:utf8的编码要存为utf8的txt格式,当然你也可以命名后缀改为:update.sql etc)
source的sql包含中文(位置在/root/update.txt):
update Tbl_User set FAddr="四川内江东兴区平安路148号E栋8号" where FQQ="348813422";


mysql> use DB_****_2nd;
Database changed
mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0


然后,发现php程序读出来发现是乱码。
查看mysql编码:
mysql> show variables like '%char%';

mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------------------------+
| Variable_name            | Value                                                                |
+--------------------------+----------------------------------------------------------------------+
| character_set_client     | utf8                                                                 |
| character_set_connection | utf8                                                                 |
| character_set_database   | utf8                                                                 |
| character_set_filesystem | binary                                                               |
| character_set_results    | utf8                                                                 |
| character_set_server     | latin1                                                               |
| character_set_system     | utf8                                                                 |
| character_sets_dir       | /usr/local/mysql-max-5.0.27-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+----------------------------------------------------------------------+
8 rows in set (0.00 sec)


原来是:
| character_set_server     | latin1                                                               |
不是utf-8:
于是:需要,set names 'utf8';


mysql> set names "utf8";
Query OK, 0 rows affected (0.00 sec)

mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql>


在php中显示中文正常,哈哈哈!
分页: 4/4 第一页 上页 1 2 3 4 最后页 [ 显示模式: 摘要 | 列表 ]