楼主: mchdba

MySQL知识点技能点总结贴--个人版!

[复制链接]
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
91#
 楼主| 发表于 2011-11-17 15:27 | 只看该作者
本帖最后由 mchdba 于 2011-11-17 15:27 编辑

自己写了一个脚本,监控从库error日志,如果error日志文件有更新记录了,就发email将错误信息发送到我的邮箱里面,这样就可以及时知道数据库的运行状况了。
SA说了,每一分钟对error日志的监控只占据非常小的资源,对mysql的性能没有啥影响。下面是脚本的详细内容:


#/bin/bash
#set -x
ERRFILE=/usr/local/mysql/var/sh-192-168-250-40.chinascopefinancial.com.err
SOURCEFILE=/tmp/resource.txt
RESULTFILE=/tmp/result.txt
EMAIL=xxx.man@chinascopefinancial.com
/usr/bin/stat $ERRFILE | grep -v "Access" > $RESULTFILE
diff $SOURCEFILE $RESULTFILE >> /dev/null
if [ $? != 0 ]; then
ERRORID=`tail -1 $ERRFILE | awk '{print $1}'`
cat $ERRFILE | sed -n "/$ERRORID/,$ p" > /tmp/error_msg.txt
/usr/bin/mutt -s "MySQL error from 192.xxx.xxx.40" $EMAIL < /tmp/error_msg.txt
/usr/bin/stat $ERRFILE | grep -v "Access" > $SOURCEFILE
fi

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:57:13
92#
发表于 2011-11-17 17:31 | 只看该作者
学习了个多小时,感谢分享

使用道具 举报

回复
论坛徽章:
14
2011新春纪念徽章
日期:2011-04-02 17:01:062013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2012-12-06 19:27:46ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42紫蛋头
日期:2012-03-13 16:37:18灰彻蛋
日期:2012-02-06 14:20:122012新春纪念徽章
日期:2012-01-04 11:57:56灰彻蛋
日期:2011-12-26 14:20:13茶鸡蛋
日期:2011-12-20 15:00:13
93#
发表于 2011-11-18 11:19 | 只看该作者
icer_repls 发表于 2011-11-14 13:05
来张简化版的MySQL体系结构图吧

相当深入的理解啊,哈哈

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
94#
 楼主| 发表于 2011-11-18 11:20 | 只看该作者

--安装
Linux
推荐下载版本1.6.0
下载链接:http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.3.tgz

上传,cmd模式下
PSCP f:\mongodb-linux-x86_64-1.6.0.tar  root@192.168.56.101:/data/

输入以下命令:
解压:tar -zxvf mongodb-linux-x86_64-1.6.0.tar
定位到mongodb/bin目录中 cd ../mongodb/bin

1. mongod命令建立一个mongodb数据库链接,端口号为10001,数据存放路径为/data/mongodb/data,日志存放路径为/data/mongodb/log
先建立相关目录及文件,使用mkdir 及touch
启动命令——

/data/mongodb-linux-x86_64-1.6.0/bin/mongod -port 10001 -dbpath /data/db/ --logpath /data/log/log0.log &
【】启动成功

/data/mongodb-linux-x86_64-1.6.0/bin/mongod -port 10001 -dbpath /data/db/ --logpath /data/log/log0.log --auth &

/data/mongodb-linux-x86_64-1.6.0/bin/mongo 192.168.0.39:10001

【】连接成功

/data/mongodb-linux-x86_64-1.6.0/bin/mongod -port 10001 -dbpath /data/db160/
--指定数据目录
/data/mongodb-linux-i686-1.6.0/bin/mongod -port 10001 -dbpath /data/db64160/
--指定数据目录 日志目录
/data/mongodb-linux-i686-1.6.0/bin/mongod -port 10001 -dbpath /data/db160/ -logpath /data/log160/log0.log

/data/mongodb-linux-i686-1.6.0/bin/mongod --shardsvr -dbpath /data/db160/ -port 10001 > /data/log160/log0.log

【】启动成功

2.链接已有的mongodb数据库
-- 普通方式连接
/data/mongodb-linux-x86_64-1.6.0/bin/mongo 192.168.56.101:10001
/data/mongodb-linux-i686-1.6.0/bin/mongo 192.168.56.101:10001

/data/mongodb-linux-x86_64-1.6.0/bin/mongo 192.168.0.39:10001
/data/mongodb-linux-i686-1.6.0/bin/mongo 192.168.0.39:10001


-- 用户方式连接
[root@localhost ~]# /data/mongodb-linux-x86_64-1.6.0/bin/mongo 192.168.0.39:10001/csf -u 'skyman.man' -p 'manchungood'
[root@localhost ~]# /data/mongodb-linux-x86_64-1.6.0/bin/mongo 192.168.0.39:10001/csf -u 'admin' -p 'admin'

-- 关闭数据库
【正常关闭】[root@localhost down]# /data/mongodb-linux-x86_64-1.6.0/bin/mongo localhost:10001
【非正常关闭】killall mongod

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
95#
 楼主| 发表于 2011-11-18 11:20 | 只看该作者


=====================================================================================
复制实验
/data/mongodb-linux-i686-1.6.0/bin/mongod -port 10001 -dbpath /data/db64160/
/data/mongodb-linux-i686-1.6.0/bin/mongod --replSet foo --port 27017 --dbpath /data/r0
/data/mongodb-linux-i686-1.6.0/bin/mongod --replSet foo --port 27018 --dbpath /data/r1
/data/mongodb-linux-i686-1.6.0/bin/mongod --replSet foo --port 27019 --dbpath /data/r2

启动客户端:
/data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27017
> config = {_id: 'foo', members: [
                          {_id: 0, host: 'localhost:27017'},
                          {_id: 1, host: 'localhost:27018'},
                          {_id: 2, host: 'localhost:27019'}]
           }

> rs.initiate(config);

> db.messages.save({name: "ReplSet Tutorial"});

--去3个node去验证数据 fail
/data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27017

--重新配置
> new_config = {_id: 'foo', members: [
                          {_id: 0, host: 'localhost:27017', votes: 1},
                          {_id: 1, host: 'localhost:27018', votes: 2},
                          {_id: 2, host: 'localhost:27019', votes: 3}]
           }

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
96#
 楼主| 发表于 2011-11-18 11:21 | 只看该作者

=====================================================================================
mongodb备份恢复

备份本机mongodb到/tmp/bakup目录下面:
/data/mongodb-linux-x86_64-1.6.0/bin/mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb

将/tmp/backup 下面的文件导入数据库:
/data/mongodb-linux-x86_64-1.6.0/bin/mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在。

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
97#
 楼主| 发表于 2011-11-18 11:21 | 只看该作者

=====================================================================================
--Master Slave实验
--创建数据目录
$ mkdir /data/1
$ mkdir /data/2
$ mkdir /data/3

--启动mongodb库
$ /data/mongodb-linux-i686-1.6.0/bin/mongod --port 27020 --dbpath /data/1 --master &
$ /data/mongodb-linux-i686-1.6.0/bin/mongod --port 27021 --dbpath /data/2 --master &
$ /data/mongodb-linux-i686-1.6.0/bin/mongod --port 27022 --dbpath /data/3 --slave  &

--启动客户端
$ /data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27020
$ /data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27020
> use db1
> db.foo.insert({x:1})
> db.foo.insert({x:2})
> exit
$ # master 2
$ /data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27021
> use db2
> db.foo.insert({x:999, note:"in db2"})
> exit

$ # configure slave
$ /data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27022
> use local
> db.sources.insert({host:"localhost:27020"})
> db.sources.insert({host:"localhost:27021"})
> db.sources.find()

> // wait a little, still connected to slave

