kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

IPMI 使用, 查看本机功耗

查看本机功耗

1
ipmitool sdr

https://www.cnblogs.com/machangwei-8/p/10350824.html

安装

1
yum install -y ipmitool

一、开关机, 重启

1
2
3
4
5
1. 查看开关机状态: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 power status
2. 开机: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 power on
3. 关机: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 power off
 软关机: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 power soft
4. 重启: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 power reset

二、SOL功能

1
2
3
4
5
1. 设置SOL串口波特率: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sol set volatile-bit-rate <9.6/19.2/38.4/57.6/115.2>
说明: <9.6/19.2/38.4/57.6/115.2>其中115.2代表115200, 即`*1000`是表示的波特率。

2. 打开SOL功能: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sol activate
3. 关闭SOL功能: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sol deactivate

三、IP网络设置

换网段需要用web界面改, 因为IP, GateWay 不能一条命令完成

1
2
3
4
5
6
7
8
9
10
11
1. 查看网络信息:       ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 lan print [ChannelNo]
2. 修改IP为静态还是DHCP模式: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 lan set <ChannelNo> ipsrc <static/dhcp>
3. 修改IP地址:            ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 lan set <ChannelNo> ipaddr <IPAddress>
4. 修改子网掩码:        ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 lan set <ChannelNo> netmask <NetMask>
5. 修改默认网关:        ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 lan set <ChannelNo> defgw ipaddr <默认网关>

6. 使BMC重新硬启动:     ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 mc reset <warm/cold>

说明: [ChannelNo] 字段是可选的, ChannoNo为1(Share Nic网络)或者8 (BMC独立管理网络)

设置网络参数, 必须首先设置IP为静态, 然后再进行其他设置

四、用户管理

1
2
3
4
5
6
7
8
9
10
11
1. 查看用户信息:   ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 user list [ChannelNo]
2. 增加用户:      ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 user set name <user id> <username>
3. 设置密码:      ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 user set password <user id> <password>
4. 设置用户权限:    ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 user priv <user id> <privilege level> [ChannelNo]
5. 启用/禁用用户:   ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 user enable/disable <user id>

说明: [ChannelNo] 字段是可选的, ChannoNo为1或者8

BMC默认有2个用户: user id为1的匿名用户, user id为2的ADMIN用户

privilege level: 2为user权限, 3为Operator权限, 4为Administrator权限

五、SEL日志查看

1
2
3
1. 查看SEL日志: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sel list

查看硬件时间: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sel time get

六、FRU信息查看

1
1. 查看FRU信息: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 fru list

七、SDR, Sensor信息查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. 查看SDR Sensor信息:   ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sdr
2. 查看Sensor信息:    ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sensor list


ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sdr type "Drive Slot / Bay"
ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 sdr type list

一般来讲, 常见的温度状态有以下5种:

    ok:温度正常
    nc: non-critical, 温度偏高(或者偏低), 但是并不太严重
    cr:critical, 温度太高或者温度太低, 很严重
    nr: non-recovery, 温度太高或者温度太低, 造成不可恢复的损伤。
    na:温度状态不明, 比较少见。

注意ok –> nc –> cr –> nr 从正常, 到越来越严重的温度问题。

八、mc(管理单元BMC)状态和控制

1
2
3
1. 查看BMC硬件信息: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 mc info

2. 使BMC重新硬启动: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 mc reset <warm/cold>

九、设置BMC的iptables防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. 设置某一段IP可以访问BMC
ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x01 0x01 ip1(0xa 0xa 0xa 0xa) ip2(0xb 0xb 0xb 0xb)
ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x09

2. 设置某个IP可以访问BMC
ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x00 0x01 ip1(0xa 0xa 0xa 0xa)
ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x09

3. 取消设置: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x08

4.获取防火墙设置: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x77 0x01 0x00

5. 阻止/开启某个端口: ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x02 0x00/0x01 0x00 (portno)0x22 0x00

6. 取消某个端口的设置(6是5的对应取消操作): ipmitool -H IP地址 -I lanplus -U 用户名 -P 密码 raw 0x32 0x76 0x06 0x00/0x01 0x00 (portno)0x22 0x00

直接进入本地BMC sh

1
2
service ipmi start
ipmitool -I open shell

