Linux安装JDK-CentOS7
下载安装包
在官网下载jdk 安装包:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
解压
1 | # 解压 并输出到 /usr/local |
配置
编辑 /etc/profile
vim /etc/profile
1 | JAVA_HOME=/usr/local/jdk1.8.0_91 |
使配置生效:
source /etc/profile
验证
1 | java |
在官网下载jdk 安装包:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
1 | # 解压 并输出到 /usr/local |
编辑 /etc/profile
vim /etc/profile
1 | JAVA_HOME=/usr/local/jdk1.8.0_91 |
使配置生效:
source /etc/profile
1 | java |
LVM 是逻辑盘卷管理( Logical Volume Manager)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM 是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
通过 LVM 系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volume group),形成一个存储池。
管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系 统。管理员通过 LVM 可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
例如按照使用用途进行定义:development 和 sales,而不是使用物理磁盘名 sda 和sdb。而且当系统添加了新的磁盘,通过 LVM 管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

物理卷 在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。卷组 建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。逻辑卷 建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。物理区域 是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的 pv 加入到 vg 后,pe 的大小自动更改为 vg 中定义的 pe 大小。逻辑区域 是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。关于 PV 命令:
pvcreate 命令用于将物理硬盘分区初始化为物理卷,以便 LVM 使用。
1 | pvcreate:将物理分区制作成 物理卷 PV |
关于 VG 下命令:
1 | vgcreate:建立 VG 。它的参数比较多,一会儿详细介绍 |
创建 LVM 过程 :
分区成 LVM 格式(8e)—PV 创建–VG 创建—LV 创建—格式化分区—MOUNT 分区—-e2fsadm 调整 LV 大小
在 LVM 发行包中有一个称为 e2fsadm 的工具,它同时包含了 lvextend 与 resize2fs 的功能。
使用分区工具(如: fdisk 等)创建 LVM 分区,方法和创建其他一般分区的方式是一样的,区别仅仅是 LVM 的分区类型为 8e。
1 | fdisk /dev/vdb |
创建物理卷的命令为 pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷:
1 | # 格式化 |
创建卷组的命令为 vgcreate,将使用 pvcreate 建立的物理卷创建为一个完整的卷组:
1 | # unicomvg:指定该卷组的逻辑名: |
vgcreate 在创建卷组 unicomvg 以外,还设置使用大小为 4MB 的 PE(默认为 4MB),这表示卷组上创建的所有逻辑卷都以 4MB 为增量单位来进行扩充 或缩减。
由于内核原因,PE 大小决定了逻辑卷的最大大小,4MB 的 PE 决定了单个逻辑卷最大容量为 256GB,若希望使用大于 256G 的逻辑卷则创建卷组时指定更大的 PE。
PE 大小范围为 8KB 到 512MB,并且必须总是 2 的倍数(使用-s 指定,具体请参考 manvgcreate )。(centos 6.2 系统已发现没有这种限制)
例如,如果希望使用 64MB 的 PE 创建卷组,这样逻辑卷最大容量就可以为 4TB,命令如下:
1 | vgcreate -64MB lvmdisk /dev/vdb1 /dev/vdc1 |
为了立即使用卷组而不是重新启动系统,可以使用 vgchange 来激活卷组:
1 | vgchange -ay unicomvg |
当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用 vgextend 命令:
1 | vgextend unicomvg /dev/vdb1 |
这里/dev/vdb1是新的物理卷。
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用 pvdisplay 命令察看一个该物理卷信息:
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。
删除物理卷的命令为 vgreduce:
1 | vgreduce unicomvg /dev/sda1 |
逻辑卷(Logical Volumes)简称 LV,是在卷组中划分的一个逻辑区域,类似于非 LVM 系统中的硬盘分区。
创建逻辑卷的命令为 lvcreate,通过下面的命令。
该命令就在卷组 unicomvg 上创建名字为 unicomvol ,大小为 15000M(15G)的逻辑卷,并且设备入口为 /dev/unicomvg/unicomvol ( unicomvg 为卷组名,unicomvol 为逻辑卷名)。
创建逻辑卷的命令为 lvcreate:
1 | lvcreate -L 15000 -n unicomvol unicomvg |
如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的 PE 数,然后在创建逻辑卷时指定:
1 | vgdisplay unicomvg | grep "TotalPE" |
同卷组一样,逻辑卷在创建的过程中也被分成了一块一块的空间,这些空间称为 LE(Logical Extents),在同一个卷组中,LE 的大小和 PE 是相同的,并且一一对应。
创建了文件系统以后,就可以加载并使用它:
1 | # 创建目录 |
/etc/fstab文件的每一行都遵循以下格式:
1 | <device> <dir> <type> <options> <dump> <pass> |
UUID、LABEL来指定分区;ext3,ext4等;acl,noauto,ro等;删除逻辑卷以前首先需要将其卸载,然后删除:
1 | # 卸载 |
LVM 提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是 lvextend :
1 | # 将逻辑卷unicomvol的大小扩招为12G |
调整文件系统大小:
resize2fs 命令是用来增大或者收缩未加载的 ext2/ext3/ext4 文件系统的大小。
参数:
1 | # 建议最好将文件系统卸载,调整大小,然后再加载 |
lvreduce命令用于减少 LVM 逻辑卷占用的空间大小。使用 lvreduce 命令收缩逻辑卷的空间大小有可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。
需要首先将文件系统卸载:
1 | umount /data/wwwroot |
参考:
Linux df 命令用于显示目前在 Linux 系统上的文件系统的磁盘使用情况统计。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
1 | df [选项]... [FILE]... |
选项
1 | # 查看系统磁盘设备,默认是KB为单位 |
参考:
Linux umount命令用于卸除文件系统。
umount可卸除目前挂在Linux目录中的文件系统。
1 | umount [-ahnrvV] [-t <文件系统类型>] [文件系统] |
参数:
[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。1 | # 通过设备名卸载 |
参考:
mount 命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。
1 | mount [-hV] |
参数说明:
1 | # 将 /dev/hda1 挂在 /mnt 之下。 |
参考:
lvdisplay 命令用于显示 LVM 逻辑卷空间大小、读写状态和快照信息等属性。如果省略”逻辑卷”参数,则 lvdisplay 命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。
LVM 是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
语法
1 | lvdisplay (参数) |
参数
逻辑卷:指定要显示属性的逻辑卷对应的设备文件。
实例
使用lvdisplay命令显示指定逻辑卷的属性。在命令行中输入下面的命令:
1 | #显示逻辑卷属性 |
参考:
lsblk 命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出 RAM盘 的信息。块设备有 硬盘,闪存盘,cd-ROM 等等。lsblk 命令包含在 util-linux-ng 包中,现在该包改名为 util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载 util-linux包。Fedora用户可以通过命令 sudo yum install util-linux-ng 来安装该包。
选项:
1 | -a, --all 显示所有设备。 |
显示说明:
1 | # 默认选项不会列出所有空设备,使用 -a 显示空设备。 |
参考:
1 | # 查看binlog的格式的脚本 |
mysql复制主要有三种方式:
基于SQL语句的复制(statement-based replication, SBR)
基于行的复制(row-based replication, RBR)
混合模式复制(mixed-based replication, MBR)。
对应的 binlog 的格式也有三种:STATEMENT,ROW,MIXED。
每一条会修改数据的sql语句会记录到 binlog 中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了 binlog 日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave 中的数据不一致(如 sleep() 函数, last_insert_id(),以及 user-defined functions(udf) 等会出现问题)
不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或 function、或 trigger 的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是 alter table 的时候会让日志暴涨。
以上两种模式的混合使用,一般的复制使用 STATEMENT 模式保存 binlog ,对于 STATEMENT 模式无法复制的操作使用ROW模式保存 binlog,MySQL会根据执行的SQL语句选择日志保存方式。
binlog 复制配置
在mysql的配置文件my.cnf中,可以通过一下选项配置 binglog 相关
1 | # binlog日志格式,mysql默认采用ROW,建议使用mixed |
MIXED说明
对于执行的SQL语句中包含 now() 这样的时间函数,会在日志中产生对应的 unix_timestamp()*1000 的时间字符串,slave 在完成同步时,取用的是 sqlEvent 发生的时间来保证数据的准确性。另外对于一些功能性函数 slave 能完成相应的数据同步,而对于上面指定的一些类似于 UDF 函数,导致 Slave无法知晓的情况,则会采用 ROW 格式存储这些 Binlog ,以保证产生的 Binlog 可以供 Slave 完成数据同步。
比较以下 SBR 和 RBR 两种模式各自的优缺点:
SBR 的优点:
binlog 文件较小binlog 中包含了所有数据库更改信息,可以据此来审核数据库的安全等情况binlog 可以用于实时的还原,而不仅仅用于复制SBR 的缺点:
不是所有的 UPDATE 语句都能被复制,尤其是包含不确定操作的时候。
调用具有不确定因素的 UDF 时复制也可能出问题
使用以下函数的语句也无法被复制:
--sysdate-is-now 选项)SBR:
INSERT ... SELECT 会产生比 RBR 更多的行级锁WHERE 语句中没有使用到索引)的 UPDATE 时,需要比 RBR 请求更多的行级锁AUTO_INCREMENT 字段的 InnoDB 表而言,INSERT 语句会阻塞其他 INSERT 语句RBR 模式下,只会对那个发生变化的记录产生影响NOW() 函数,这个可以说是坏事也可能是好事UDF 也需要在从服务器上执行RBR 的优点:
任何情况都可以被复制,这对复制来说是最安全可靠的
和其他大多数数据库系统的复制技术一样
多数情况下,从服务器上的表如果有主键的话,复制就会快了很多
复制以下几种语句时的行锁更少:
AUTO_INCREMENT 字段的 INSERTUPDATE 或 DELETE 语句INSERT,UPDATE,DELETE 语句时锁更少RBR 的缺点:
binlog 大了很多binlog 中会包含大量的数据UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写问题UDF 产生的大 BLOB 值会导致复制变慢binlog 中看到都复制了写什么语句SBR 模式,否则很容易导致主从服务器的数据不一致情况发生另外,针对系统库 mysql 里面的表发生变化时的处理规则如下:
INSERT,UPDATE,DELETE 直接操作表的情况,则日志格式根据 binlog_format 的设定而记录GRANT,REVOKE,SET PASSWORD 等管理语句来做的话,那么无论如何都采用 SBR 模式记录注:采用 RBR 模式后,能解决很多原先出现的主键重复问题。
参考: