Linux 平台安装 MongoDB

说明

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

步骤

1. 下载

https://www.mongodb.com/download-center/community
Version 选择最新的稳定版, OS 选择 Linux 64-bit legacy x64,会看到下载地址。

cd /usr/local/src
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.11.tgz

2. 解压

tar zvxf mongodb-linux-x86_64-4.0.11.tgz
mv mongodb-linux-x86_64-4.0.11 /usr/local/mongodb

3. 文件说明

Name Comments
bsondump 导出 bson 结构
install_compass compass 是一个 GUI 的管理工具
mongo 客户端(相当于 mysql.exe)
mongod 服务端(相当于 mysqld.exe)
mongodump 整体数据库导出(相当于 mysqldump)
mongofiles 操作 GridFS 文件
mongoreplay 重放流量到其他实例
mongos 路由器(分片时用)
mongotop 耗时数据统计
mongoexport 导出易识别的 json 或 csv,方便用代码处理
mongoimport 导入 json, csv 等格式
mongorestore 数据库整体导入,与 mongodump 相结合
mongostat instance 的状态统计,类似 vmstat

4. 启动

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH= /usr/local/mongodb/bin:$PATH

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。

mkdir -p /data/db

最简单的启动,前台运行

cd /usr/local/mongodb/bin
./mongo

后台运行

cd /usr/local/mongodb/bin
./mongod --dbpath /data/db --logpath /var/log/mongodb.log --logappend --fork --port 27017
Param Comments
--dbpath 数据存储目录
--logpath 日志存储目录
--port 运行端口(默认27017)
--fork 后台进程运行

5. 注意点

mongodb非常的占磁盘空间, 如果你用虚拟机练习,可能空间不够,导致无法启动.
可以用 --smallfiles 选项来启动,
将会占用较小空间 400M左右.

Redis 导出导入 hash 结构

导出 Redis hash 数据

方法一: 需要自己再二次处理为 reids 命令格式

echo "HGETALL miot:did:type" | redis-cli -h localhost -p 6379 >> type.raw

方法二: 导出 redis 命令格式,注意最后一行有可能输出执行时间,如果有时间就删除最后一行即可

echo "HGETALL miot:did:type" | redis-cli -h localhost -p 6379 | xargs -n 2 |awk -F" " -v KEYNAME=miot:did:type '{print "HSET "KEYNAME " " $1, "\""$2"\""}' >> type.raw

方法三: 利用 phpRedisAdmin 导出 Redis 命令格式,然后从网页端复制到文件保存

导入 Redis

  导入就简单了,将 Redis 命令文件 cat 出来,通过管道传过去即可。

cat type.raw | redis-cli -h localhost -p 6379 --pipe

Mysql开启慢查询记录耗时SQL语句

简述

  网站数据达到一定的数量级,就会有页面卡,出现50x等各种问题,mysql服务器CPU居高不下等症状。因为sql缓慢导致php缓慢,导致超时。这个时候应该先从mysql入手。就像看病一样,要先找病根,记录慢查询日志,就是观察期,观察到迹象我们就可以对症下药了。

配置参数说明

  主要靠三个参数来配置,我们用通俗的话来解释。

  1. 开关(不多说,关闭就不记录了)
    slow_query_log
  2. log存储位置(记录下来,我得知道你在哪吧,一般将它存放到mysql数据目录,也就是和你创建的数据库在同级目录)
    slow_query_log_file
  3. 超时时间 (我得让你知道多慢我忍不了)
    long_query_time

设置方法

方法一:全局变量设置

  1. 将 slow_query_log 全局变量设置为“ON”状态
    mysql> set global slow_query_log='ON'; 
  2. 设置慢查询日志存放的位置(默认在 mysql data 目录下)
    mysql> set global slow_query_log_file='slow.log';
  3. 记录超时1秒的sql语句
    mysql> set global long_query_time=1;

    注意:无需重启即可生效,但重启会失效。set global 改的参数是暂时的,想重启不变请配合修改mysql配置文件。

- 阅读全文 -

Mysql错误 Index column size too large. The maximum column size is 767 bytes

  起因:准备上线一个phphub5的项目,本地是mysql5.7,数据库是没有问题的,线上环境5.5,版本较低,导入的时候出错,现在记录一下解决过程。

[Err] 1709 - Index column size too large. The maximum column size is 767 bytes.

错误原因是因为索引的字段太长,在 stack overflow 上找到了答案。查看原地址

原来SQL:

ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

修改之后SQL:

ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

解决方法:在 CREATE TABLE 语句后面加上 ROW_FORMAT=DYNAMIC 就可以了。

Mysql开启general_log记录

        开启general log会将所有的SQL语句记录下来。生产环境一般不会开启,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。 


* 如果是 mysql5.4以下版本

在my.ini 文件中 设置 log='你的log 日志路径'

在[mysqld]后面增加一行  然后重启mysql 生效

log=D:/wamp/www/mysql_bz.log

* 如果是 mysql5.5以上版本  一次性修改方法 重启后无效

SHOW VARIABLES LIKE '%general_log%'
SET GLOBAL general_log = 1
SET GLOBAL general_log_file = '你的log 日志路径'

长期有效修改方法在 my.ini 里面 [mysqld] 后面加上如下代码 没有 [mysqld] 自己加上

[mysqld]
general_log=ON
general_log_file=D:/wamp/logs/mysql_general.log  // 这里设置你 log日志路径

# log-raw=true  如果错误日志没记录 则开启这行,

参考地址:

http://dev.mysql.com/doc/refman/5.7/en/query-log.html

http://dev.mysql.com/doc/refman/5.7/en/password-logging.html

然后重启mysql 生效

错误的sql不会被成功解析,所以不会记录到general log中

如果需要记录所有的语句,包括那些错误的,请加 log-raw选项  log-raw=true