Annuaire d'articles
Remarque : Si vous placez un script shell écrit dans l'environnement Windows dans l'environnement Linux et que vous l'exécutez, les problèmes suivants peuvent survenir :
./boot.sh : Ligne 3 : $'\r' : Commande introuvable
Solution : utilisez vi pour ouvrir le fichier de script sous Linux et entrez en mode commande :
set ff=unix
pour définir le format au format unix.
Base de données MySQL
sauvegarde
1. Créez un nouveau répertoire de sauvegarde du script de sauvegarde
mkdir -p /home/southgisbackup/script
2. Créez un nouveau script de sauvegarde
vim /home/southgisbackup/script/mysql_bak.sh
# 写入以下内容(根据实际环境修改变量值)
#!/bin/bash
#容器名称
DOCKER_NAME=mysql
#备份数据保存目录
DATA_DIR=/home/southgisbackup/mysql_bak
#数据库用户名/密码
DB_USER=root
DB_PASS=Southgis@3306
#DAYS=2代表删除2天前的备份,即只保留近3天的备份
DAYS=2
echo "***************** 开始备份 *******************"
#创建备份数据保存目录和日志保存目录
mkdir -p $DATA_DIR/logs
#执行备份命令,并压缩备份数据(--all-databases表示是备份全部)
docker exec -i $DOCKER_NAME mysqldump -u$DB_USER -p$DB_PASS --all-databases | gzip > "$DATA_DIR/mysql_$(date +%Y%m%d%H%M).sql.gz"
#删除指定天数前的备份数据
find $DATA_DIR/ -mtime +$DAYS -name "mysql_*.sql.gz" -exec rm -f {} \;
#删除指定天数前的备份日志
find $DATA_DIR/logs -mtime +$DAYS -name "mysql_*_bak.log" -exec rm -f {} \;
echo "***************** 备份完成 *******************"
3. Modifier les autorisations d'exécution du script de sauvegarde
chmod +x /home/southgisbackup/script/mysql_bak.sh
4. Créez des tâches d'exécution planifiées
crontab -l #查看定时执行任务
crontab -e #编辑定时执行任务
# 每天凌晨3点执行mysql数据库备份,输出日志/home/southgisbackup/mysql_bak/logs/mysql_bak.log
0 3 * * * /bin/sh /home/southgisbackup/script/mysql_bak.sh >> /home/southgisbackup/mysql_bak/logs/mysql_$(date '+\%Y\%m\%d\%H\%M')_bak.log 2>&1
récupérer
1. Décompressez les données de sauvegarde
gunzip mysql_202106240850.sql.gz
2. Copiez les données de sauvegarde dans le conteneur
docker cp mysql_202106240850.sql mysql:/tmp/
3. Entrez dans le conteneur
docker exec -it mysql /bin/bash
4. Récupérer des données
mysql> source /tmp/mysql_202106240850.sql
Base de données MongoDB
sauvegarde
1. Créez un nouveau répertoire de sauvegarde du script de sauvegarde
mkdir -p /home/southgisbackup/script
2. Créez un nouveau script de sauvegarde
vim /home/southgisbackup/script/mongodb_bak.sh
# 写入以下内容(根据实际环境修改变量值)
#!/bin/bash
#容器名称
DOCKER_NAME=mongodb
#备份数据保存目录
DATA_DIR=/home/southgisbackup/mongodb_bak
#数据库用户名/密码
DB_NAME=imap_smart
DB_USER=imap_smart
DB_PASS=Southgis27017
#容器数据保存目录
DOCKER_DIR=/data/db
#本地数据保存目录
LOCAL_DIR=/home/southgisdata/mongodb/data
#DAYS=2代表删除2天前的备份,即只保留近3天的备份
DAYS=2
echo "***************** 开始备份 *******************"
#创建备份数据目录和备份日志保存目录
mkdir -p $DATA_DIR/logs
#执行备份命令,备份数据
docker exec -i $DOCKER_NAME mongodump -u $DB_USER -p $DB_PASS -d $DB_NAME -o $DOCKER_DIR
#将备份的数据转移到数据备份目录下
mv $LOCAL_DIR/$DB_NAME $DATA_DIR
#压缩备份数据
cd $DATA_DIR
tar -zcf imap_smart_$(date +%Y%m%d%H%M).tar.gz $DB_NAME
#删除未压缩的备份数据
rm -rf $DB_NAME
#删除指定天数前的备份
find $DATA_DIR -mtime +$DAYS -name "imap_smart_*.tar.gz" -exec rm -f {} \;
#删除指定天数前的备份日志
find $DATA_DIR/logs -mtime +$DAYS -name "imap_smart_*_bak.log" -exec rm -f {} \;
echo "***************** 备份完成 *******************"
3. Modifier les autorisations d'exécution du script de sauvegarde
chmod +x /home/southgisbackup/script/mongodb_bak.sh
4. Créez des tâches d'exécution planifiées
crontab -l #查看定时执行任务
crontab -e #编辑定时执行任务
# 每天凌晨3点30分执行mongodb数据库备份,输出日志到/home/southgisbackup/mongodb_bak/logs下
30 3 * * * /bin/sh /home/southgisbackup/script/mongodb_bak.sh >> /home/southgisbackup/mongodb_bak/logs/imap_smart_$(date '+\%Y\%m\%d\%H\%M')_bak.log 2>&1
récupérer
1. Décompressez les données de sauvegarde
tar -xvf mongodb_202106241505.tar.gz
2. Copiez les données de sauvegarde dans le répertoire de montage local du conteneur
docker cp imap-smart /home/southgisdata/mongodb/data
3. Exécutez la commande de récupération. /data/db/imap-smart est le répertoire des données de sauvegarde dans le conteneur.
docker exec -it mongodb mongorestore -u imapsmart -p Southgis27017 -d imap-smart /data/db/imap-smart
Base de données PostGIS
sauvegarde
1. Créez un nouveau répertoire de sauvegarde du script de sauvegarde
mkdir -p /home/southgisbackup/script
2. Créez un nouveau script de sauvegarde
vim /home/southgisbackup/script/postgis_bak.sh
# 写入以下内容(根据实际环境修改变量值)
#!/bin/bash
#容器名称
DOCKER_NAME=postgis
#备份数据保存目录
DATA_DIR=/home/southgisbackup/postgis_bak
#数据库用户名
USER=postgres
#DAYS=2代表删除2天前的备份,即只保留近3天的备份
DAYS=2
echo "***************** 开始备份 *******************"
#创建备份数据保存目录
mkdir -p $DATA_DIR/logs
#执行备份命令,并压缩备份数据
docker exec -i $DOCKER_NAME pg_dumpall -U $USER | gzip > "$DATA_DIR/postgis_$(date +%Y%m%d%H%M).sql.gz"
#删除指定天数前的备份
find $DATA_DIR -mtime +$DAYS -name "postgis_*.sql.gz" -exec rm -f {} \;
#删除指定天数前的备份日志
find $DATA_DIR/logs -mtime +$DAYS -name "postgis_*_bak.log" -exec rm -f {} \;
echo "***************** 备份完成 *******************"
3. Modifier les autorisations d'exécution du script de sauvegarde
chmod +x /home/southgisbackup/script/postgis_bak.sh
4. Créez des tâches d'exécution planifiées
crontab -l #查看定时执行任务
crontab -e #编辑定时执行任务
# 每天凌晨4点执行postgis数据库备份,输出日志到/home/southgisbackup/postgis_bak/logs下
0 4 * * * /bin/sh /home/southgisbackup/script/postgis_bak.sh >> /home/southgisbackup/postgis_bak/logs/postgis_$(date '+\%Y\%m\%d\%H\%M')_bak.log 2>&1
Avis:
L'exécution directe de la commande de sauvegarde peut entraîner l'erreur suivante :
crééb : impossible de se connecter à la base de données postgres : FATAL : échec de l'authentification par les pairs pour l'utilisateur « postgres »
Solution:
编辑 /etc/postgresql/11/main/pg_hba.conf
将
# Database administrative login by Unix domain socket
local all postgres peer
改为
# Database administrative login by Unix domain socket
local all postgres trust
Emplacement de modification de ce fichier dans docker :
#查找该文件
find /var/lib/docker -name pg_hba.conf
#修改该文件
vi /var/lib/docker/overlay2/d410bacbc00accbe1bef/merged/etc/postgis/11/main/pg_hba.conf
récupérer
1. Décompressez les données de sauvegarde
gunzip postgis_202106241205.sql.gz
2. Copiez les données de sauvegarde dans le conteneur
docker cp postgis_202106241205.sql postgis:/tmp/
3. Restaurer les données de sauvegarde
docker exec postgis psql -U imap_emap -f /tmp/postgis_202106241205.sql postgres
Base de données Redis
sauvegarde
1. Créez un nouveau répertoire de sauvegarde du script de sauvegarde
mkdir -p /home/southgisbackup/script
2. Créez un nouveau script de sauvegarde
vim /home/southgisbackup/script/redis_bak.sh
# 写入以下内容(根据实际环境修改变量值)
#!/bin/bash
#容器名称
DOCKER_NAME=redis
#备份数据保存目录
DATA_DIR=/home/southgisbackup/redis_bak
#数据库密码
DB_PASS=Southgis@6379
#DAYS=2代表删除2天前的备份,即只保留近3天的备份
DAYS=2
echo "***************** 开始备份 *******************"
#创建备份数据目录和备份日志目录
mkdir -p $DATA_DIR/logs
#执行备份命令
docker exec -i redis redis-cli -a $DB_PASS save
#将redis备份从容器中复制到宿主机上
docker cp redis:/data/dump.rdb $DATA_DIR/dump.rdb
#压缩备份数据
cd $DATA_DIR
tar -zcf redis_$(date +%Y%m%d%H%M).tar.gz dump.rdb
#删除未压缩的备份数据
rm -f $DATA_DIR/dump.rdb
#删除指定天数前的备份数据
find $DATA_DIR/ -mtime +$DAYS -name "redis_*.tar.gz" -exec rm -f {} \;
#删除指定天数前的备份日志
find $DATA_DIR/logs -mtime +$DAYS -name "redis_*.tar.gz" -exec rm -f {} \;
echo "***************** 备份完成 *******************"
3. Modifier les autorisations d'exécution du script de sauvegarde
chmod +x /home/southgisbackup/script/redis_bak.sh
4. Créez des tâches d'exécution planifiées
crontab -l #查看定时执行任务
crontab -e #编辑定时执行任务
# 每天凌晨3点15分执行redis数据库备份,输出日志到/home/southgisbackup/redis_bak/logs下
15 3 * * * /bin/sh /home/southgisbackup/script/redis_bak.sh >> /home/southgisbackup/redis_bak/logs/redis_$(date '+\%Y\%m\%d\%H\%M')_bak.log 2>&1
récupérer
1. Décompressez les données de sauvegarde
tar -xvf redis_202106241617.tar.gz
2. Copiez le fichier de sauvegarde dump.rdb sur la machine qui doit être restaurée et placez-le dans le répertoire affiché par CONFIG GET dir.
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"
3. Redémarrez Redis
docekr restart redis
#linux启动方式
#查看进程
ps -ef | grep redis
#杀掉进程
#重启
/usr/local/redis/bin/redis-server &