33.linux进程管理神器lsof,lsof语法详解,输出详解,获取网络连接信息,获取用户打开文件信息,获取命令/进程的所作事情,获取文件上的信息

linux进程管理神器lsof,lsof语法详解,输出详解,获取网络连接信息,获取用户打开文件信息,获取命令/进程的所作事情,获取文件上的信息。

文章目录

  • lsof介绍语法
    • 用途概览
    • 语法选项
    • 安装
    • 输出详解
  • 获取网络连接信息
    • 语法
    • 获取ipv6信息
    • 获取UDP连接信息
    • 获取Tcp连接信息
    • 获取指定端口信息
    • 获取指定主机连接信息
    • 获取指定主机上特定端口信息
    • 查找已开放监听端口的信息
    • 显示端口范围的打开的连接
    • 查找已连接的客户端信息
  • 获取用户打开文件信息
    • 查看用户打开了什么
    • 除指定用户以外的其它用户所做事情
    • 杀掉指定用户的所有进程
  • 获取命令/进程的所作事情
    • 查看命令所作的事情
    • 查看命令对应的进程号
    • 查看进程打开的文件
  • 获取文件上的信息
    • 获取文件上的进程
    • 获取当前目录的子文件进程信息
    • 获取当前目录的所有子文件信息
  • 总结
  • 友情链接


lsof介绍语法

用途概览

lsof在linux当中非常有用。使用它来获得你系统上文件设备信息,了解指定的用户在指定的地点正在使用信息,或者进程正在使用什么文件或网络连接。

语法选项

lsof [ -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-f
       [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ]
       [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ]
       [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]

如下选项仅做了解,重点是熟悉它具体的用法

  • -a 指示其它选项之间为与的关系
  • -c <进程名> 输出指定进程所打开的文件
  • -d <文件描述符> 列出占用该文件号的进程
  • +d <目录> 输出目录及目录下被打开的文件和目录(不递归)
  • +D <目录> 递归输出及目录下被打开的文件和目录
  • -i <条件> 输出符合条件与网络相关的文件
  • -n 不解析主机名
  • -p <进程号> 输出指定 PID 的进程所打开的文件
  • -P 不解析端口号
  • -t 只输出 PID
  • -u 输出指定用户打开的文件
  • -U 输出打开的 UNIX domain socket 文件
  • -h 显示帮助信息
  • -v 显示版本信息

安装

[root@prometheus ~]# yum install lsof
...

Installed:
  lsof.x86_64 0:4.87-6.el7                                                                             

Complete!

输出详解

root@zaishu ~]# lsof | more
COMMAND    PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1         root  cwd       DIR                8,3      4096         64 /
systemd      1         root  rtd       DIR                8,3      4096         64 /
systemd      1         root  txt       REG                8,3   1632744     425346 /usr/lib/systemd/systemd
systemd      1         root  mem       REG                8,3     20064      42041 /usr/lib64/libuuid.so.1.3.0
systemd      1         root  mem       REG                8,3    265576      42045 /usr/lib64/libblkid.so.1.1.0
systemd      1         root  mem       REG                8,3     90176     438708 /usr/lib64/libz.so.1.2.7
systemd      1         root  mem       REG                8,3    157424      42107 /usr/lib64/liblzma.so.5.2.2
  • COMMAND:进程
  • PID:进程标识符
  • PPID:父进程标识符
  • USER:进程所有者
  • PGID:进程所属组
  • FD:文件描述符,应用程序通过文件描述符识别该文件。
    (1)cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。
    (2)txt :该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序。
    (3)lnn:library references (AIX);
    (4)er:FD information error (see NAME column);
    (5)jld:jail directory (FreeBSD);
    (6)ltx:shared library text (code and data);
    (7)mxx :hex memory-mapped type number xx.
    (8)m86:DOS Merge mapped file;
    (9)mem:memory-mapped file;
    (10)mmap:memory-mapped device;
    (11)pd:parent directory;
    (12)rtd:root directory;
    (13)tr:kernel trace file (OpenBSD);
    (14)v86 VP/ix mapped file;
    (15)0:表示标准输出
    (16)1:表示标准输入
    (17)2:表示标准错误
    一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等
    (1)u:表示该文件被打开并处于读取/写入模式
    (2)r:表示该文件被打开并处于只读模式
    (3)w:表示该文件被打开并处于
    (4)空格:表示该文件的状态模式为unknow,且没有锁定
    (5)-:表示该文件的状态模式为unknow,且被锁定
    同时在文件状态模式后面,还跟着相关的锁
    (1)N:for a Solaris NFS lock of unknown type;
    (2)r:for read lock on part of the file;
    (3)R:for a read lock on the entire file;
    (4)w:for a write lock on part of the file;(文件的部分写锁)
    (5)W:for a write lock on the entire file;(整个文件的写锁)
    (6)u:for a read and write lock of any length;
    (7)U:for a lock of unknown type;
    (8)x:for an SCO OpenServer Xenix lock on part of the file;
    (9)X:for an SCO OpenServer Xenix lock on the entire file;
    (10)space:if there is no lock.

TYPE:文件类型,如DIR、REG等,常见的文件类型
(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字

DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

获取网络连接信息

可以代替netstat来获取网络连接信息

语法

语法: lsof -i[4|6] [protocol][@hostname|hostaddr][:service|port]

获取ipv6信息

[root@prometheus ~]# lsof -i 6
COMMAND   PID          USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node_expo 818 node_exporter    3u  IPv6  19648      0t0  TCP *:jetdirect (LISTEN)
sshd      821          root    4u  IPv6  19372      0t0  TCP *:ssh (LISTEN)
master    982          root   14u  IPv6  20250      0t0  TCP localhost:smtp (LISTEN)

获取UDP连接信息

[root@prometheus ~]# lsof -iUDP
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dhclient 639 root    6u  IPv4  18474      0t0  UDP *:bootpc 

获取Tcp连接信息

[root@prometheus ~]# lsof -iTCP
COMMAND    PID          USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node_expo  818 node_exporter    3u  IPv6  19648      0t0  TCP *:jetdirect (LISTEN)
sshd       821          root    3u  IPv4  19363      0t0  TCP *:ssh (LISTEN)
sshd       821          root    4u  IPv6  19372      0t0  TCP *:ssh (LISTEN)
master     982          root   13u  IPv4  20249      0t0  TCP localhost:smtp (LISTEN)
master     982          root   14u  IPv6  20250      0t0  TCP localhost:smtp (LISTEN)
sshd      1106          root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)

获取指定端口信息

[root@prometheus ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     821 root    3u  IPv4  19363      0t0  TCP *:ssh (LISTEN)
sshd     821 root    4u  IPv6  19372      0t0  TCP *:ssh (LISTEN)
sshd    1106 root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)

获取指定主机连接信息

[root@prometheus ~]# lsof -i @192.168.47.1
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1106 root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)

获取指定主机上特定端口信息

[root@prometheus ~]# lsof -i @192.168.47.1:51535
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1106 root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)

查找已开放监听端口的信息

[root@prometheus ~]# lsof -i -sTCP:LISTEN
COMMAND   PID          USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node_expo 818 node_exporter    3u  IPv6  19648      0t0  TCP *:jetdirect (LISTEN)
sshd      821          root    3u  IPv4  19363      0t0  TCP *:ssh (LISTEN)
sshd      821          root    4u  IPv6  19372      0t0  TCP *:ssh (LISTEN)
master    982          root   13u  IPv4  20249      0t0  TCP localhost:smtp (LISTEN)
master    982          root   14u  IPv6  20250      0t0  TCP localhost:smtp (LISTEN)

或者用grep 进行过滤查找

[root@prometheus ~]# lsof -i | grep -i LISTEN
node_expo  818 node_exporter    3u  IPv6  19648      0t0  TCP *:jetdirect (LISTEN)
sshd       821          root    3u  IPv4  19363      0t0  TCP *:ssh (LISTEN)
sshd       821          root    4u  IPv6  19372      0t0  TCP *:ssh (LISTEN)
master     982          root   13u  IPv4  20249      0t0  TCP localhost:smtp (LISTEN)
master     982          root   14u  IPv6  20250      0t0  TCP localhost:smtp (LISTEN)

显示端口范围的打开的连接

 lsof  -i @zaishu.cn:1521-1555

查找已连接的客户端信息

[root@prometheus ~]# lsof  -i -sTCP:ESTABLISHED
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1106 root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)
[root@prometheus ~]# lsof -i |grep ESTABLISHED
sshd      1106          root    3u  IPv4  20846      0t0  TCP prometheus.zaishu.cn:ssh->192.168.47.1:51535 (ESTABLISHED)

获取用户打开文件信息

