本章详细讲解:文件挂载,卸载,mount,语法选项示例,挂载光盘,挂载分区,挂载u盘,挂载移动硬盘,卸载,fuser的使用和示例

文章目录

  • mount
    • 语法选项
  • fstab文件
    • /etc/fstab文件的作用
    • 挂载的限制
    • 参数详解
    • mtab 文件的作用(了解)
  • mount 示例
    • mount 或者 mount -l 显示系统中已挂载设备信息
    • mount -a
    • 挂载分区
    • 使用标签和只读的方式挂载
    • 设置特殊权限
  • 挂载光盘
    • 光盘真正对应的设备
  • 挂载U盘或移动硬盘
    • 挂载U盘
    • 挂载移动硬盘
  • 卸载
    • fuser
    • 示例
  • 总结
  • 友情链接

mount

Linux mount命令详解:挂载文件
Linux中文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除关联称之为“卸载”。

语法选项

用法:
mount [-lhV]
mount -a [选项]
mount [选项] <device> <挂载点目录>
mount <操作> <挂载点>
  • device:指明要挂载的设备,设备名可用如下形式表示;
    (1) 设备文件名:例如/dev/sdb1
    (2) 卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
    (3) UUID, -U ‘UUID’:例如 -U ‘0e50523c-43f1-45e7-85c0-a126711d406e’

卷标和UUID可以通过 blkid 查看,具体语法和用途可查看 https://blog.csdn.net/wangzhicheng987/article/details/121859630

[root@zaishu ~]# blkid
/dev/sda1: UUID="cfbd122f-1673-4180-b520-aa7e07be522a" TYPE="xfs"
/dev/sda2: UUID="16f02c42-631b-4352-af76-6d5827b180cf" TYPE="swap"
/dev/sda3: UUID="60ca7c99-54c3-4a2a-93c4-5a5f61895c8b" TYPE="xfs"
/dev/sdb5: UUID="d4fdd717-0caa-4d5c-9e9a-8d36b9eea29e" TYPE="ext4"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
  • 挂载点目录
    事先存在;建议使用空目录;
    进程正在使用中的设备无法被卸载;挂载点目录不可被其他进程使用到;挂载点下原有文件将被隐藏。

  • 常用选项:

选项 说明
-t type: 指定要挂载的设备上的文件系统类型; Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
-r: readonly,只读挂载;
-rw: read and write, 读写挂载;
-n: 不更新/etc/mtab;在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单用户维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
-a: 自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L ‘LABEL’: 以卷标指定挂载设备;除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
-U ‘UUID’: 以UUID指定要挂载的设备;
-B, --bind: 绑定目录到另一个目录上;注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
-o 特殊选项: 可以指定挂载的额外选项,比如读写权限、同步/异步等。;
  • [-o 特殊选项]
选项 功能
rw/ro 是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev 是否支持在此文件系统上使用设备文件 即能否从该文件系统的 block 文件中提取数据,默认是 dev。
auto/noauto 是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid 设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec 设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser 设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount 重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
  • 对挂载点的操作:
操作 功能
-B, --bind 挂载其他位置的子树(同 -o bind)
-M, --move 将子树移动到其他位置
-R, --rbind 挂载其他位置的子树及其包含的所有挂载
–make-shared 将子树标记为 共享
–make-slave 将子树标记为 从属
–make-private 将子树标记为 私有
–make-unbindable 将子树标记为 不可绑定
–make-rshared 递归地将整个子树标记为 共享
–make-rslave 递归地将整个子树标记为 从属
–make-rprivate 递归地将整个子树标记为 私有
–make-runbindable 递归地将整个子树标记为 不可绑定

fstab文件

/etc/fstab文件的作用

挂载之后需要把分区挂载信息写入/etc/fstab这个文件中,让其永久生效。
开机时会主动读取/etc/fstab这个文件中的内容挂载磁盘。这样将磁盘挂载信息写入文件中就不需要每次开机启动之后手工进行挂载。

挂载的限制

  • 1、根目录必须挂载的,其他目录都是由根目录 /衍生出来。
  • 2、挂载点必须是已经存在。
  • 3、挂载点同一时间只能被挂载一次
  • 4、所有分区在同一时间只能挂载一次
  • 5、进行卸载,挂载点当中原先子目录或文件会消失。

