yum安装iostat,mpstat,sar等系统性能查看命令

CentOSmini版安装以后,默认不安装iostat等命令,直接使用yum安装:

yum install sysstat -y

Debian或Ubuntu安装:

apt-get install sysstat -y

关于 Sysstat;

Sysstat 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有 利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手;

Sysstat 软件包集成如下工具:

* iostat 工具提供CPU使用率及硬盘吞吐效率的数据;
* mpstat 工具提供单个处理器或多个处理器相关数据;
* sar 工具负责收集、报告并存储系统活跃的信息;
* sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,
是为sadc所设计的程序前端程序;
* sa2 工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用
* sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;
* sadf 显示被sar通过多种格式收集的数据;

CentOS Yum只更新安全补丁操作

安装yum插件:

yum install yum-security

使用:检查安全更新

yum --security check-update

只安装安全更新

yum update --security

检查特定软件有无安全更新,列出更新的详细信息

yum info-security software_name

通过Nginx、Uwsgi快速部署Django

uwsgi:是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
运行过程:
nginx作为服务器的最前端,它将接受WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理(这是nginx的强项,静态文件像我们django博客项目中的static文件夹下面的图片,css,js)。



---阅读剩余部分---

-bash: killall: command not found 没有killall命令的解决方法

Centos7精简安装后,使用中发现没有killall命令,但是会有killall5命令,该命令是SystemV中的一个killall(杀死所有进程)命令.它会向所有进程发送一个信号,但调用killall5命令的shell自身不会被kill(杀掉);执行需谨慎;
介绍一下 psmisc :
Psmisc软件包包含三个帮助管理/proc目录的程序。

安装下列程序: fuser, killall,pstree和pstree.x11(到pstree的链接)

fuser 显示使用指定文件或者文件系统的进程的PID。

killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。

pstree 树型显示当前运行的进程。

pstree.x11 与pstree功能相同,只是在退出前需要确认。

killall命令安装:
debian、ubuntu系统:

apt-get install psmisc

centos或、rhel系统:

yum install psmisc

CentOS7.X Reboot 关机时提示job is running for /etc/rc.d/rc.load Compatibility解决方法

安装完CentOS7.4以后,执行了yum update systemd(或者yum update)将systemd系列软件包更新到219-19.el7版本之后,如果/etc/rc.d/rc.local写入了一些启动时间较长的内容,reboot会出现如下卡机界面,无法重启:
CentOS7.X Reboot 关机时提示job is running for /etc/rc.d/rc.load Compatibility
reboot.png
解决方法:

cat > /etc/systemd/system/rc-local.service <<EOF
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=5
RemainAfterExit=yes
EOF

#modify the default timeout of systemd
sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=30s/g' /etc/systemd/system.conf
systemctl daemon-reload
exit 0

直接保存为file.sh,执行sh file.sh即可,然后再次reboot机器、服务启动均正常,腾讯这里是7.1,7.2,在7.4下如果有这问题,直接执行也可以。
VIA: http://bbs.qcloud.com/thread-11819-1-1.html

AWR报告的生成和分析

自动工作负载库(Automatic Workload Repository,AWR)自动工作负载库报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。
AWR的由来:

10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接

断开后,其原来的连接信息在v$session和v$session_wait中就会被删除;oracle10g及之后保留下了v$session_wait中的这些信息,并多了
v$active_session_history(ASH)视图,记录每个活动session在v$session_wait中最近10次的等待事件。



---阅读剩余部分---

ASH报告生成

ASH基于v$session每秒进行一次采样,记录当前活动会话等待事件(不活动的不采样)
ASH通过内存所记录的数据是有限的,为了保存历史记录,引入了AWR,ASH信息采样被写到AWR中,ASH写满了以后会将信息写到AWR负载库,ASH数据完全写出是不可能的,一般只写收集数据量的10%,
ASH内存中的信息通过v$active_session_history查询,而已经写出到AWR负载库的ASH信息,通过AWR基础表(wrh$active_session_hist)查询。
ASH以v$active_session_history视图为基础,生成ASH报表
ASH报告时间精确到分钟,提供比AWR更详细的历史会话信息,作为对AWR的补充
ASH生成举例如下:
以oracle用户登陆db,进入控制台

sqlplus / as sysdba






---阅读剩余部分---

MySQL中group_concat长度限制

GROUP_CONCAT参数默认值是1024,拼接的字符串的长度字节超过1024 则会被截断,数据量大的时候需要修改下字符大小:
查看group_concat 默认的长度:

mysql> show variables like 'group_concat_max_len';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+
1 row in set

修改默认字符大小

   1).在MySQL配置文件my.cnf的[mysqld]段加上
   group_concat_max_len = 4294967295 #最大长度
   2).直接控制台上设置立即生效
   SET GLOBAL group_concat_max_len=4294967295;
   SET SESSION group_concat_max_len=4294967295;

MySQL5.7不要设置这两个参数为-1,设置为-1后,group_concat_max_len值会变成4,即最小值。
参加官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len

kafka Failed to send messages after 10 tries 问题解决

Tomcat工程报错如下:

2017-12-25 13:28:44,594 [dataQueueConsumer-3:ERROR] com.plocc.dc.consumer.FormatConsumer - kafka.common.FailedToSendMessageException: Failed to send messages aft
er 10 tries.
2017-12-25 13:28:44,489 [dataQueueConsumer-3:ERROR] kafka.producer.async.DefaultEventHandler - Failed to collate messages by topic, partition due to: Failed to f
etch topic metadata for topic: wifi.wifiuseri