查看用户打开了什么

[root@prometheus ~]# lsof -u zhangsan
COMMAND  PID     USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAME
bash    1236 zhangsan  cwd    DIR    8,3        97 101205642 /home/zhangsan
bash    1236 zhangsan  rtd    DIR    8,3       244        64 /
bash    1236 zhangsan  txt    REG    8,3    964536 100880724 /usr/bin/bash
bash    1236 zhangsan  mem    REG    8,3 106176928 102078862 /usr/lib/locale/locale-archive
bash    1236 zhangsan  mem    REG    8,3     61560       681 /usr/lib64/libnss_files-2.17.so
bash    1236 zhangsan  mem    REG    8,3   2156592       663 /usr/lib64/libc-2.17.so
bash    1236 zhangsan  mem    REG    8,3     19248       669 /usr/lib64/libdl-2.17.so
bash    1236 zhangsan  mem    REG    8,3    174576     43970 /usr/lib64/libtinfo.so.5.9
bash    1236 zhangsan  mem    REG    8,3    163312       656 /usr/lib64/ld-2.17.so
bash    1236 zhangsan  mem    REG    8,3     26970     43887 /usr/lib64/gconv/gconv-modules.cache
bash    1236 zhangsan    0u   CHR  136,1       0t0         4 /dev/pts/1
bash    1236 zhangsan    1u   CHR  136,1       0t0         4 /dev/pts/1
bash    1236 zhangsan    2u   CHR  136,1       0t0         4 /dev/pts/1
bash    1236 zhangsan  255u   CHR  136,1       0t0         4 /dev/pts/1
vi      1256 zhangsan  cwd    DIR    8,3        97 101205642 /home/zhangsan
vi      1256 zhangsan  rtd    DIR    8,3       244        64 /
vi      1256 zhangsan  txt    REG    8,3    928200 100674173 /usr/bin/vi
vi      1256 zhangsan  mem    REG    8,3     61560       681 /usr/lib64/libnss_files-2.17.so
vi      1256 zhangsan  mem    REG    8,3 106176928 102078862 /usr/lib/locale/locale-archive
vi      1256 zhangsan  mem    REG    8,3    142144       689 /usr/lib64/libpthread-2.17.so
vi      1256 zhangsan  mem    REG    8,3     19896     85791 /usr/lib64/libattr.so.1.1.0
vi      1256 zhangsan  mem    REG    8,3     19248       669 /usr/lib64/libdl-2.17.so
vi      1256 zhangsan  mem    REG    8,3    402384     43975 /usr/lib64/libpcre.so.1.2.0
vi      1256 zhangsan  mem    REG    8,3   2156592       663 /usr/lib64/libc-2.17.so
vi      1256 zhangsan  mem    REG    8,3     37064     90849 /usr/lib64/libacl.so.1.1.0
vi      1256 zhangsan  mem    REG    8,3    174576     43970 /usr/lib64/libtinfo.so.5.9
vi      1256 zhangsan  mem    REG    8,3    155744     43984 /usr/lib64/libselinux.so.1
vi      1256 zhangsan  mem    REG    8,3    163312       656 /usr/lib64/ld-2.17.so
vi      1256 zhangsan    0u   CHR  136,1       0t0         4 /dev/pts/1
vi      1256 zhangsan    1u   CHR  136,1       0t0         4 /dev/pts/1
vi      1256 zhangsan    2u   CHR  136,1       0t0         4 /dev/pts/1
vi      1256 zhangsan    3u   REG    8,3     12288 101205640 /home/zhangsan/.x.swp

除指定用户以外的其它用户所做事情

[root@prometheus ~]# lsof -u ^root

杀掉指定用户的所有进程

[root@prometheus ~]# kill  -9  `lsof -t -u zhangsan`

获取命令/进程的所作事情

查看命令所作的事情

可以查看调用命令时,会用到哪些文件、端口、网络连接

[root@prometheus ~]# lsof -c sshd
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
sshd     821 root  cwd    DIR                8,3      244       64 /
.....
sshd     821 root  mem    REG                8,3  1299904    90928 /usr/lib64/libnss3.so

查看命令对应的进程号

[root@prometheus ~]# lsof -t -c  sshd
821
1106
1218

查看进程打开的文件

