[内容] Shell 脚本中 declare、typeset、local 的作用 (设置变量)

内容一:declare、typeset 和 local 的作用

1) declare、typeset 和 local 的作用都是声明脚本中的变量
2) local 只能用在函数内部
3) declare、typeset 和 local 的选项一样

内容二:declare、typeset 和 local 的使用格式

declare <OPTION> <NAME1>=<VALUE1> <NAME2>=<VALUE2> ......

内容三:declare、typeset 和 local 的常用选项

1) -g 指定要声明的变量为全局变量而不是局部变量
2) -I 给变量赋值时将值转化为小写
3) -u 给变量赋值时将值转化为大写

[内容] MariaDB & MySQL 性能的优化

思路一:减少总连接数

1.1 显示数据库目前的连接数

> SHOW STATUS LIKE 'Threads_connected';

1.2 查看数据库目前所允许的最大连接数

> SHOW VARIABLES LIKE 'max_connections';

1.3 临时设置数据库目前所允许的最大连接数

> SET GLOBAL max_connections = 200;

(补充:这里以临时将数据库目前所允许的最大连接数设置为 200 为例)

思路二:优化 SQL 语句

2.1 查询执行的 SQL 语句

2.1.1 通过 SQL 语句查询正在运行的 SQL 语句
> SHOW PROCESSLIST;
2.1.2 通过 SQL 语句查询正在运行的 SQL 语句的详细信息
> SELECT * FROM performance_schema.threads;
2.1.3 查询 SLOW 日志

(步骤略)

2.2 优化 SQL 语句

(步骤略)

思路三:增加硬件性能

(步骤略)

[排错] 解决 Linux 开机时报错 “kernel panic – no syncing: Attempted to kill init ……”

报错代码

/init: error while loading shared libraries: libsystemd-shared-239.so: cannot open shared object file: No such file or directory
kernel panic - no syncing: Attempted to kill init! exitcode=0x00007f00

解决方法

步骤一:进入拯救模式

步骤二:确认第三方软件库

2.1 搜集第三方软件库信息

# ldconfig -p > /tmp/ldconfig.out

2.2 确认有没有第三方软件库

# for l in $(awk '{ print $1 }' /tmp/ldconfig.out); do matches=$(awk "\$1 == \"$l\" { print }" /tmp/ldconfig.out); if [ $(echo "$matches" | wc -l) -ge 2 ]; then echo "$matches"; echo; fi; done

(补充:如果没有第三方软件库的话这里不会有任何输出)

步骤三:检查 /etc/ld.so.conf 文件或者 /etc/ld.so.conf.d/ 目录里的文件去除第三方库

(步骤略)

步骤四:刷新库缓存

# ldconfig

步骤五:为启动失败的系统创建创建 initramfs 文件

# dracut -f /boot/initramfs-(uname -r).img $(uname -r)

(补充:这里以将正在运行的内核版本生成一个新的 initramfs 为例)

(注意:此时原来启动系统时使用的那个 initramfs 文件会被覆盖)

步骤六:重启系统

# reboot

参考文献

https://access.redhat.com/solutions/7096246