参数详解

[root@zaishu ~]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Thu Oct  8 19:56:44 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=60ca7c99-54c3-4a2a-93c4-5a5f61895c8b /                       xfs     defaults        0 0
UUID=cfbd122f-1673-4180-b520-aa7e07be522a /boot                   xfs     defaults        0 0
UUID=16f02c42-631b-4352-af76-6d5827b180cf swap                    swap    defaults        0 0
  • 第1列: 需要挂载的设备
    可以用【磁盘设备文件、设备label、设备uuid】

  • 使用设备名和uuid作为标识的不同
    使用设备名称(/dev/sda)来挂载分区时是固定的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。
    至于UUID,每个分区被格式化以后都会有一个UUID作为唯一的标识号。使用uuid挂载的话就不用担心会发生错乱的问题了。

  • 查看分区的label和uuid

[root@zaishu ~]# blkid
/dev/sda1: UUID="cfbd122f-1673-4180-b520-aa7e07be522a" TYPE="xfs"
/dev/sda2: UUID="16f02c42-631b-4352-af76-6d5827b180cf" TYPE="swap"
/dev/sda3: UUID="60ca7c99-54c3-4a2a-93c4-5a5f61895c8b" TYPE="xfs"
/dev/sdb5: UUID="d4fdd717-0caa-4d5c-9e9a-8d36b9eea29e" TYPE="ext4"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
  • 第2列:Mount point:设备的挂载点,对应挂载到哪个目录。

  • 第3列:filesystem:文件系统的格式,包括ext3、reiserfs、ntfs、xfs等

  • 第4列:parameters:文件系统的参数

参数 含义
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当使用mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
  • 第5列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
选项 含义
0 代表不要做dump备份
1 代表要每天进行dump的操作
2 代表不定日期的进行dump操作
  • 第6列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。
选项 含义
0 不要检验
1 启动检验(一般根目录会选择)
2 1级别检验完成之后进行检验

mtab 文件的作用(了解)

/etc/mtab文件的作用:
记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。也可以通过读取/proc/mount也可以来获取当前挂载信息

mount 示例

mount 或者 mount -l 显示系统中已挂载设备信息

[root@zaishu ~]# mount -l
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
...
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)  <--含义是将 /dev/sda3 分区挂载到了 / 目录上,文件系统是 xfs ,具有读写权限
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13496)
mqueue on /dev/mqueue type mqueue (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=99568k,mode=700)

mount -a

-a : 检查 fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。

stab 自动挂载文件,系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。

[root@localhost ~]# mount
#查看系统中已经挂载的文件系统,注意有虚拟文件系统
/dev/sda3 on / type ext4 (rw) <–含义是,将 /dev/sda3 分区挂载到了 / 目录上,文件系统是 ext4,具有读写权限
proc on /proc type proc (rw)
sysfe on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw, gid=5, mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fe/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfe/rpc_pipefs type rpc_pipefs (rw)

挂载分区

[root@node1 device]# ls -l
total 0
-rw-r--r-- 1 root root 0 Aug  7 23:37 2
-rw-r--r-- 1 root root 0 Aug  7 23:37 3

fdisk -l 查看分区

[root@node1 device]# blkid /dev/sdb1
/dev/sdb1: UUID="4e3a5159-298d-41bb-bd0d-0595eea10927" TYPE="xfs"[root@node1 device]# mount /dev/sdb1 /device/
[root@node1 device]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   48G  4.5G   44G  10% /
devtmpfs                 223M     0  223M   0% /dev
tmpfs                    235M     0  235M   0% /dev/shm
tmpfs                    235M  5.5M  229M   3% /run
tmpfs                    235M     0  235M   0% /sys/fs/cgroup
/dev/sda1                197M  124M   74M  63% /boot
tmpfs                     47M     0   47M   0% /run/user/0
/dev/sdb1                2.0G   33M  2.0G   2% /device
[root@node1 device]# ls -l
total 0
1)没有指定文件系统,块设备也可以正常挂载;2)指定与块设备不一致的文件系统类型则命令报错;3)挂载点有内容的文件夹,在挂载后内容消失,卸载后内容重现,也就是说挂载后会将原文件内容掩盖,但并不对其进行其他操作。[root@node1 /]# umount /device/
[root@node1 /]# mount -t ext4 /dev/sdb1 /device/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,missing codepage or helper program, or other errorIn some cases useful info is found in syslog - trydmesg | tail or so.
默认是使用xfs的类型,所以不需要指定