[root@zaishu ~]# lsof -p 1306
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
sshd    1306 root  cwd    DIR                8,3     4096       64 /
sshd    1306 root  rtd    DIR                8,3     4096       64 /
sshd    1306 root  txt    REG                8,3   852856   557496 /usr/sbin/sshd
sshd    1306 root  mem    REG                8,3   773872    41701 /usr/lib64/libfreeblpriv3.so
sshd    1306 root  mem    REG                8,3    15488 67378458 /usr/lib64/security/pam_lastlog.so
sshd    1306 root  mem    REG                8,3    15648   441672 /usr/lib64/libpam_misc.so.0.82.0
sshd    1306 root  mem    REG                8,3   309248 67355593 /usr/lib64/security/pam_systemd.so
sshd    1306 root  mem    REG                8,3    19616 67378459 /usr/lib64/security/pam_limits.so
sshd    1306 root  mem    REG                8,3    11168 67378457 /usr/lib64/security/pam_keyinit.so
sshd    1306 root  mem    REG                8,3    40800 67378466 /usr/lib64/security/pam_namespace.so
sshd    1306 root  mem    REG                8,3    11248 67378462 /usr/lib64/security/pam_loginuid.so
sshd    1306 root  mem    REG                8,3    19784 67378474 /usr/lib64/security/pam_selinux.so
sshd    1306 root  mem    REG                8,3    44600   425438 /usr/lib64/libcrack.so.2.9.0
sshd    1306 root  mem    REG                8,3    23832   441666 /usr/lib64/libpwquality.so.1.0.2
sshd    1306 root  mem    REG                8,3    11232 67365311 /usr/lib64/security/pam_pwquality.so
sshd    1306 root  mem    REG                8,3     7000 67378468 /usr/lib64/security/pam_permit.so
sshd    1306 root  mem    REG                8,3    11160 67378461 /usr/lib64/security/pam_localuser.so
sshd    1306 root  mem    REG                8,3    11184 67378467 /usr/lib64/security/pam_nologin.so
....

获取文件上的信息

获取文件上的进程

[root@zaishu ~]# lsof /var/log/messages
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
rsyslogd  870 root    7w   REG    8,3    44371 33562503 /var/log/messages
tail     1359 root    3r   REG    8,3    44371 33562503 /var/log/messages

获取当前目录的子文件进程信息

只会打开当前目录下的文件,但不会打开子目录,用来显示目录下被进程开启的文件信息

[root@zaishu ~]# lsof +d /var/log/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
VGAuthSer 529 root    2w   REG    8,3    61640 34052441 /var/log/vmware-vgauthsvc.log.0
VGAuthSer 529 root    4w   REG    8,3    61640 34052441 /var/log/vmware-vgauthsvc.log.0
vmtoolsd  530 root    3w   REG    8,3  4638183 34052440 /var/log/vmware-vmsvc-root.log
rsyslogd  870 root    7w   REG    8,3    44705 33562503 /var/log/messages
rsyslogd  870 root    8w   REG    8,3      906 33562504 /var/log/secure
rsyslogd  870 root    9w   REG    8,3      190 33562501 /var/log/maillog
rsyslogd  870 root   10w   REG    8,3     1848 33956120 /var/log/cron

获取当前目录的所有子文件信息

搜索目录下的目录,打开/var文件夹以及其子目录搜寻,用来显示目录下被进程开启的文件

[root@zaishu ~]# lsof +D /var/
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
auditd     503    root    5w   REG    8,3  1933974  34052437 /var/log/audit/audit.log
VGAuthSer  529    root    2w   REG    8,3    61640  34052441 /var/log/vmware-vgauthsvc.log.0
VGAuthSer  529    root    4w   REG    8,3    61640  34052441 /var/log/vmware-vgauthsvc.log.0
vmtoolsd   530    root    3w   REG    8,3  4638183  34052440 /var/log/vmware-vmsvc-root.log
atd        544    root  cwd    DIR    8,3       31  33556985 /var/spool/at
dhclient   664    root    4w   REG    8,3      828  33561841 /var/lib/NetworkManager/dhclient-fb8dce63-06b0-31b5-96d3-39483edd2abf-ens34.lease
tuned      866    root    3w   REG    8,3    65274 101798505 /var/log/tuned/tuned.log
rsyslogd   870    root    7w   REG    8,3    44705  33562503 /var/log/messages
rsyslogd   870    root    8w   REG    8,3      906  33562504 /var/log/secure
rsyslogd   870    root    9w   REG    8,3      190  33562501 /var/log/maillog
rsyslogd   870    root   10w   REG    8,3     1848  33956120 /var/log/cron
master     968    root  cwd    DIR    8,3      201 101481385 /var/spool/postfix
master     968    root   10uW  REG    8,3       33  34007075 /var/spool/postfix/pid/master.pid
master     968    root   11uW  REG    8,3       33  67476735 /var/lib/postfix/master.lock
pickup     969 postfix  cwd    DIR    8,3      201 101481385 /var/spool/postfix
qmgr       970 postfix  cwd    DIR    8,3      201 101481385 /var/spool/postfix
anacron   1436    root  cwd    DIR    8,3       63 101423792 /var/spool/anacron
anacron   1436    root    3uW  REG    8,3        9 101423793 /var/spool/anacron/cron.daily