ipmitool本地监控命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
ipmitool -I open command

其中-I open表示使用OpenIPMI接口, command有以下项: 

a) raw: 发送一个原始的IPMI请求, 并且打印回复信息。
b) lan: 配置网络(lan)信道(channel)
c) chassis : 查看底盘的状态和设置电源
d) event: 向BMC发送一个已经定义的事件(event), 可用于测试配置的SNMP是否成功
e) mc:  查看MC(Management Contollor)状态和各种允许的项
f) sdr: 打印传感器仓库中的所有监控项和从传感器读取到的值。
g) sensor: 打印详细的传感器信息。
h) fru: 打印内建的Field Replaceable Unit (FRU)信息
i) sel:  打印 System Event Log (SEL)
j) pef:  设置 Platform Event Filtering (PEF), 事件过滤平台用于在监控系统发现有event时候, 用PEF中的策略进行事件过滤, 然后看是否需要报警。
k) sol/isol: 用于配置通过串口的Lan进行监控
l) user: 设置BMC中用户的信息 。
m) channel: 设置Management Controller信道。


ipmitool -I open sensor list      命令可以获取传感器中的各种监测值和该值的监测阈值, 包括(CPU温度, 电压, 风扇转速, 电源调制模块温度, 电源电压等信息)
ipmitool -I open sensor get "CPU0Temp"    可以获取ID为CPU0Temp监测值, CPU0Temp是sensor的ID, 服务器不同, ID表示也不同。
ipmitool -I open sensor thresh        设置ID值等于id的监测项的各种限制值。

ipmitool -I open chassis status       查看底盘状态, 其中包括了底盘电源信息, 底盘工作状态等
ipmitool -I open chassis restart_cause    查看上次系统重启的原因
ipmitool -I open chassis policy list  查看支持的底盘电源相关策略。
ipmitool -I open chassis power on 启动底盘, 用此命令可以远程开机
ipmitool -I open chassis power off    关闭底盘, 用此命令可以远程开机
ipmitool -I open chassis power reset  实现硬重启, 用此命令可以远程开机

ipmi还可以设置系统启动boot的设备, 具体见ipmitool帮助文档。
ipmitool -I open mc reset     使BMC重新硬启动
ipmitool -I open mc info      查看BMC硬件信息
ipmitool -I open mc getenables        列出BMC所有允许的选项
ipmitool -I open mc setenables =[on|off]  设置bmc相应的允许/禁止选项。
ipmitool -I open event 1          发送一个温度过高的消息到System Event Log中, 可以发送的Event有: 
	1 Temperature: Upper Critical: Going High
	2 Voltage Threshold: Lower Critical: Going Low
	3 Memory: Correctable ECC Error Detected
ipmitool -I open event            命令可以用测试配置的IPMI中的snmp功能是否成功。

