1 Star 0 Fork 0

tongchaowei/common-shell

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Linux 中适用于 root 用户的 Shell 脚本

该目录中的 Shell 脚本只适用于 Linux 中的 root 用户

原因:

  • 没有对用户不同进行判断,然后据此采取不同的措施,不是 root 用户可能会出现权限不足的报错

docker-mysql-install-single.sh

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 MySQL

执行脚本:

bash ./docker-mysql-install-single.sh

需要注意的是:

  • 该脚本会先检查是否安装了社区版 Docker,如果没有安装,则会退出脚本的执行,所以请先完成社区版 Docker 的安装
  • 该脚本会进行如下目录的映射:
    • /log: /var/log/mysql:MySQL 日志文件存放目录
    • /data:/var/lib/mysql,MySQL 数据表和数据文件存放的目录
    • /conf:/etc/mysql,MySQL 配置文件目录
    • /mysql-files:/var/lib/mysql-files,MySQL 相关文件,这个映射主要是防止报错
    • /csv:/var/lib/mysql-csv,MySQL 配置文件中配置的用于存放数据库 csv 格式导出文件
  • 该脚本启动容器时,会自动设置的参数如下:
    • --restart=always:跟随系统启动而自启
    • --privileged=true:容器具有 root 权限

该脚本在成功启动 MySQL 容器后,编写的配置文件内容如下:

配置文件存放位置:$docker_mysql_home/conf/conf.d/my.cnf, docker_mysql_home:Docker 安装 MySQL 相关映射目录和文件的家目录

# MySQL 服务端的相关配置
[mysqld]
# MySQL 集群中的每个 MySQL 服务端的唯一标识
# server-id=1
# MySQL 服务端运行监听来自客户端连接的端口号
port=3306
# 是否跳过(关闭) MySQL 服务端的域名解析
# 1 表示跳过(关闭) MySQL 服务端的域名解析
skip_name_resolve=1
# MySQL 服务端关闭交互式连接前等待活动的时间
# 如果超过这个时间,客户端还未发送数据过来,服务端则会断开本次连接。
# interactive_timeout=28800
# MySQL 服务端等待来自非交互式连接的客户端的数据的最长时间
# 如果超过这个时间,客户端还未发送数据过来,服务端则会断开本次连接。
wait_timeout=300
# MySQL 服务端的默认时区
default-time_zone='+8:00'
# MySQL 服务端的默认存储引擎
default-storage-engine=InnoDB
# MySQL 服务端的字符集编码
character-set-server=utf8mb4
# MySQL 服务端的比较规则
# 要和 character-set-server 配置项配置的 MySQL 服务端的字符集编码对应
collation-server=utf8mb4_general_ci
# 客户端连接 MySQL 服务端时使用的字符集
init_connect='SET NAMES utf8mb4'
# MySQL 服务端是否对 SQL 语句大小写敏感
# 1 表示对 SQL 语句大小写不敏感
lower_case_table_names=1
# MySQL 服务端使用的默认密码校验规则插件
# MySQL 8.3.0 中“mysql_native_password”已弃用,并将在将来的版本中删除。请改用caching_sha2_password'
# default_authentication_plugin=mysql_native_password
default_authentication_plugin=caching_sha2_password
# 如果进行要进行如下配置项的配置修改,log-error 需要手动创建 error.log 文件,否则会报错,
# datadir secure_file_priv 需要在容器启动时做好目录映射,且存放数据表和数据文件的目录要保证为空,否则会报错  
# 报错日志写入位置
# log-error=/var/lib/mysql/log/error.log
# MySQL 服务端进程 ID 的存放文件及其位置
pid-file=/var/lib/mysql/mysqld.pid
# MySQL 服务端中的数据表和数据文件的存放位置
datadir=/var/lib/mysql
# MySQL 数据库中数据表中的数据导出到 csv 文件中,csv 文件的存放位置
secure_file_priv=/var/lib/mysql-csv

# 连接访问 MySQL 的客户端的相关配置
[client]
# MySQL 接收来自客户端连接访问请求时客户端使用的字符集
default-character-set=utf8mb4

docker-redis-install-single.sh

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 Redis