总结

linux进程管理神器lsof,lsof语法详解,输出详解,获取网络连接信息,获取用户打开文件信息,获取命令/进程的所作事情,获取文件上的信息

友情链接

MySQL性能优化_原理_实战

1、MySQL在金融互联网行业的企业级安装部署

目录 章节
版本说明 版本说明
安装MySQL规范 1 安装方式
2 安装用户
3 目录规范
MySQL 5.7 安装部署 1 操作系统配置
2 创建用户
3 创建目录
4 安装
5 配置文件
6 安装依赖包
7 配置环境变量
8 初始化数据库
9 重置密码
MySQL8 安装 MySQL8 安装
源码安装 1 安装依赖包
2 生成源码包
3 创建用户
4 编译安装
5 配置数据库
6 连接mysql
多实例部署及注意事项 1 多实例概念
2 多实例安装
3 mysqld_multi(多实例第二种安装方式)

2、mysql启动关闭原理和实战_及常见错误排查

目录 章节
生产中MySQL启动方式 1、 启动原理
2、参数文件默认位置及优先级
3、 以server方式启动
4、 mysqld_safe方式
5、 mysqld 方式
6、 systemctl 方式
关库 1、相关参数innodb_fast_shutdown
2、相关参数innodb_force_recovery
3、关闭mysql多种方式
常见MySQL启动失败案例 1.、目录权限
2、参数问题
3、配置文件
4、端口占用
5、误删二进制文件
6、undo表空间异常
7、binlog缓冲异常
MySQL启动失败排查方法 MySQL启动失败排查方法
连接MySQL数据库的方式 连接MySQL数据库的方式
MySQL数据库用户安全策略 1、初始化数据库
2、修改密码
3、删除无用的用户
4、mysql_secure_installation
找回丢失的用户密码 找回丢失的用户密码

3、MySQL字符集和校对规则

目录 章节
MySQL字符集和校验规则 MySQL字符集和校验规则
查看字符集方法 1、查看mysql支持的字符集
2、查看字符集的校对规则
3、查看当前数据库的字符集
4、查看当前数据库的校对规则
MySQL字符集设置 1、字符集设置层级关系
2、设置MySQL服务器级别字符集
3、设置创建对象的字符集
字符集案例 1、常用字符集每个汉字占用字节多少
2、大小案例
插入中文乱码解决 插入中文乱码解决
数据库常见字符集及如何选择字符集 数据库常见字符集及如何选择字符集
生产中如何彻底避免出现乱码 生产中如何彻底避免出现乱码

4、史上最详细的Mysql用户权原理和实战_生产案例

目录 章节
访问控制 1、连接验证(阶段一)
2、允许的连接
3、连接优先级
4、请求验证(阶段二)
用户管理 1、新增用户
2、修改用户
3、删除用户
4、查看用户
密码管理 1、密码修改
2、密码过期设置
3、set password
4、密码过期策略
5、密码插件
MySQL用户权限管理 1、权限粒度
2、显示账户权限
3、显示账户非权限属性
4、库级权限
5、表级权限
6、列级权限
7、权限回收
资源限制 1、用户创建指定配额
2、修改配额
MySQL用户权限案例 1、断掉已清理的用户
2、忘记密码
3、如何禁止一个ip段的某个用户登录
4、创建开发账号
5、创建复制账号
6、创建管理员账号

5、InnoDB引擎原理和实战_通俗易懂

目录 章节
缓冲池 1、默认引擎
2、设置缓冲池大小
3、优化缓冲池
4、管理缓冲池
5、数据页类型
线程 1、IO线程
2、主线程
index page index page
insert buffer page insert buffer page
重做日志 重做日志
回滚日志 回滚日志
checkpoint,刷写脏页check point checkpoint
关键特性 1、插入缓冲
2、数据写入可靠性提升技术-doublewrite
3、自适应哈希索引-AHI
innodb预读预写技术 预读写

6、MySQL文件详解_物理结构_逻辑结构_原理和案例

目录 章节
参数和配置文件 1、文件位置
2、查找参数
3、参数类型
4、参数修改
5、示例一
6、示例二
7、注意事项
错误日志文件 错误日志
通用日志 通用日志
慢查询日志 慢日志
binlog 1、记录什么
2、用途
3、开启和参数配置
4、日志查看
5、日志刷新
6、删除日志
7、日志分析(mysqlbinlog)
8、利用二进制日志文件恢复误删的表
InnoDB存储引擎表空间文件 表空间文件
主从同步相关文件 主从同步文件
套接字文件 套接字文件
pid 文件 pid 文件
redo log 1、redo初识
2、日志组
3、与oracle redo的区别
4、相关参数
5、和binlog的区别
6、redo 缓冲区(innodb_flush_log_at_trx_commit)
InnoDB存储引擎逻辑结构 1、表空间
2、段
3、区
4、页
表碎片清理 1、判断是否有碎片
2、整理碎片
表空间文件迁移 1、需求
2、操作

7、SQL编程开发与优化事项

目录 章节
常用语句 1、导入数据
2、库操作
3、表操作
4、数据操作
5、use性能影响
6、delete、truncate、drop的区别
7、SQL语句分类
数据类型与性能 1、整型
2、浮点型
3、字符串类型
4、日期类型
MySQL约束 1、unsigned/signed
2、not null
3、count(*) 为什么慢
4、default
5、unique
6、 auto_increment
7、primary key
SQL编程高级 1、查询Syntax
2、查询列
3、where子句
4、group by … having子句
5、order by子句
6、limit子句(分页)
7、聚合函数
8、合并查询
9、多表查询
10、子查询
表的元数据库管理 1、统计应用库哪些表没有使用innodb存储引擎
2、如何查看表中是否有大对象
3、统计数据库大小
4、统计表的大小

8、MySQL索引原理和案例

目录 章节
MySQL索引与二分查找法 1、什么是索引
2、索引的优缺点
3、索引的最大长度
4、二分查找法:折半查找法
5、mysql一张表存多少数据后,索引性能就会下降?
剖析b+tree数据结构 1、B和B+树的区别
2、索引树高度
3、非叶子节点
4、指针
5、叶子节点
6、双向指针
7、b+tree插入操作
8、b+tree删除操作
相辅相成的聚集索引和辅助索引 1、聚集索引
2、聚集索引特点
3、聚集索引的优势
4、辅助索引
覆盖索引与回表查询 1、回表查询
2、覆盖索引
创建高性能的主键索引 1、主键索引创建的原则
2、主键索引的特点
3、为什么建议使用自增列作为主键
唯一索引与普通索引的性能差距 1、唯一索引特点
2、普通索引特点
3、唯一索引与普通索引的性能差距
前缀索引带来的性能影响 1、作用
2、坏处
如何使用联合索引 1、什么是联合索引
2、创建原则
3、排序
Online DDL影响数据库的性能和并发 1、5.6版本之前
2、新版本
3、online ddl语法
4、相关参数
5、示例
6、影响
pt-ocs原理与应用 1、安装pt-osc
2、pt-osc语法
3、案例
4、pt-osc原理
生产中索引的管理 1、建表时创建索引
2、建表后创建索引
3、查看索引
SQL语句无法使用索引的情况 1、where条件
2、联合索引
3、联表查询
4、其他情况

9、information_schema和sys中性能查看

目录 章节
最常用的STATISTICS和TABLES 1、STATISTICS:用于存放索引的信息
2、TABLES:用于存放库表的元数据信息
判断索引创建是否合理 1、选择性
2、索引创建的建议
检查联合索引创建是否合理 1、联合索引创建是否合理
2、有了联合索引(a,b),还需要单独创建a索引吗?
如何查找冗余索引 查找冗余索引
查找产生额外排序的sql语句 额外排序的sql语句
查找产生临时表的sql语句 临时表的sql语句
全表扫描的sql语句 全表扫描的sql语句
统计无用的索引 无用的索引
索引统计信息 1、存储索引统计信息
2、如何查看索引统计信息