从wifi车场推送回来的数据,无法写入kafka订阅里面,解决步骤:
1、先确认kafka几台机器的内网使用主机名能否正常通信,
ping z1 看主机名能否ping通;

2、检查kakfa能否正常列出主题

/usr/local/app/msg_server/kafka/0.8.2.1/bin/kafka-topics.sh --list --zookeeper k1:2181,k2:2181

3、查看/usr/local/app/msg_server/kafka/0.8.2.1/config/consumer.properties 文件
将zookeeper.connect=127.0.0.1:2181修改为zookeeper.connect=z1:2181
这里的z1主机名对应本机内网IP,依次将其他2个节点也修改,最后重启下kafka,同时web应用服务器的host里面也应该要有z1的解析,确认以上3点以后即可解决。

MySQL使用MySQLdump导出所有库

导出所有数据库
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 --lock-all-tables --all-databases > /tmp/all.sql
导入数据库
/usr/local/mysql/bin/mysqldu -u用户名 -p密码 < /tmp/all.sql

导出指定库,排除不导出的库

#!/bin/bash
USER="用户名"
PASSWORD="密码" 
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
        echo "Dumping database: $db"
        mysqldump -u $USER -p$PASSWORD --databases $db > `date +%Y%m%d`.$db.sql
    fi
done

备份所有用户名密码

mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \
while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql

Navicat链接SQLServer时注意事项

Navicat连接远程sqlserver数据库需要安装sqlserver客户端,不过navicat会自动从sqlserver服务器上去下载安装软件,安装过程也是一直点下一步即可,其中“主机名”中要注意了。我们可以填写:IP,端口号的形式也可以直接填写IP。
如果SQLServer修改了端口号,就要以 IP,端口号 的形式链接,默认SqlServer 的1433端口可以不用带;
如下图示:
linke.png
IP后面跟端口号,中间用逗号链接相连,切记。

Oracle中修改表空间数据文件路径的两个方法

Oracle数据库的数据文件的位置和信息都被记录在控制文件中,rm或cp命令是不会也不可能更改控制文件记录的,这时必须通过alter操作去更改刷新数据库控制文件中数据文件的相关信息,以此确保数据库能够正常运行:
方法1:
1.将表空间脱机

alter tablespace mars_base_data offline;

2.复制数据文件到新的目录

cp /data/app/oracle/oradata/test.dbf /data2/app/oracle/oradata/test.dbf


---阅读剩余部分---

Oracle修改表空间大小并设置为自动增长

Oracle我在创建表空间的时候初始化大小为200M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错,解决方法是扩展表空间。
查看数据文件名及数据文件存放路径:

select * from v$dbfile;

查看表空间的名称及大小

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 

查看表空间物理文件的名称及大小

SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

---阅读剩余部分---

Oralce11g:ORA-06153:表xx无法通过8192(在表空间xx中) 扩展

ORA-06153这个类型的错误是由于表空间不足导致的,可以使用下面的SQL查询表空间:

SELECT
     A.tablespace_name
    ,A.bytes /1024/1024 AS "表空间大小(M)"
    ,( A.bytes - B.bytes )/1024/1024 AS "已用空间(M)"
    ,B.bytes / 1024 / 1024 AS "空闲空间(M)"
    ,Round((( A.bytes - B.bytes ) / A.bytes ) * 100, 2) AS "使用率"
FROM  
    (SELECT tablespace_name ,SUM(bytes) bytes
       FROM dba_data_files
   GROUP BY tablespace_name) A,
    (SELECT tablespace_name, SUM(bytes) bytes, Max(bytes) largest
       FROM dba_free_space
   GROUP BY tablespace_name) B
WHERE A.tablespace_name = B.tablespace_name
ORDER BY (( A.bytes - B.bytes)/A.bytes) DESC

当查找完之后显示表空间的使用率为99.99%.

这时就需要检查这个表空间是否自动扩展,如果是自动扩展,继续检查最大的扩展空间,如果已经达到最大扩展空间,这是就需要DBA增加空间。

select FILE_ID,FILE_NAME,tablespace_name,AUTOEXTENSIBLE,INCREMENT_BY 
from dba_data_files 
where tablespace_name='xxx_name' 
ORDER BY FILE_ID DESC

给POWERDESK表空间增加30G空间

ALTER TABLESPACE POWERDESK ADD DATAFILE '/oracle/oradata/powerdes/powerdesk04.dbf' SIZE 30G; 

Oracle启动的时候报 ORA-27154、ORA-27300、ORA-27301、ORA-27302 解决

SQL> startup
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates

ORA-2715:
ORA-27154: post/wait create failed
Cause: internal error, multiple post/wait creates attempted simultaneously
Action: check errno and contact Oracle Support

解决方法:
调整/etc/sysctl.conf,修改kernel.sem为

kernel.sem =5010 641280 5010 128
sysctl -p

生效,然后在启动即可,一般是该参数和安装oracle时不一致引起的·

Oracle查询所有序列/触发器、存储过程、视图、表

方法一:
Select object_name From user_objects Where object_type='TRIGGER'; --所有触发器

Select object_name From user_objects Where object_type='PROCEDURE'; --所有存储过程

Select object_name From user_objects Where object_type='VIEW'; --所有视图

Select object_name From user_objects Where object_type='TABLE'; --所有表

SELECT text FROM ALL_SOURCE where TYPE='TRIGGER' AND NAME ='TRIG_LOGOFF_AUDIT'; --查询TRIG_LOGOFF_AUDIT触发器内容


---阅读剩余部分---

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它