使用标签和只读的方式挂载

格式化文件系统,添加设置标签

[root@node1 /]# mkfs -L /sdbb1 /dev/sdb1  //dev/sdb1 标签为/sdbb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=/sdbb1
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524032 blocks
26201 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

查看设备信息

[root@node1 /]# blkid /dev/sdb1
/dev/sdb1: LABEL="/sdbb1" UUID="d0ff3872-2855-4e48-aa08-ccfccfc9ee6a" TYPE="ext2"

以标签的形式来挂载,并且设置成只读

[root@node1 device]# mount -L '/sdbb1' -r /device/
[root@node1 /]# cd /device/
[root@node1 device]# ls
lost+found[root@node1 device]# touch tx2
touch: cannot touch ‘tx2’: Read-only file system

1)指定卷标挂载可行,以只读方式挂载后,无法对挂载点中的内容进行修改、创建等操作;2)目录的挂载实质上是硬链接,挂载后可以对里面的文件内容进行修改与删除。

设置特殊权限

例如对当前已经挂载的/boot 分区,而且采用的是 defaults 选项。
重新挂载分区,并采用 noexec 权限禁止执行文件执行

[root@localhost ~]# mount -o remount noexec /boot
#重新挂载 /boot 分区,并使用 noexec 权限
[root@localhost sh]# cd /boot
#写一个 shell 脚本,看是否会运行
[root@localhost boot]#vi hello.sh
#!/bin/bash
echo "hello!!"
[root@localhost boot]# chmod 755 hello.sh
[root@localhost boot]# ./hello.sh
-bash:./hello.sh:权限不够
#虽然赋予了hello.sh执行权限,但是仍然无法执行
[root@localhost boot]# mount -o remount exec /boot
#记得改回来,否则会影响系统启动

对于特殊选项的修改,除非特殊场景下需要,否则不建议大家随意修改,非常容易造成系统出现问题,而且还找不到问题的根源。

挂载光盘

将光盘放入光驱之后,需执行如下挂载命令:

建立挂载点

[root@localhost ~]# mkdir /mnt/cdrom/

挂载光盘

bash
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
monunt /dev/cdrom /mnt/cdrom //效果一样光盘的文件系统是 iso9660,文件系统类型可以省略不写,系统会自动检测。
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
#挂载光盘。两个挂载光盘的命令使用一个就可以了
[root@localhost ~]# mount
#查看已经挂载的设备
.....
/dev/srO on /mnt/cdrom type iso9660 (ro)
#光盘已经挂载了,但是挂载的设备文件名是/dev/sr0
#挂载点 /mnt/cdrom 是手工建立的空目录

光盘真正对应的设备

光驱的真正设备文件名是保存在 /proc/sys/dev/cdrom/info 文件中的,通过查看可以得知光盘真正设备文件名,命令如下:

[root@localhost ~]# cat /proc/sys/dev/cdrom/info
CD-ROM information, ld: cdrom.c 3.20 2003/12/17
drive name: sr0

/dev/cdrom 的源文件是 /dev/sr0。/dev/sr0 是光驱的真正设备文件名,代表 SCSI 接口或 SATA 接口的光驱,所以刚刚查询挂载时看到的光驱设备文件命令是 /dev/sr0。

[root@localhost ~]#ll /dev/cdrom
lrwxrwxrwx 1 root root 3 1月31 01:13/dev/cdrom ->sr0

所以挂载命令也可以写成这样:

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/

挂载U盘或移动硬盘

挂载 U 盘和挂载光盘的方式是一样的,不过光盘的设备文件名是固定的,而 U 盘的设备文件名是在插入 U 盘后系统自动分配的。需要查找出来识别的设备然后挂载