10、MySQL优化器算法与执行计划

目录 章节
简单嵌套查询算法-simple nested-loop join simple nested-loop join
基于索引的嵌套查询算法-index nested-loop join index nested-loop join
基于块的嵌套查询算法- block nested-loop join block nested-loop join
Multi-Range Read MRR
bached key access join BKA
mysql三层体系结构 体系结构
Index Condition Pushdown 索引条件下推
一条查询SQL语句是怎样运行的 查询SQL语句
一条更新SQL语句是怎样运行的 更新SQL语句
MySQL长连接与短连接的选择 1、相关参数
2、断开连接
执行计划explain 1、语法
2、执行计划解析

11、MySQL查询优化

目录 章节
MySQL查询优化技术 概览
子查询优化 1、优化器自动优化
2、优化措施:子查询合并
3、优化措施:子查询上拉技术
外连接消除 外连接消除
生产环境不使用join联表查询 不使用join
group by分组优化 1、group by执行流程
2、为什么group by要创建临时表
order by排序优化 排序优化
MySQL性能抖动问题 性能抖动问题
count(*)优化 count(*)优化
磁盘性能基准测试 1、安装sysbench
2、生成文件
3、测试文件io
4、清除文件
MySQL基准测试 1、生成数据
2、测试(读)
3、测试(写)
4、清理数据

12、事务原理和实战

目录 章节
认识事务 认识事务
事务控制语句 1、开启事务
2、事务提交
3、事务回滚
事务的实现方式 1、原子性
2、一致性
3、隔离性
4、持久性
purge thread线程 purge thread线程
事务统计QPS与TPS 1、QPS
2、TPS
事务隔离级别 1、隔离级别
2、查看隔离级别
3、设置隔离级别
4、不同隔离级别下会产生什么隔离效果
事务组提交group commit 组提交
事务两阶段提交 两阶段提交
MVCC多版本并发控制 1、MVCC原理
2、MVCC案例

13、锁的原理和应用

目录 章节
认识锁 1、锁的作用
2、加锁的过程
3、锁对象:事务
innodb行锁 1、行锁类型
2、共享锁(S锁)
3、排他锁(X锁)
索引对行锁粒度的影响 1、行锁粒度有哪些
2、在RC隔离级别下不同索引产生的锁的范围
3、RR隔离级别下不同索引产生锁的范围
FTWRL全局读锁 FTWRL全局读锁
innodb表锁 innodb表锁
innodb意向锁与MDL锁 1、意向锁
2、意向锁作用
3、意向锁冲突情况
4、MDL锁
自增锁 自增锁
插入意向锁 插入意向锁
死锁 1、什么是死锁
2、相关参数
3、避免死锁
4、锁的状态
两阶段锁协议 两阶段锁协议

14、慢查询原理和实战_快速优化方法_优化工具

目录 章节
1. 系统状态 show status
2. 慢查询 2.1 慢查询开启
2.2 简单示例
2.3 数据准备
3. mysqldumpslow 3.1 语法
3.2 常见用法
4. pt-query-digest 4.1 安装
4.2 语法选项
4.3 报告解读
4.4 用法示例
5. 优化工具(soar) 5.1 安装配置
5.2 添加数据库
5.3 语句优化

15、备份恢复原理和实战_逻辑备份_物理备份_金融行业备份还原脚本

目录 章节
1.生产中备份方式 1.1 物理备份与逻辑备份
1.2 联机与脱机备份
1.3 完整备份与增量备份
1.4 常用命令
2.mysqldump备份 2.1 相关参数
2.2 备份所有数据库
2.3 备份指定数据库
2.4 备份指定表
2.6 只导出结构
2.7 只导出数据
2.8 --tab(生成文本,类似load)
2.8 mysqldump原理
2.9 binlog异步备份
2.10 利用mysqldump全备及binlog恢复数据
3.xtrabackup 3.1 Xtrabackup安装
3.2 原理
3.2 备份过程
3.4 恢复原理
3.3 相关参数
3.4 xtrabackup相关文件
3.5 备份示例
3.6 还原示例
4.binlog备份和恢复(数据库恢复) 4.1 找到恢复时间点
4.2 增量恢复
5. 生产环境的备份恢复实战 5.1 实施部署
5.1.1 环境清单
5.1.2 备份目的
5.1.3 备份说明
5.1.4 实施步骤
5.1.5 全备脚本
5.1.6 差异备份脚本
5.2 实施部署备份还原
5.2.1 Xtraback还原全量/差异备份
5.2.2 故障点数据恢复
5.2.3 增量恢复