执行脚本:

bash ./docker-redis-install-single.sh

需要注意的是:

  • 该脚本会先检查是否安装了社区版 Docker,如果没有安装,则会退出脚本的执行,所以请先完成社区版 Docker 的安装
  • 该脚本会进行如下目录的映射:
    • /log: /var/log/redis:Redis 日志文件存放目录
    • /data:/var/lib/mysql,Redis 数据文件存放的目录
    • /conf/redis.conf:/etc/redis/redis.conf,Redis 配置文件
  • 该脚本启动容器时,会设置的参数如下:
    • --restart=always:跟随系统启动而自启
    • --privileged=true:容器具有 root 权限
    • redis-server /etc/redis/redis.conf:启动容器之后,运行 redis-server 命令,并指定 redis-server 命令读取的 Redis 配置文件的路径
  • 该脚本在启动 Redis 容器之前,会创建 Redis 日志文件 $home/log/redis-server.log,同时会修改日志文件权限为 777,防止容器中 Redis 无法访问和修改日志文件
  • 该脚本在启动 Redis 容器之前,会要求输入访问 Redis 服务时使用的密码,因为在后面的编写 Redis 配置文件时,会开启 Redis 服务的访问权限认证(设置客户端访问 Redis 服务时的密码)

该脚本在启动 Redis 容器之前,编写的配置文件内容如下:

配置文件存放位置:$home/conf/redis.conf$home:Docker 安装 Redis 相关映射目录和文件的家目录; 其中,有进行注释说明的配置项是我目前有使用到的配置,没有进行注释说明的配置项是在 Redis 默认配置文件中有进行配置的,我复制过来的; Redis 配置文件配置项详细说明可以参考:https://www.yuque.com/u27599042/ckgabz/hpf8hyeui2fghcxx

################################## NETWORK #####################################
# 指定可以访问当前 Redis 服务的客户端 IP,为了使所有其它客户端都可访问,一般要将其注释掉
# bind 127.0.0.1 -::1
# 关闭保护模式,以确保其它客户端可以连接 Redis,否则只允许本机的客户端访问
protected-mode no
# Redis 服务监听端口号,默认 6379
port 6379
# TCP 连接的队列的长度,其主要用于解决高并发场景下客户端慢连接问题,生产环境下(特别是高并发场景下),backlog 的值最好要大一些
tcp-backlog 511
# 当客户端与 Redis 间的空闲时间超过该时长后,客户端和 Redis 服务器的连接会自动断开。单位秒。默认值为 0,表示永远不超时。
timeout 0
# 设置 Redis 检测与其连接的所有客户端的存活性时间间隔,单位秒,一般是在空闲超时 timeout 设置为 0 时进行配置。
tcp-keepalive 300
################################# GENERAL #####################################
# 配置 Redis 启动不采用守护进程方式,避免与 Docker 启动容器 -d(以守护进程执行) 选项发生冲突
daemonize no
# 指定 Redis 运行时 pid(Redis 进程 id)写入的文件
pidfile /var/run/redis_6379.pid
# 配置日志级别。notice:可以获取到在生产中想获取到的适当多的信息,默认级别。
loglevel notice
# 指定 Redis 运行日志记录的位置
logfile "/var/log/redis/redis-server.log"
# 设置数据库的数量
databases 16
# 只有在交互式会话中才会显示 Redis Logo,否则始终在启动日志中显示 Redis Logo。
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
locale-collate ""
################################ SNAPSHOTTING  ################################
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
################################# REPLICATION #################################
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
################################## SECURITY ###################################
acllog-max-len 128
# 设置客户端访问 Redis 服务时的密码
requirepass $redis_pwd
############################# LAZY FREEING ####################################
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
############################ KERNEL OOM CONTROL ##############################
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
################################## SLOW LOG ###################################
slowlog-log-slower-than 10000
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
set-max-listpack-entries 128
set-max-listpack-value 64
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
########################### ACTIVE DEFRAGMENTATION #######################
jemalloc-bg-thread yes
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tongchaowei/common-shell.git
git@gitee.com:tongchaowei/common-shell.git
tongchaowei
common-shell
common-shell
main

搜索帮助