挂载U盘

通过使用 fdisk 命令,即可查看到 U 盘的设备文件名,执行命令如下:

[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5GB, 21474836480 bytes
#系统硬盘
…省略部分输出…
Disk/dev/sdb: 8022 MB, 8022654976 bytes
#这就是识别的U盘,大小为8GB
94 heads, 14 sectors/track, 11906 cylinders
Units = cylinders of 1316 * 512 = 673792 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 11907 7834608 b W95 FAT32   #系统给U盘分配的设备文件名

fat32格式用-t vfat(linux默认支持)

查看到 U 盘的设备文件名,接下来就要创建挂载点了。命令如下:

[root@localhost ~]# mkdir /mnt/usb

然后就是挂载了,挂载命令如下:

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
挂载U盘。因为是Windows分区,所以是vfat文件系统格式

输出可能是乱码
出现乱码,是因为编码格式不同,U 盘是 Windows 中保存的数据,而 Windows 中的中文编码格式和 Linux 中的不一致

[root@localhost ~]# cd /mnt/usb/
#去挂载点访问U盘数据
[root@localhost usb]# ls

解决乱码
在挂载的时候指定正确的编码格式解决乱码问题:

[root@localhost ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
#挂载U盘,指定中文编码格式为UTF-8
[root@localhost ~]# cd /mnt/usb/
[root@localhost usb]# ls
你好.txt
#可以正确地查看中文了
因为我们的 Linux 在安装时采用的是 UTF-8 编码格式,
所以要让 U 盘在挂载时也指定为 UTF-8 编码格式,才能正确显示。

系统默认编码格式

[root@localhost ~]# echo $LANG
zh_CN.UTF-8

挂载移动硬盘

Linux 默认是不支持 NTFS 文件系统的,要想让 Linux 支持移动硬盘,主要有三种方法:
重新编译内核,加入 ntfs 模块,然后安装 ntfs 模块;
不编译内核,而是下载已经编译好的内核,直接安装内核;
安装 NTFS 文件系统的第三方插件,也可以支持 NTFS 文件系统(最常用);

yum install ntfs-3g
mount -t ntfs -o iocharset=utf8 /dev/sdb1 /mnt/usb/  //ntfs格式用 -t ntfs
df -h

卸载

卸载文件:umount

命令使用格式:# umount DEVICE# umount MOUNT_POINT

在卸载的过程中,经常遇到目录或当中的子目录被使用,导致挂载点无法卸载,所以经常结合fuser来配合卸载。

fuser

fuser:查看正在访问指定文件系统的进程:

命令使用格式:# fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:慎用# fuser -km MOUNT_POINT

示例

[root@node1 device]# umount /device/  //文件被使用无法卸载
umount: /device: target is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))[root@node1 ~]# which fuser
/usr/bin/which: no fuser in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/sh:/usr/local/mysql/bin)
[root@node1 ~]# yum install psmisc   //安装fuser[root@node1 ~]# fuser -v /device/  //查看正在访问指定文件系统的进程USER        PID ACCESS COMMAND
/device:             root     kernel mount /deviceroot       6947 ..c.. bash[root@node1 ~]# ps aux|grep 6947 //查看进程信息
root       6947  0.0  0.4 115572  2180 pts/0    Ss+  23:03   0:00 -bash
root       7170  0.0  0.2 112708   972 pts/1    S+   23:58   0:00 grep --color=auto 6947[root@node1 ~]# fuser -km /device/  //终止所有在正访问指定的文件系统的进程
/device:              6947c[root@node1 ~]# umount /device/  //成功卸载目录

总结

本章详细讲解:文件挂载,卸载,mount,语法选项示例,挂载光盘,挂载分区,挂载u盘,挂载移动硬盘,卸载,fuser的使用和示例

友情链接

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 清理数据