ipmitool -I open lan print 1      打印现咱channel 1的信息 。
ipmitool -I open lan set 1 ipsrc static       (设置ipmi ip非DHCP)
ipmitool -I open lan set 1 ipaddr 192.168.0.1 (设置IPMI  地址)
ipmitool -I open lan set 1 netmask 255.255.255.0  (设置ipmi 子网掩码)
ipmitool -I open lan set 1 defgw ipaddr 192.168.0.1   (设置ipmi 网关
ipmitool -I open lan set 1 access on  设置channel 1允许访问。

ipmitool -I open lan set 1 snmp public    设置channel 1 上snmp的community为public。

ipmitool -I open pef info     打印Platform Event Filtering (pef)信息
ipmitool -I open pef status       查看Platform Event Filtering (pef)状态
ipmitool -I open pef policy       查看Platform Event Filtering (pef)策略设置

ipmitool -I open sdr list fru     读取fru信息并显示。

Mysql获取表的comment字段

https://www.cnblogs.com/xiaogou/p/9178207.html

1.查看获取表内字段注释:

1
show full columns from tablename;

或是

1
show full fields from tablename;

或是,在元数据的表里面看

1
2
3
4
5
select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释
	from INFORMATION_SCHEMA.COLUMNS
		Where table_name = 'companies'##表名
			AND table_schema = 'testhuicard'##数据库名
			AND column_name LIKE 'c_name'##字段名

2

查看表注释的方法:

1
show  create  table  tablename;

修改表的注释:

1
alter table test1 comment '修改后的表的注释';

修改字段的注释:

1
alter table test1 modify column field_name int comment '修改后的字段注释';

MySQL UTF8 编码下生僻字符

https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=C344D8D120B341A8DD328954A9B27A99

www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=20547

https://www.cnblogs.com/zhuawang/p/4203972.html

1、问题:mysql 遇到某些中文插入异常

最近有同学反馈了这样一个问题:

1
insert into tb(name) VALUES('𠕇');

上述语句在脚本中 load 入库的时候会 hang 住,web 前端、命令行操作则要么抛出

Incorrect string value: ‘\xF0\xA1\x8B\xBE\xE5\xA2…’ for column ‘name',

要么存入MYSQL数据库的内容会被截断或者乱码,而换做其它的中文则一切正常。

嗯,看起来有点奇怪哈,按理说 utf8 编码是覆盖了所有中文的,不应该出现上述问题。

2、原因:此 utf8 非彼 utf8

那我们先来看看插入异常的中文和正常的中文有啥区别:

1
2
3
4
kk@kk-B250M-D3H:~$ echo -n 𠕇|xxd
00000000: f0a0 9587                                ....
kk@kk-B250M-D3H:~$ echo -n 有|xxd
00000000: e69c 89                                  ...

可以看到上面插入异常的文字占了 4 个字节,而我们插入正常的则只占了 3 个字节。但是 utf8 字符编码不就是可变长,支持 1-4 字节的么?会和这个有关?

嗯,看看官方文档就知道了:

10.1.10.6 The utf8mb4 Character Set (4-Byte UTF-8 Unicode Encoding)

The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters. As of MySQL 5.5.3, the utf8mb4 character set uses a maximum of four bytes per character supports supplemental characters:

For a BMP character, utf8 and utf8mb4 have identical storage characteristics: same code values, same encoding, same length.

For a supplementary character, utf8 cannot store the character at all, while utf8mb4 requires four bytes to store it. Since utf8 cannot store the character at all, you do not have any supplementary characters in utf8 columns and you need not worry about converting characters or losing data when upgrading utf8 data from older versions of MySQL.

utf8mb4 is a superset of utf8.

由官方文档可知,mysql 支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

最初的 UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。 utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面。

Mysql 中的 utf8 为什么只支持持最长三个字节的 UTF-8字符呢?我想了一下,可能是因为 Mysql 刚开始开发那会,Unicode 还没有辅助平面这一说呢。那时候,Unicode 委员会还做着 “65535 个字符足够全世界用了”的美梦。Mysql 中的字符串长度算的是字符数而非字节数,对于 CHAR 数据类型来说,需要为字符串保留足够的长。当使用 utf8 字符集时,需要保留的长度就是 utf8 最长字符长度乘以字符串长度,所以这里理所当然的限制了 utf8 最大长度为 3,比如 CHAR(100) Mysql 会保留 300字节长度。至于后续的版本为什么不对 4 字节长度的 UTF-8 字符提供支持,我想一个是为了向后兼容性的考虑,还有就是基本多文种平面之外的字符确实很少用到。

要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持(查看版本: select version();)。我觉得,为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8. 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。

3、解决方案

知道原因了,当然得谈谈有哪些方案可以解决开头的问题。

3.1 升级 mysql 版本,并将utf8字符集升级到utf8mb4

升级你的 mysql 到 5.5.3 之后即可,查看当前环境版本:

1
select version();

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8bp4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

所以好的技术就是,采用对当前而言最好的解决方案,然后再逐步迭代满足新的需求。

3.1.1 直接修改表结构

1
2
3
4
5
6
7
8
--修改数据库字符集
ALTER DATABASE test CHARACTER SET = utf8mb4;

--修改表字符集
alter table test convert to character set utf8mb4;

--修改字符字符集
ALTER TABLE `test` CHANGE COLUMN `name` `name` varchar(12) CHARACTER SET utf8mb4;

3.1.2 修改数据库默认配置

1
2
3
4
5
6
7
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

https://ishare.iask.sina.com.cn/f/1H23TejZrutm.html