
shell 命令-服务
/etc/init.d/sendmail start # 启动服务
/etc/init.d/sendmail stop # 关闭服务
/etc/init.d/sendmail status # 查看服务当前状态
systemctl start sshd # 启动服务
systemctl stop sshd # 停止服务
systemctl reload sshd # 重启服务
/date/mysql/bin/mysqld_safe --user=mysql & # 启动mysql后台运行
/bin/systemctl restart mysqld.service # centos7启动服务
vi /etc/rc.d/rc.local # 开机启动执行 可用于开机启动脚本
/etc/rc.d/rc3.d/S55sshd # 开机启动和关机关闭服务连接 # S开机start K关机stop 55级别 后跟服务名
ln -s -f /date/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd # 将启动程序脚本连接到开机启动目录
ipvsadm -ln # lvs查看后端负载机并发
ipvsadm -C # lvs清除规则
xm list # 查看xen虚拟主机列表
virsh # 虚拟化(xen\kvm)管理工具 yum groupinstall Virtual*
./bin/httpd -M # 查看httpd加载模块
httpd -t -D DUMP_MODULES # rpm包httpd查看加载模块
echo 内容| /bin/mail -s "标题" 收件箱 -f 发件人 # 发送邮件
"`echo "内容"|iconv -f utf8 -t gbk`" | /bin/mail -s "`echo "标题"|iconv -f utf8 -t gbk`" 收件箱 # 解决邮件乱码
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg # 检测nagios配置文件
chkconfig
chkconfig service on|off|set # 设置非独立服务启状态
chkconfig --level 35 httpd off # 让服务不自动启动
chkconfig --level 35 httpd on # 让服务自动启动 35指的是运行级别
chkconfig --list # 查看所有服务的启动状态
chkconfig --list |grep httpd # 查看某个服务的启动状态
chkconfig –-list [service] # 查看服务的状态
systemctl
systemctl is-active *.service # 查看服务是否运行
systemctl is-enabled *.service # 查询服务是否开机启动
systemctl mask *.service # 注销指定服务
systemctl unmask cups.service # 取消注销cups服务
systemctl enable *.service # 开机运行服务
systemctl disable *.service # 取消开机运行
systemctl start *.service # 启动服务
systemctl stop *.service # 停止服务
systemctl restart *.service # 重启服务
systemctl reload *.service # 重新加载服务配置文件
systemctl status *.service # 查询服务运行状态
systemctl --failed # 显示启动失败的服务
systemctl poweroff # 系统关机
systemctl reboot # 重新启动
systemctl rescue # 强制进入救援模式
systemctl emergency # 强制进入紧急救援模式
systemctl list-dependencies # 查看当前运行级别target(mult-user)启动了哪些服务
systemctl list-unit-files # 查看开机启动的状态
journalctl -r -u elasticsearch.service # 查看日志 r倒序 u服务名
/etc/systemd/system/falcon-agent.service
[Unit]
Description=This is zuiyou monitor agent
After=network.target remote-fs.target nss-lookup.target
[Service]
User= root
Type=simple
PIDFile=/opt/falcon-agent/var/app.pid
ExecStartPre=/usr/bin/rm -f /opt/falcon-agent/var/app.pid
ExecStart=/opt/falcon-agent/control start
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=process
KillSignal=SIGQUIT
TimeoutStopSec=5
PrivateTmp=true
Restart=always
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
systemctl daemon-reload # 加载配置
nginx
centos7:yum install -y make gcc openssl-devel pcre-devel bzip2-devel libxml2 libxml2-devel curl-devel libmcrypt-devel libjpeg libjpeg-devel libpng libpng-devel openssl
ubuntu:apt-get install -y gcc libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev make libperl-dev
groupadd nginx
useradd nginx -g nginx -M -s /sbin/nologin
mkdir -p /opt/nginx-tmp
wget http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz
tar fxz ngx_cache_purge-1.6.tar.gz
# ngx_cache_purge 清除指定url缓存
# 假设一个URL为 http://192.168.12.133/test.txt
# 通过访问 http://192.168.12.133/purge/test.txt 就可以清除该URL的缓存。
tar zxvpf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# ./configure --help
# --with # 默认不加载 需指定编译此参数才使用
# --without # 默认加载,可用此参数禁用
# --add-module=path # 添加模块的路径
# --add-module=/opt/ngx_module_upstream_check \ # nginx 代理状态页面
# ngx_module_upstream_check 编译前需要打对应版本补丁 patch -p1 < /opt/nginx_upstream_check_module/check_1.2.6+.patch
# --add-module=/opt/ngx_module_memc \ # 将请求页面数据存放在 memcached中
# --add-module=/opt/ngx_module_lua \ # 支持lua脚本 yum install lua-devel lua
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_dav_module \
--with-http_mp4_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_addition_module \
--with-http_perl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-stream
make && make install
/usr/local/nginx/sbin/nginx –t # 检查Nginx配置文件 但并不执行
/usr/local/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf # 检查Nginx配置文件
/usr/local/nginx/sbin/nginx # 启动nginx
/usr/local/nginx/sbin/nginx -s reload # 重载配置
/usr/local/nginx/sbin/nginx -s stop # 关闭nginx服务
elasticsearch
vim /etc/sysctl.conf
vm.max_map_count = 262144
vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
sysctl -p
curl 'localhost:9200/_cat/health?v' # 健康检查
curl 'localhost:9200/_cat/nodes?v' # 获取集群的节点列表
curl 'localhost:9200/_cat/indices?v' # 列出所有索引
curl 127.0.0.1:9200/indexname -XDELETE # 删除索引
curl -XGET http://localhost:9200/_cat/shards # 查看分片
curl '127.0.0.1:9200/_cat/indices' # 查分片同步 unassigned_shards # 没同步完成
mysql
# mysql 可视化工具 MySQL Workbench
mysqlcheck -uroot -p -S mysql.sock --optimize --databases account # 检查、修复、优化MyISAM表
mysqlbinlog slave-relay-bin.000001 # 查看二进制日志
mysqladmin -h myhost -u root -p create dbname # 创建数据库
flush privileges; # 刷新
show databases; # 显示所有数据库
use dbname; # 打开数据库
show tables; # 显示选中数据库中所有的表
desc tables; # 查看表结构
drop database name; # 删除数据库
drop table name; # 删除表
create database name; # 创建数据库
select column from table; # 查询
show processlist; # 查看mysql进程
show full processlist; # 显示进程全的语句
select user(); # 查看所有用户
show slave status\G; # 查看主从状态
show variables; # 查看所有参数变量
show status; # 运行状态
show table status # 查看表的引擎状态
show grants for user@'%' # 查看用户权限
drop table if exists user # 表存在就删除
create table if not exists user # 表不存在就创建
select host,user,password from user; # 查询用户权限 先use mysql
create table ka(ka_id varchar(6),qianshu int); # 创建表
show variables like 'character_set_%'; # 查看系统的字符集和排序方式的设定
show variables like '%timeout%'; # 查看超时相关参数
delete from user where user=''; # 删除空用户
delete from user where user='oldhan' and host='localhost' ; # 删除用户oldhan
drop user 'oldhan'@'localhost'; # 使用此方法删除用户更为靠谱
ALTER TABLE mytable ENGINE = MyISAM ; # 改变现有的表使用的存储引擎
SHOW TABLE STATUS from dbname where Name='tablename'; # 查询表引擎
mysql -uroot -p -A -ss -h10.10.10.5 -e "show databases;" # shell中获取数据不带表格 -ss参数
CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB # 创建表指定存储引擎的类型(MyISAM或INNODB)
grant replication slave on *.* to 'user'@'%' identified by 'pwd'; # 创建主从复制用户
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction); # 添加索引
alter table name add column accountid(column) int(11) NOT NULL(column); # 插入字段
update host set monitor_state='Y',hostname='oldhan' where ip='192.168.1.1'; # 更新数据
select * from information_schema.processlist where command!='sleep'; # 查看当前进程
select * from atable where name='on' AND t<15 AND host LIKE '10%' limit 1,10; # 多条件查询
show create database ops_deploy; # 查看数据库编码
show create table updatelog; # 查看数据库表编码
alter database ops_deploy CHARACTER SET utf8; # 修改数据库编码
alter table `updatelog` default character set utf8; # 修改表编码
alter table `updatelog` convert to character set utf8; # 修改一张表的所有字段的编码格式
自增表
create table oldhan (id INTEGER PRIMARY KEY AUTO_INCREMENT, name CHAR(30) NOT NULL, age integer , sex CHAR(15) ); # 创建自增表
insert into oldhan(name,age,sex) values(%s,%s,%s) # 自增插入数据
登录 mysql 的命令
# 格式: mysql -h 主机地址 -u 用户名 -p 用户密码
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK
shell执行 mysql 命令
mysql -u root -p'123' oldhan < file.sql # 针对指定库执行sql文件中的语句,好处不需要转义特殊符号,一条语句可以换行.不指定库执行时语句中需要先use
mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "
use $dbname;
delete from data where date=('$date1');
" # 执行多条mysql命令
mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int(11) NOT NULL;flush privileges;" 2>&1 |grep -v Warning # 不登陆mysql插入字段
mysql字符集相关
show variables like '%character%'; # 查看数据库中设置字符集的参数
# character_set_client、character_set_connection 以及 character_set_results 这几个参数都是客户端的设置
# character_set_system、character_set_server 以及 character_set_database 是指服务器端的设置。
# 而对于这三个服务器端的参数来说的优先级是:
# 列级字符集 > 表级字符集 > character_set_database > character_set_server > character_set_system
show global variables like '%char%'; #查看RDS实例字符集相关参数设置
show global variables like 'coll%'; #查看当前会话字符序相关参数设置
show character set; #查看实例支持的字符集
show collation; #查看实例支持的字符序
show create table table_name \G #查看表字符集设置
show create database database_name \G #查看数据库字符集设置
show create procedure procedure_name \G #查看存储过程字符集设置
show procedure status \G #查看存储过程字符集设置
alter database db_name default charset utf8; #修改数据库的字符集
create database db_name character set utf8; #创建数据库时指定字符集
alter table tab_name default charset utf8 collate utf8_general_ci; #修改表字符集和字符序
# 下面三条sql 分别将库 dbsdq , 表 tt2 , 表 tt2 中的 c2 列修改为utf8mb4 字符集
alter database dbsdq character set utf8mb4 collate utf8mb4_unicode_ci;
use dbsdq;
alter table tt2 character set utf8mb4 collate utf8mb4_unicode_ci;
alter table tt2 modify c2 varchar(10) character set utf8mb4;
# 修改列时,当前列中的所有行都会立即转化为新的字符集;
# alter table 会对表加元数据锁
备份数据库
mysqldump -h host -u root -p --default-character-set=utf8 dbname >dbname_backup.sql # 不包括库名,还原需先创建库,在use
mysqldump -h host -u root -p --database --default-character-set=utf8 dbname >dbname_backup.sql # 包括库名,还原不需要创建库
/bin/mysqlhotcopy -u root -p # mysqlhotcopy只能备份MyISAM引擎
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 dbname table1 table2 > /data/db.sql # 备份表
mysqldump -uroot -p123 -d database > database.sql # 备份数据库结构
# 最小权限备份
grant select on db_name.* to dbbackup@"localhost" Identified by "passwd";
# --single-transaction InnoDB有时间戳 只备份开始那一刻的数据,备份过程中的数据不会备份
mysqldump -hlocalhost -P 3306 -u dbbackup --single-transaction -p"passwd" --database dbname >dbname.sql
# xtrabackup备份需单独安装软件 优点: 速度快,压力小,可直接恢复主从复制
innobackupex --user=root --password="" --defaults-file=/data/mysql5/data/my_3306.cnf --socket=/data/mysql5/data/mysql.sock --slave-info --stream=tar --tmpdir=/data/dbbackup/temp /data/dbbackup/ 2>/data/dbbackup/dbbackup.log | gzip 1>/data/dbbackup/db50.tar.gz
还原数据库
mysql -h host -u root -p dbname < dbname_backup.sql
source 路径.sql # 登陆mysql后还原sql文件
赋权限
# 指定IP: $IP 本机: localhost 所有IP地址: % # 通常指定多条
grant all on zabbix.* to user@"$IP"; # 对现有账号赋予权限
grant select on database.* to user@"%" Identified by "passwd"; # 赋予查询权限(没有用户,直接创建)
grant all privileges on database.* to user@"$IP" identified by 'passwd'; # 赋予指定IP指定用户所有权限(不允许对当前库给其他用户赋权限)
grant all privileges on database.* to user@"localhost" identified by 'passwd' with grant option; # 赋予本机指定用户所有权限(允许对当前库给其他用户赋权限)
grant select, insert, update, delete on database.* to user@'ip'identified by "passwd"; # 开放管理操作指令
revoke all on *.* from user@localhost; # 回收权限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `storemisc_dev`.* TO 'user'@'192.168.%'
更改密码
update user set password=password('passwd') where user='root'
mysqladmin -u root password 'oldhan'
mysql忘记密码后重置
cd /data/mysql5
/data/mysql5/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
use mysql;
update user set password=password('123123') where user='root';
mysql主从复制失败恢复
slave stop;
reset slave;
change master to master_host='10.10.10.110',master_port=3306,master_user='repl',master_password='repl',master_log_file='master-bin.000010',master_log_pos=107,master_connect_retry=60;
slave start;
sql语句使用变量
use oldhan;
set @a=concat('my',weekday(curdate())); # 组合时间变量
set @sql := concat('CREATE TABLE IF NOT EXISTS ',@a,'( id INT(11) NOT NULL )'); # 组合sql语句
select @sql; # 查看语句
prepare create_tb from @sql; # 准备
execute create_tb; # 执行
检测mysql主从复制延迟
1、在从库定时执行更新主库中的一个timeout数值
2、同时取出从库中的timeout值对比判断从库与主库的延迟
死锁
show OPEN TABLES where In_use > 0; # 查看当前锁信息
show variables like 'innodb_print_all_deadlocks'; # 查看当前死锁参数
set global innodb_print_all_deadlocks = 1; # 设置死锁信息保存到错误日志
innodb_print_all_deadlocks = 1 # conf配置
mysql慢查询
select * from information_schema.processlist where command in ('Query') and time >5\G # 查询操作大于5S的进程
开启慢查询日志
# 配置文件 /etc/my.conf
[mysqld]
log-slow-queries=/var/lib/mysql/slowquery.log # 指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
long_query_time=5 # 记录超过的时间,默认为10s 建议0.5S
log-queries-not-using-indexes # log下来没有使用索引的query,可以根据情况决定是否开启 可不加
log-long-format # 如果设置了,所有没有使用索引的查询也将被记录 可不加
# 直接修改生效
show variables like "%slow%"; # 查看慢查询状态
set global slow_query_log='ON'; # 开启慢查询日志 变量可能不同,看上句查询出来的变量
mysqldumpslow慢查询日志查看
-s # 是order的顺序,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序
-t # 是top n的意思,即为返回前面多少条的数据
-g # 后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log # 访问次数最多的20个sql语句
mysqldumpslow -s r -t 20 host-slow.log # 返回记录集最多的20个sql
mysqldumpslow -t 10 -s t -g "left join" host-slow.log # 按照时间返回前10条里面含有左连接的sql语句
show global status like '%slow%'; # 查看现在这个session有多少个慢查询
show variables like '%slow%'; # 查看慢查询日志是否开启,如果slow_query_log和log_slow_queries显示为on,说明服务器的慢查询日志已经开启
show variables like '%long%'; # 查看超时阀值
desc select * from wei where text='xishizhaohua'\G; # 扫描整张表 tepe:ALL 没有使用索引 key:NULL
create index text_index on wei(text); # 创建索引
Percona Toolkit 慢日志分析工具
mysql操作次数查询
select * from information_schema.global_status;
com_select
com_delete
com_insert
com_update
mongodb
一、启动{
# 不启动认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/
# 启动认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/ --auth
# 1、配置文件方式启动(单点)
tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C /data/
mkdir -p /data/mongodb/{conf,logs,data,run}
openssl rand -base64 745 > /data/mongodb/conf/keyfile
chmod 600 /data/mongodb/conf/keyfile
cat > /data/mongodb/conf/mongodb.conf << -EOF
systemLog:
destination: file
path: "/data/mongodb/logs/mongod.log"
logAppend: true
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb/run/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
bindIp: 192.168.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
EOF
/data/mongodb/bin/mongod -f /data/mongodb/conf/mongodb.conf
# 其他参数
bind_ip # 绑定IP 使用mongo登录需要指定对应IP
journal # 开启日志功能,降低单机故障的恢复时间,取代dur参数
syncdelay # 系统同步刷新磁盘的时间,默认60秒
directoryperdb # 每个db单独存放目录,建议设置.与mysql独立表空间类似
repairpath # 执行repair时的临时目录.如果没开启journal,出现异常重启,必须执行repair操作
# mongodb没有参数设置内存大小.使用os mmap机制缓存数据文件,在数据量不超过内存的情况下,效率非常高.数据量超过系统可用内存会影响写入性能
#2、配置文件方式启动(三节点 PSS)
tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C /data/
mkdir -p /data/mongodb/{conf,logs,data,run}
openssl rand -base64 745 > /data/mongodb/conf/keyfile
chmod 600 /data/mongodb/conf/keyfile
scp -r /data/mongodb/conf/keyfile [email protected]:/data/mongodb/conf/
scp -r /data/mongodb/conf/keyfile [email protected]:/data/mongodb/conf/
cat > /data/mongodb/conf/mongodb.conf << -EOF
systemLog:
destination: file
path: "/data/mongodb/logs/mongod.log"
logAppend: true
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb/run/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
bindIp: 192.168.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
replication:
oplogSizeMB: 4096
replSetName: sjfw_repl
#security:
# authorization: enabled
# clusterAuthMode: keyFile
# keyFile: /data/mongodb/conf/keyfile
EOF
#各节点启动(三个都启动)
/data/mongodb/bin/mongod -f /data/mongodb/conf/mongodb.conf
#进入某个mongodb
/data/mongodb/bin/mongo 192.168.0.1:27017
#执行下列命令
config={
_id:'sjfw_repl',
members:[
{_id: 0, host: '192.168.0.1:27017'},
{_id: 1, host: '192.168.0.2:27017'},
{_id: 2, host: '192.168.0.3:27017'},
]
}
rs.initiate(config)
rs.status()
#创建用户
use admin;
db.createUser(
{
user: "root",
pwd: "oldhan",
roles: [ { role: "root",db:"admin" } ]
}
)
#对指定的库授权
use preprod-tes;
db.createUser(
{
user: "root",
pwd: "oldhan",
roles: [ { role: "dbAdmin",db:"preprod-tes" } ]
}
)
#查看集群状态
rs.status()
#查看是否primary节点
rs.isMaster()
#查看集群配置
rs.conf()
#激活从节点
rs.secondaryOk()
}
二、关闭{
# 方法一:登录mongodb
./mongo
use admin
db.shutdownServer()
# 方法:kill传递信号 两种皆可
kill -2 pid
kill -15 pid
}
三、开启认证与用户管理{
./mongo # 先登录
use admin # 切换到admin库
db.addUser("root","123456") # 创建用户
db.addUser('zhansan','pass',true) # 如果用户的readOnly为true那么这个用户只能读取数据,添加一个readOnly用户zhansan
./mongo 127.0.0.1:27017/mydb -uroot -p123456 # 再次登录,只能针对用户所在库登录
#虽然是超级管理员,但是admin不能直接登录其他数据库,否则报错
#Fri Nov 22 15:03:21.886 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
show collections # 查看链接状态 再次登录使用如下命令,显示错误未经授权
db.system.users.find(); # 查看创建用户信息
db.system.users.remove({user:"zhansan"}) # 删除用户
#恢复密码只需要重启mongodb 不加--auth参数
}
四、登录{
192.168.1.5:28017 # http登录后可查看状态
mongo # 默认登录后打开 test 库
mongo 192.168.1.5:27017/databaseName # 直接连接某个库 不存在则创建 启动认证需要指定对应库才可登录
}
五、查看状态{
#登录后执行命令查看状态
db.runCommand({"serverStatus":1})
globalLock # 表示全局写入锁占用了服务器多少时间(微秒)
mem # 包含服务器内存映射了多少数据,服务器进程的虚拟内存和常驻内存的占用情况(MB)
indexCounters # 表示B树在磁盘检索(misses)和内存检索(hits)的次数.如果这两个比值开始上升,就要考虑添加内存了
backgroudFlushing # 表示后台做了多少次fsync以及用了多少时间
opcounters # 包含每种主要擦撞的次数
asserts # 统计了断言的次数
#状态信息从服务器启动开始计算,如果过大就会复位,发送复位,所有计数都会复位,asserts中的roolovers值增加
#mongodb自带的命令
./mongostat
insert #每秒插入量
query #每秒查询量
update #每秒更新量
delete #每秒删除量
locked #锁定量
qr|qw #客户端查询排队长度(读|写)
ar|aw #活跃客户端量(读|写)
conn #连接数
time #当前时间
mongostat -h 127.0.0.1 --port 27047 --authenticationDatabase admin -u zadmin -p Keaphh9e # 查看mongo状态
mongotop -h 127.0.0.1 --port 27047 --authenticationDatabase admin -u zadmin -p Keaphh9e # 查看mongo集合的统计数据
}
六、常用命令{
db.listCommands() # 当前MongoDB支持的所有命令(同样可通过运行命令db.runCommand({"listCommands" : `1})来查询所有命令)
db.runCommand({"buildInfo" : 1}) # 返回MongoDB服务器的版本号和服务器OS的相关信息
db.runCommand({"collStats" : tablename}) # 返回该集合的统计信息,包括数据大小,已分配存储空间大小,索引的大小等
db.runCommand({"dropDatabase" : 1}) # 清空当前数据库的信息,包括删除所有的集合和索引
db.runCommand({"isMaster" : 1}) # 检查本服务器是主服务器还是从服务器
db.runCommand({"ping" : 1}) # 检查服务器链接是否正常。即便服务器上锁,该命令也会立即返回
db.runCommand({"repaireDatabase" : 1}) # 对当前数据库进行修复并压缩,如果数据库特别大,这个命令会非常耗时
db.runCommand({"serverStatus" : 1}) # 查看这台服务器的管理统计信息
# 某些命令必须在admin数据库下运行,如下两个命令:
db.runCommand({"renameCollection" : 集合名, "to":集合名}) # 对集合重命名,注意两个集合名都要是完整的集合命名空间,如foo.bar, 表示数据库foo下的集合bar。
db.runCommand({"listDatabases" : 1}) # 列出服务器上所有的数据库
mongo 172.20.20.1:27072/mdb --eval "db.tb.count();" # shell执行mongo语句
mongo --host 172.20.20.1 --port 27049
rs.config(); # 查看集群配置
rs.status(); # 查看集群节点的状态
db.currentOp() # 获取当前正在执行的操作,可对应命令链接到ip:port
db.runCommand( { logRotate : 1 } ) # 日志轮转
rs.slaveOk() # 设置从库shell可读
rs.addArb("172.16.10.199:27020"); # 添加仲裁节点
rs.add({host: "10.2.2.2:27047", priority: 0, hidden: true}) # 添加从节点 hidden true隐藏节点[priority必须为0] false不隐藏
rs.remove("172.20.80.216:27047"); # 删除节点
rs.stepDown(120) # 主库上执行切换为从,120秒后切换回主
show dbs # 查询db
use post # 选择db
show tables # 查看文档列表
db.tb.drop() # 删除集合 需要权限
db.tb.remove({}) # 删除所有数据
db.tb.count() # 查询文档条数
db.tb.find() # 查看文档内容
db.tb.find({_id:37530555}) # 查询指定id
db.tb.find().sort({_id:-1}).limit(1) # 查询文档最后一条
db.tb.find({"processed" : {"$ne" : true}}).limit(1); # 字段不为 true
db.tb.find({"processed" : {"$eq" : true}}).limit(1); # 字段为 true
db.tb.find({"processed" : {"$exists" : false}}).limit(1); # 字段不存在
db.tb.ensureIndex({"status":1}, {background:true}) # 后台加索引
db.tb.getIndexes() # 查看索引
db.tb.ensureIndex({"c_type":1},{backgrounnd:true}) # 后台添加索引 1正向 -1反向
db.tb.dropIndex({"c_type":1}); # 删除索引
}
七、进程控制{
db.currentOp() # 查看活动进程
db.$cmd.sys.inprog.findOne() # 查看活动进程 与上面一样
opid # 操作进程号
op # 操作类型(查询\更新)
ns # 命名空间,指操作的是哪个对象
query # 如果操作类型是查询,这里将显示具体的查询内容
lockType # 锁的类型,指明是读锁还是写锁
db.killOp(opid值) # 结束进程
db.$cmd.sys.killop.findOne({op:opid值}) # 结束进程
}
八、备份还原{
# mongodump 虽然能不停机备份,但是为了获取实时数据视图的能力,使用fsync命令能在运行时复制数据目录并且不会损坏数据
# fsync会强制服务器将所有缓冲区的数据写入磁盘.配合lock还阻止对数据库的进一步写入,知道释放锁为止
db.runCommand({"fsync":1,"lock":1}) # 执行强制更新与写入锁
db.$cmd.sys.unlock.findOne() # 解锁
db.currentOp() # 查看解锁是否正常
mongoexport -d test -c t1 -o t1.dat # 导出JSON格式
-c # 指明导出集合
-d # 使用库
mongoexport -d test -c t1 -csv -f num -o t1.dat # 导出csv格式
-csv # 指明导出csv格式
-f # 指明需要导出那些例
mongoimport -d test -c t1 -file t1.dat # mongoimport还原JSON格式
mongoimport -d test -c t1 -type csv --headerline -file t1.dat # mongoimport还原csv格式数据
--headerline # 指明不导入第一行 因为第一行是列名
mongodump -d test -o /bak/mongodump # mongodump数据备份
mongorestore -d test --drop /bak/mongodump/* # mongorestore恢复
--drop # 恢复前先删除
--gzip # 压缩
# 备份一个表
# --excludeCollection string # 排除指定的集合 要排除多个,使用多个
mongodump --host 127.0.0.1:27080 -d dbname -c tablename -o /data/reports/
mongodump --host 127.0.0.1:27080 -d dbname -c tablename -o /data/reports/reports -u root -p tAvaa5yNUE --authenticationDatabase admin
# 恢复一个表
mongorestore --host 127.0.0.1:27080 -d dbname -c tablename --drop --dir=/data/reports/tablename.bson
# 在线拷贝一个库
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
db.copyDatabase('mate','mate', '172.16.255.176:27047')
}
九、修复{
# 当停电或其他故障引起不正常关闭时,会造成部分数据损坏丢失
mongod --repair # 修复操作:启动时候加上 --repair
# 修复过程:将所有文档导出,然后马上导入,忽略无效文档.完成后重建索引。时间较长,会丢弃损坏文档
# 修复数据还能起到压缩数据库的作用
db.repairDatabase() # 运行中的mongodb可使用 repairDatabase 修复当前使用的数据库
{"repairDatabase":1} # 通过驱动程序
}
十、python使用mongodb{
原文: http://blog.nosqlfan.com/html/2989.html
easy_install pymongo # python2.7+
import pymongo
connection=pymongo.Connection('localhost',27017) # 创建连接
db = connection.test_database # 切换数据库
collection = db.test_collection # 获取collection
# db和collection都是延时创建的,在添加Document时才真正创建
文档添加, _id自动创建
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
posts = db.posts
posts.insert(post)
ObjectId('...')
批量插入
new_posts = [{"author": "Mike",
"text": "Another post!",
"tags": ["bulk", "insert"],
"date": datetime.datetime(2009, 11, 12, 11, 14)},
{"author": "Eliot",
"title": "MongoDB is fun",
"text": "and pretty easy too!",
"date": datetime.datetime(2009, 11, 10, 10, 45)}]
posts.insert(new_posts)
[ObjectId('...'), ObjectId('...')]
获取所有collection
db.collection_names() # 相当于SQL的show tables
获取单个文档
posts.find_one()
查询多个文档
for post in posts.find():
post
加条件的查询
posts.find_one({"author": "Mike"})
高级查询
posts.find({"date": {"$lt": "d"}}).sort("author")
统计数量
posts.count()
加索引
from pymongo import ASCENDING, DESCENDING
posts.create_index([("date", DESCENDING), ("author", ASCENDING)])
查看查询语句的性能
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["cursor"]
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["nscanned"]
}
jdk
vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
. /etc/profile # 加载新的环境变量
jps -ml # 查看java进程
jstat -gc 18381 1s 30 # 查看java进程gc情况
redis
yum -y install gcc automake autoconf libtool make
cd /opt/redis && make && make install
cp -rf redis.conf redis.conf_$(date +%F_%H:%M)
mkdir -p /opt/redis/data
########写入redis.conf配置文件########
(cat << EOF
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /opt/redis/data/redis.pid
timeout 300
tcp-keepalive 60
loglevel notice
logfile /opt/redis/data/redis.log
dir /opt/redis/data
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
appendonly yes
appendfsync always
requirepass oldhan
#下面是redis.conf的主 要配置参数的意义:
#daemonize:是否以后台daemon方式运行
#pidfile:pid文件位置
#port:监听的端口号
#timeout:请求超时时间
#loglevel:log信息级别
#logfile:log文件位置
#databases:开启数据库的数量
#save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的>写操作时,自动保存快照。可设置多个条件。
#rdbcompression:是否使用压缩
#dbfilename:数据快照文件名(只是文件名,不包括目录)
#dir:数据快照的保存目录(这个是目录)
#appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
#appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、>每秒启用一次fsync、不调用fsync等待系统自己同步>)
EOF
) > /opt/redis/redis.conf
/opt/redis/src/redis-server /opt/redis/redis.conf
redis动态加内存
./redis-cli -h 10.10.10.11 -p 6401
save # 保存当前快照
config get * # 列出所有当前配置
config get maxmemory # 查看指定配置
config set maxmemory 15360000000 # 动态修改最大内存配置参数
nfs
# 依赖rpc服务通信 portmap[centos5] 或 rpcbind[centos6]
yum install nfs-utils portmap # centos5安装
yum install nfs-utils rpcbind # centos6安装
vim /etc/exports # 配置文件
# sync # 同步写入
# async # 暂存并非直接写入
# no_root_squash # 开放用户端使用root身份操作
# root_squash # 使用者身份为root则被压缩成匿名使用,即nobody,相对安全
# all_squash # 所有NFS的使用者身份都被压缩为匿名
/data/images 10.10.10.0/24(rw,sync,no_root_squash)
service portmap restart # 重启centos5的nfs依赖的rpc服务
service rpcbind restart # 重启centos6的nfs依赖的rpc服务
service nfs restart # 重启nfs服务 确保依赖 portmap 或 rpcbind 服务已启动
service nfs reload # 重载NFS服务配置文件
showmount -e # 服务端查看自己共享的服务
showmount -a # 显示已经与客户端连接上的目录信息
showmount -e 10.10.10.3 # 列出服务端可供使用的NFS共享 客户端测试能否访问nfs服务
mount -t nfs 10.10.10.3:/data/images/ /data/img # 挂载nfs 如果延迟影响大加参数 noac
# 服务端的 portmap 或 rpcbind 被停止后,nfs仍然工作正常,但是umout财会提示: not found / mounted or server not reachable 重启服务器的portmap 或 rpcbind 也无济于事。 nfs也要跟着重启,否则nfs工作仍然是不正常的。
# 同时已挂载会造成NFS客户端df卡住和挂载目录无法访问。请先用 mount 查看当前挂载情况,记录挂载信息,在强制卸载挂载目录,重新挂载
umount -f /data/img/ # 强制卸载挂载目录 如还不可以 umount -l /data/img/
nfsstat -c # 客户机发送和拒绝的RPC和NFS调用数目的信息
nfsstat -cn # 显示和打印与客户机NFS调用相关的信息
nfsstat -r # 显示和打印客户机和服务器的与RPC调用相关的信息
nfsstat –s # 显示关于服务器接收和拒绝的RPC和NFS调用数目的信息
hdfs
hdfs --help # 所有参数
hdfs dfs -help # 运行文件系统命令在Hadoop文件系统
hdfs dfs -ls /logs # 查看
hdfs dfs -ls /user/ # 查看用户
hdfs dfs -cat
hdfs dfs -df
hdfs dfs -du
hdfs dfs -rm
hdfs dfs -tail
hdfs dfs –put localSrc dest # 上传文件
hdfs dfsadmin -help # hdfs集群节点管理
hdfs dfsadmin -report # 基本的文件系统统计信息
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Oldhan's World
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果