搜索 K
主题
主题
本页收集现场维护时常用的数据库、时序库和文件存储命令。命令默认按智档宝常见部署参数编写,执行前先确认现场实际账号、端口、容器名和安装目录。
常见默认值:
| 服务 | 默认值 |
|---|---|
| MySQL | 用户 root,密码 123456,库名 tdpub,Linux Docker 端口常见 3307,老手动环境常见 3306 |
| InfluxDB | org fit,bucket sdv,token abc123123123abc,端口 8086 |
| MinIO | endpoint http://127.0.0.1:9000,用户 admin,密码 admin123456,bucket fit |
| Redis/KV | 参考 redis-dump-go,现场按实际 Redis 连接参数执行 |
建议先统一创建一个带时间戳的备份目录:
TS=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR="$PWD/backup-$TS"
mkdir -p "$BACKUP_DIR"/{mysql,influxdb,minio,redis}$TS = Get-Date -Format 'yyyyMMdd-HHmmss'
$BACKUP_DIR = Join-Path (Get-Location) "backup-$TS"
New-Item -ItemType Directory -Force `
"$BACKUP_DIR\mysql", "$BACKUP_DIR\influxdb", "$BACKUP_DIR\minio", "$BACKUP_DIR\redis" | Out-Null恢复类命令会覆盖或删除目标数据。恢复前先停止业务写入,并再次备份当前现场数据。
首次使用前配置别名:
mc alias set sdv-minio http://127.0.0.1:9000 admin admin123456
mc ls sdv-minio/fit.\mc.exe alias set sdv-minio http://127.0.0.1:9000 admin admin123456
.\mc.exe ls sdv-minio/fit备份 bucket:
mc mirror --overwrite sdv-minio/fit "$BACKUP_DIR/minio/fit".\mc.exe mirror --overwrite sdv-minio/fit "$BACKUP_DIR\minio\fit"恢复 bucket:
mc mirror --overwrite "$BACKUP_DIR/minio/fit" sdv-minio/fit.\mc.exe mirror --overwrite "$BACKUP_DIR\minio\fit" sdv-minio/fit如果现场旧文档使用别名 minio,也可以继续使用:
mc cp --recursive minio "$BACKUP_DIR/minio/backup"
mc cp --recursive "$BACKUP_DIR/minio/backup" minio.\mc.exe cp --recursive minio "$BACKUP_DIR\minio\backup"
.\mc.exe cp --recursive "$BACKUP_DIR\minio\backup" minio备份:
influx backup \
--host http://127.0.0.1:8086 \
--bucket sdv \
--org fit \
--token abc123123123abc \
"$BACKUP_DIR/influxdb".\influx.exe backup `
--host http://127.0.0.1:8086 `
--bucket sdv `
--org fit `
--token abc123123123abc `
"$BACKUP_DIR\influxdb"恢复前通常需要删除旧 bucket,再恢复备份。确认无误后执行:
influx bucket delete -n sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086
influx restore --bucket sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086 "$BACKUP_DIR/influxdb".\influx.exe bucket delete -n sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086
.\influx.exe restore --bucket sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086 "$BACKUP_DIR\influxdb"按时间范围删除时序数据:
influx delete \
--bucket sdv \
--start 2020-03-01T00:00:00Z \
--stop 2024-05-08T00:00:00Z \
--org fit \
--token abc123123123abc \
--host http://127.0.0.1:8086.\influx.exe delete `
--bucket sdv `
--start 2020-03-01T00:00:00Z `
--stop 2024-05-08T00:00:00Z `
--org fit `
--token abc123123123abc `
--host http://127.0.0.1:8086备份:
mysqldump \
-h 127.0.0.1 \
-P 3307 \
-uroot \
-p123456 \
--single-transaction \
--routines \
--triggers \
--events \
--default-character-set=utf8mb4 \
tdpub > "$BACKUP_DIR/mysql/tdpub.sql".\mysqldump.exe `
-h 127.0.0.1 `
-P 3307 `
-uroot `
-p123456 `
--single-transaction `
--routines `
--triggers `
--events `
--default-character-set=utf8mb4 `
tdpub | Out-File -Encoding utf8 "$BACKUP_DIR\mysql\tdpub.sql"恢复:
mysql -h 127.0.0.1 -P 3307 -uroot -p123456 --default-character-set=utf8mb4 tdpub < "$BACKUP_DIR/mysql/tdpub.sql"Get-Content "$BACKUP_DIR\mysql\tdpub.sql" | .\mysql.exe -h 127.0.0.1 -P 3307 -uroot -p123456 --default-character-set=utf8mb4 tdpub清空全部报警:
DELETE FROM alarm_models;参考工具:https://github.com/yannh/redis-dump-go
redis-dump-go -host 127.0.0.1 -port 6379 > "$BACKUP_DIR/redis/redis.json"
redis-dump-go -host 127.0.0.1 -port 6379 -import "$BACKUP_DIR/redis/redis.json".\redis-dump-go.exe -host 127.0.0.1 -port 6379 | Out-File -Encoding utf8 "$BACKUP_DIR\redis\redis.json"
.\redis-dump-go.exe -host 127.0.0.1 -port 6379 -import "$BACKUP_DIR\redis\redis.json"适合没有在宿主机安装 mysql-client 的 Linux Docker 离线包环境。容器名按现场调整,常见为 mysql 或 sdv-mysql。
TS=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR="$PWD/backup-$TS"
mkdir -p "$BACKUP_DIR/mysql"
docker exec sdv-mysql sh -c 'mysqldump -uroot -p123456 --single-transaction --routines --triggers --events --default-character-set=utf8mb4 tdpub' \
> "$BACKUP_DIR/mysql/tdpub.sql"恢复:
docker exec -i sdv-mysql sh -c 'mysql -uroot -p123456 --default-character-set=utf8mb4 tdpub' \
< "$BACKUP_DIR/mysql/tdpub.sql"如果宿主机没有 influx 命令,但容器内有:
TS=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR="$PWD/backup-$TS"
mkdir -p "$BACKUP_DIR/influxdb"
docker exec sdv-influxdb influx backup \
--bucket sdv \
--org fit \
--token abc123123123abc \
/tmp/influx-backup
docker cp sdv-influxdb:/tmp/influx-backup "$BACKUP_DIR/influxdb"
docker exec sdv-influxdb rm -rf /tmp/influx-backup恢复:
docker cp "$BACKUP_DIR/influxdb/influx-backup" sdv-influxdb:/tmp/influx-backup
docker exec sdv-influxdb influx bucket delete -n sdv --org fit --token abc123123123abc
docker exec sdv-influxdb influx restore \
--bucket sdv \
--org fit \
--token abc123123123abc \
/tmp/influx-backuptar -czf "${BACKUP_DIR}.tar.gz" -C "$(dirname "$BACKUP_DIR")" "$(basename "$BACKUP_DIR")"
sha256sum "${BACKUP_DIR}.tar.gz" > "${BACKUP_DIR}.tar.gz.sha256"仅临时排查使用,生产环境不建议开放 root 外网访问。
mysql -uroot -p123456use mysql;
update user set host='%' where user ='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;以常见 sdv-test 目录为例,先创建备份目录,再分别备份 MySQL、InfluxDB 和 MinIO。
$TS = Get-Date -Format 'yyyyMMdd-HHmmss'
$BACKUP_DIR = "C:\Users\pc\Documents\sdv-test\backup-$TS"
New-Item -ItemType Directory -Force `
"$BACKUP_DIR\mysql", "$BACKUP_DIR\influxdb", "$BACKUP_DIR\minio" | Out-Null如果工具在运行目录下,先进入工具目录:
cd C:\Users\pc\Documents\sdv-test.\mc.exe alias set sdv-minio http://127.0.0.1:9000 admin admin123456
.\mc.exe mirror --overwrite sdv-minio/fit "$BACKUP_DIR\minio\fit"
Compress-Archive -Path "$BACKUP_DIR" -DestinationPath "$BACKUP_DIR.zip"恢复:
Expand-Archive -Path "$BACKUP_DIR.zip" -DestinationPath (Split-Path $BACKUP_DIR) -Force
.\mc.exe mirror --overwrite "$BACKUP_DIR\minio\fit" sdv-minio/fit.\mysqldump.exe -h 127.0.0.1 -P 3307 -uroot -p123456 --single-transaction --routines --triggers --events --default-character-set=utf8mb4 tdpub `
| Out-File -Encoding utf8 "$BACKUP_DIR\mysql\tdpub.sql"恢复:
Get-Content "$BACKUP_DIR\mysql\tdpub.sql" `
| .\mysql.exe -h 127.0.0.1 -P 3307 -uroot -p123456 --default-character-set=utf8mb4 tdpub.\influx.exe backup --bucket sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086 "$BACKUP_DIR\influxdb"恢复:
.\influx.exe bucket delete -n sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086
.\influx.exe restore --bucket sdv --org fit --token abc123123123abc --host http://127.0.0.1:8086 "$BACKUP_DIR\influxdb"