> use db1
> db.foo.count()
2
> use db2
> db.foo.find()
{ "_id" : ObjectId("4b8ed00a1d42d47b3afa3c47"), "x" : 999, "note" : "in db2" }
> db.printSlaveReplicationInfo()

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
98#
 楼主| 发表于 2011-11-18 11:22 | 只看该作者

=====================================================================================
--Master Master 实验
--创建数据目录
$ mkdir /data/m1
$ mkdir /data/m2
-- 启动服务器
$ /data/mongodb-linux-i686-1.6.0/bin/mongod --port 27017 --dbpath /data/m1 --master
$ /data/mongodb-linux-i686-1.6.0/bin/mongod --slave --master --dbpath /data/slave --port 10000 --source localhost

--启动客户端
$ /data/mongodb-linux-i686-1.6.0/bin/mongo localhost:27017
> z = connect("localhost:10000/test")
> db.foo.insert({x:7});
> z.foo.find()
> db.foo.find()
// 此处master、slave数据同步

> db.foo.insert({x:81});
> db.foo.find()
> z.foo.find()
// 此处master、slave数据同步

> z.foo.insert({x:91});
> db.foo.find()
> z.foo.find()
// 此处不同步,db查不到x为9的数据。跟http://www.mongodb.org/display/DOCS/Master+Master+Replication上记载不一致

> z.foo.remove({x:8});
> db.foo.find()
> z.foo.find()
// 此处不同步,db查到x为8的数据。跟http://www.mongodb.org/display/DOCS/Master+Master+Replication上记载不一致

【】总结:db(master)可以同步到slave,但是slave不能同步到master上。跟doc上不一致。

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
99#
 楼主| 发表于 2011-11-18 11:22 | 只看该作者
=====================================================================================
导出mongoexport
1, 在39上面执行如下导出语句
   [root@localhost down]# /data/mongodb-linux-x86_64-1.6.0/bin/mongoexport -h 192.168.0.39:10001 -d test -c t1 -o /data/down/t1.json       

2, 在101虚拟机上启动mongodb,传入t1.json
   scp mysql@192.168.0.39:/data/down/*.json /data/down/

3, 在101上面进行导入import命令
   [root@localhost down]# /data/mongodb-linux-i686-1.6.0/bin/mongoimport -h 192.168.0.192:10001 -d test -c t1 -file /data/down/t1.json

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
100#
 楼主| 发表于 2011-11-18 11:23 | 只看该作者


=====================================================================================
--【】用户管理
-- 添加只读用户
db.addUser("skyman.man","manchungood",true)
-- 修改只读用户为普通用户
db.addUser("skyman.man","manchungood",false);
db.addUser("admin","manchungood",false);
-- 删除用户
db.removeUser("admin");


--查看所有数据库
> show dbs;
--切换数据库
> use admin;
--查看正在使用的数据库
> db
--查看当前数据库里有多少个collections
show collections

--切换数据库
打开数据库,没有的话立即建一个
> use admin  

--增加或修改用户密码 ,必须在非--auth方式下启动mongodb,建立用户,建立完毕,关闭mongodb,以--auth方式启动mongodb,再以admin用户登录自己专属的db
> db.addUser('admin','admin')
--查看用户列表
> db.system.users.find()
--#用户认证
> db.auth('admin','pwd')
--删除用户
> db.removeUser('mongodb')
--查看所有用户
> show users


12.#查看所有数据库
> show dbs
--查看所有的collection
> show collections
--查看各collection的状态
> db.printCollectionStats()
--查看主从复制状态
> db.printReplicationInfo()
--修复数据库
> db.repairDatabase()
--设置记录profiling,0=off 1=slow 2=all
> db.setProfilingLevel(1)
--查看profiling
> show profile
--拷贝数据库
> db.copyDatabase('mail_addr','mail_addr_tmp')
--删除collection
> db.mail_addr.drop()
--删除当前的数据库
> db.dropDatabase()

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表