16、主从复制,gtid,并行复制_半同步复制_实操案例_常用命令_故障处理

目录 章节
1.认识主从复制 1.1 主从复制原理深入讲解
1.2 主从复制相关参数
1.3.主从复制架构部署
1.4从库状态详解
1.5 .过滤复制
2 .gtid复制 2.1 什么是GTID?
2.2 GTID主从配置
2.5 gtid维护
2.4 GTID的特点
2.3 工作原理
2.4 gtid相关状态行和变量
3. 并行复制 3.1 延迟的原因
3.2 并行复制设置
3.3 查看并行复制
4. 增强半同步复制 4.1 异步复制
4.2 半同步复制
4.3 增强半同步复制
4.4 配置增强半同步
5. 案例 5.1 主库删除操作导致sql线程关闭案例
5.2 主从复制中断解决方案及案例
5.3 延迟复制
5.4 主库drop误操作利用延迟复制恢复案例
6 常用命令 6.1 启动线程
6.2 关闭线程
6.3 查看
6.4 重置
6.5 主从数据一致性校验

17、MySQL高可用和读写分离架构
MHA

目录 章节
MHA 介绍
架构和相关组件 架构和相关组件
工作流程 工作流程
MHA高可用架构部署 1、环境准备
2、软件安装
3、创建软链接
4、配置各节点互信
5、节点免密验证
6、mha管理用户
7、配置文件
8、状态检查
9、开启MHA
主库宕机故障模拟及处理 主库宕机故障模拟及处理
MHA VIP自动切换 VIP自动切换
MHA主从数据自动补足 MHA主从数据自动补足

Atlas

目录 章节
Atlas读写分离高性能架构 介绍
安装配置 安装配置
配置注解 配置注解
启动和关闭 启动和关闭
读写分离架构应用 读写分离架构应用
创建应用用户 创建应用用户
Atlas在线管理 Atlas在线管理
读写分离避坑指南 读写分离避坑指南

18、MySQL分库分表_原理实战

目录 章节
1.MyCAT分布式架构入门及双主架构 1.1 主从架构
1.2 MyCAT安装
1.3 启动和连接
1.4 配置文件介绍
2.MyCAT读写分离架构 2.1 架构说明
2.2 创建用户
2.3 schema.xml
2.4 连接说明
2.5 读写测试
2.6 当前是单节点
3.MyCAT高可用读写分离架构 3.1 架构说明
3.3 schema.xml(配置)
3.4 文件详解
3.4.1 schema标签
3.4.2 table标签
3.4.3 dataNode标签
3.4.4 dataHost
3.4 读写测试
3.5 故障转移
4.MyCAT垂直分表 4.1 架构
4.2 新建表
4.3 配置mycat
4.4 验证
5 MyCAT水平分表-范围分片 5.1 新建表
5.2 schema.xml
5.2 rule.xml
5.3 autopartition-long.txt
5.4 验证
6. MyCAT水平分表-取模分片 取模分片
7. MyCAT水平分表-枚举分片 枚举分片
8. MyCAT全局表与ER表 全局与ER表
8.1 全局表 8.1.1 特性
8.1.2 建表
8.1.3 配置
8.1.4 验证
8.1.5 分析总结(执行计划)
8.2 ER表 8.2.1 特性
8.2.2 建表
8.2.3 配置
8.2.4 测试验证,子表是否跟随父表记录分片
8.2.5 分析总结(执行计划)

19、基准性能测试_sysbench

目录 章节
1. sysbench 1.1 用途
1.2 安装
1.3 版本
1.4 查看帮助
1.5 测试过程阶段
2 CPU 性能测试 2.1 测试原理
2.2 查看帮助
2.3 测试
3. 内存性能测试 3.1 查看帮助信息
3.2 测试过程
4.磁盘性能基准测试 4.1 查看帮助
4.2 生成文件(prepare)
4.3 测试文件io(run)
4.4 结果分析
4.5 清除文件(cleanup)
5. 线程测试 5.1 查看帮助信息
5.2 测试过程
6. MySQL基准测试 6.1 语法参数
6.2 生成数据
6.3 测试(读)
6.4 测试(写)
6.5 清理数据

你可能感兴趣的:(linux,运维,服务器,bash,centos)