28. 文件挂载,卸载,mount,语法选项示例,挂载光盘,挂载分区,挂载u盘,挂载移动硬盘,卸载,fuser等使用和示例相关推荐

  1. 磁盘与文件系统管理( 认识磁盘,了解磁盘,文件系统的建立与自动挂载)

    文章目录 磁盘与文件系统管理 磁盘结构及分区表示 硬盘的结构 硬盘的接口 磁盘分区表示 MBR介绍 fdisk 命令–查看或管理磁盘分区 mkswap命令 磁盘分区的表示 linux系统文件类型 EX ...

  2. 树莓派挂载和卸载U盘或移动硬盘

    树莓派挂载和卸载U盘或移动硬盘 通常我们在 /mnt 或 /media 目录下新建一个目录udisk作为挂载点 sudo mkdir /mnt/udisk 1.手动挂载: 挂载命令: sudo mou ...

  3. [mount]linux 挂载时 mount: wrong fs type, bad option, bad superblock on /dev/sdb

    原因:挂载时未格式化,使用的文件系统格式不对 解决方案:格式化 sudo mkfs -t ext4 /dev/sdb 再挂载 sudo mount /dev/sdb /xxx/ 用df -h检查,发现 ...

  4. 如何在 macOS 使用 AList + RCLONE 把网盘挂载到本地

    之前接触最多的可能还是百度网盘,它的免费容量比较大,我们在下载和分享一些文件的时候经常会用到,但是如果文件比较大,加上限速,使用体验并不算太好.其实除了下载文件,我很少使用百度网盘存储文件,影视资源之 ...

  5. Linux 系统操作之U盘挂载(mount)及卸载(umount)

    前言: 有这样一个工作场景:小白是一名初入职场的运维工程师,今天小白接到领导指令,需要到机房协助第三方终端产商测试隔离区传输链路.小白有点惶恐,他没有去过机房,也不知道要去做些什么:他请教了一下同事, ...

  6. 11. shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则

    shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则 文章目录 1.1 read详解 1.2 用法示例 1.3 while read ...

  7. Linux挂载命令mount 详解

    在Linux操作系统中,mount命令是用于加载文件系统到指定的加载点.此命令最常用于挂载cdrom,使我们可以访问cdrom中的数据,当你将光盘插入cdrom中时,Linux并不会自动挂载,必须使用 ...

  8. Linux命令之挂载文件系统mount

    概述 mount 命令可以用来将一个分区和一个目录联系起来. 所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘.光盘)则需要手动 ...

  9. Linux挂载(mount,umount及开机自动挂载

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...

最新文章

  1. 让一个网页打开的同时自动为另一个网页自动填写表单并提交
  2. 【 Notes 】Positioning system classification
  3. 编程笔试(解析及代码实现):从矩阵中寻找和最大的子矩阵(首先需要将一个列表转为一个方矩阵)
  4. IOS Unit test
  5. 2017年会是Serverless爆发之年吗?
  6. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)
  7. 20135115臧文君---实验2
  8. spring boot jpa的一对一关联(简洁)
  9. 港台服冒险岛枫之谷传统登录方式密码解密及自动登录方式
  10. LeetCode 图解 | 237.删除链表中的节点
  11. 基于机器学习的DNS隐蔽隧道检测方法与实现
  12. 推荐一个不错的国外html5模板网站
  13. 勾股定理竟然有500种证明方法,你会几种?
  14. 基于51单片机的十字路口交通红绿灯控制系统仿真原理图方案设计
  15. PG口令加密算法从MD5升级到SCRAM-SHA-256
  16. 基于ENVI下的土地利用信息提取(二)
  17. 一文读懂去中心化无线网络DeWi
  18. war3改键精灵脱壳去广告
  19. python 利用time模块给程序计时
  20. Android盒子 摄像头,android tv盒子播放器控制 监听上下左右键。

热门文章

  1. 欢迎进入Hensen_的博客目录(全站式导航)
  2. 什么是wifi霸屏神器?用WiFi霸屏广告机打广告是什么体验?
  3. C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式
  4. 大白话微软人工智能AI量化投资平台Qlib试用体验
  5. 我的未来规划及工作目标
  6. 使用广播信道的数据链路层--以太网的介绍
  7. 二进制位运算(按位与、按位或、异或、左移、右移、非)
  8. 英语学习资源下载大全 一网打尽
  9. 利用webpack简单搭建 .vue环境
  10. 微信公众号扫码登录 提示 网络出错了, 轻触屏幕重新加载-1001错误