shell脚本-备份
AI-摘要
KunKunYu GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
1.1 mysql备份脚本
#!/bin/bash
CONNECT="-udba -pxxx -h127.0.0.1 -P3306"
BACKUPDIR='/data/mysqlback'
BACKUPDATE=$(date +%Y%m%d_%H%M)
DATABASE=数据库名称
/opt/mysql_3316/bin/mysqldump $CONNECT --single-transaction --opt --master-data=2 --hex-blob --triggers --routines --events --single-transaction --force $DATABASE | gzip > ${BACKUPDIR}/stock_${BACKUPDATE}.sql.gz
```
| 参数名称 |参数详解 |
| ------------ | ------------ |
| --single-transaction | 该参数通过在一个事务中导出所有表从而创建一个一致性的快照,当前版本的MySQL只可以对innodb 引擎保证一致性,导出过程中不会锁表其他引擎 |
| --opt | INSERT 内容(1,2,3)跟--skip-opt INSERT 内容(1)/INSERT内容(2)相反 |
| --master-data=2 |参数在建立slave数据库的时候会经常用到,因为这是一个比较好用的参数,默认值为1,默认情况下,会包含change master to,这个语句包含file和position的记录始位置 |
| --hex-blob | 即以16进制导出blob字段数据,同版本下不加此参数一般不会有什么问题,但在不同MySQL版本间最好加此参数。可能会到导致特殊字符乱码 |
| --skip-triggers | 使用了触发器,但又要只导出数据 |
| --routines | 导出存储过程和自定义函数 |
| --events | 导出事件 |
| --single-transaction | 会加上事务,不会锁表 |
| --force | 即使我们在一个表导出期间得到一个SQL错误,继续 |
### 2添加执行权限
```yaml
chmod +x /root/script/mysqlback.sh
```
- 详解:
- 数据库名称 test
- 备份所有数据库 --all-databases
### 3查看crond服务是否运行:
```yaml
pgrep crond
```
如没有则安装
```yaml
yum install vixie-cron
yum install crontabs
```
### 4 编辑定时任务每天凌晨1点执行
```yaml
crontab -e
0 1 * * * /root/script/mysqlback.sh
1.2 docker-mysql备份
mkdir /root/script/
mkdir /data/mysql/dump
cat << EOF > /root/script/mysqlbackup.sh
#!/bin/bash
BACKUPDIR='/data/mysql/dump'
BACKUPDATE=$(date +%Y%m%d_%H%M)
/usr/bin/docker exec -it mysql5 mysqldump -uroot -p密码 -P3306--opt --master-data=2 --hex-blob --triggers --routines --events --single-transaction --force 数据库名| gzip > ${BACKUPDIR}/数据库名_${BACKUPDATE}.sql.gz
cd /data/mysql/dump
find ./ -ctime +30 -name "*.gz" |xargs rm -rf
EOF
chmod +x /root/script/mysqlbackup.sh
1.3 redis备份币种
#!/bin/bash
# 2019-09-03
# 从redis里导出各个币种
# echo "GET BTC_USDT:klinedata:TransactionOrder_BTC_USDT_10080" | /data/deploy/redis/bin/redis-cli -h 172.31.27.135 -a Credit2016Admin -p 6379 -n 0 > msg.json
# shell命令作用及各部分的含义:
# 1.作用:将redis第三个数据库中键名为BTC_USDT:klinedata:TransactionOrder_BTC_USDT_10080的值导出到msg.json文件中
# 2.参数含义:
# echo:表示输出
# get BTC_USDT:klinedata:TransactionOrder_BTC_USDT_10080:获取redis数据库中键名称为BTC_USDT:klinedata:TransactionOrder_BTC_USDT_10080对应的值
# /data/deploy/redis/bin/redis-cli -h 172.31.27.135 -a Credit2016Admin -p 6379 -n 0:
# -h 主机IP;-p 端口;-a 指定redis数据库的连接密码;-n:指定使用的数据库,这里为第3个数据库
# msg.json:将获取的数据内容写入文件msg.json
KEY_ARRAY=(BTC_USDT CR_USDT ELF_USDT ETH_USDT LINK_USDT LTC_USDT MANA_USDT OMG_USDT SNT_USDT STORJ_USDT)
TIME_ARRAY=(15 30 60 1440 10080)
COMMAND="/data/deploy/redis/bin/redis-cli"
HOST="172.31.27.135"
PASSROWD="Credit2016Admin"
PORT="6379"
DATABASE="0"
# 备份币环币种
function backup_coinring_currency(){
# 循环输出文件
for i in ${KEY_ARRAY[@]}; do
for j in ${TIME_ARRAY[@]}; do
# 建立每个币种的目录
[ ! -d /tmp/currency/${i} ] && mkdir -p /tmp/currency/${i}
# 输出币种文件
echo "GET ${i}:klinedata:TransactionOrder_${i}_${j}" | ${COMMAND} -h ${HOST} -p ${PORT} -a ${PASSROWD} -n ${DATABASE} > /tmp/currency/${i}/${i}_${j}.json
done
done
# 压缩
if [[ $(type zip 2 > /dev/null) ]]; then
zip -r /tmp/currency_$(date +%F) /tmp/currency/*
else
yum isntall -y zip
zip -r /tmp/currency_$(date +%F) /tmp/currency/*
fi
}
backup_coinring_currency
1.4 gitlab按照备份脚本
#!/bin/bash
# 2019-09-27
# Gitlab安装备份恢复
# 参考:https://packages.gitlab.com/gitlab/gitlab-ce
# https://www.cnblogs.com/kevingrace/p/7821529.html
# 安装
function gitlab_install(){
# 下载包
# wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/6/gitlab-ce-9.3.6-ce.0.el6.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.9.2-ce.0.el7.x86_64.rpm
# 安装
sudo yum install -y gitlab-ce-12.9.2-ce.0.el7.x86_64.rpm
# 启动
gitlab-ctl reconfigure
gitlab-ctl start
gitlab-ctl status
# 配置文件
# /etc/gitlab/gitlab.rb
# 修改访问链接
# external_url 'http://izwz9cpabak89hfiysawv3z'
# gitlab_rails['manage_backup_path'] = true
# gitlab备份目录
# gitlab_rails['backup_path'] = "/data/gitlab/backups"
# 生成的备份文件权限
# gitlab_rails['backup_archive_permissions'] = 0644
# 备份保留天数为3个月
# gitlab_rails['backup_keep_time'] = 7776000
# 修改完配置文件,需要重载gitlab配置文件
# gitlab-ctl reconfigure
}
# 备份
function gitlab_backups(){
# 手动备份命令
gitlab-rake gitlab:backup:create
# 备份文件的目录
# /var/opt/gitlab/backups
cat > /root/script/gitlab_backups.sh << EOF
#!/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create CRON=1
# 环境变量CRON=1的作用是如果没有任何错误发生时,抑制备份脚本的所有进度输出
EOF
# crontab -l
# 每天每隔6小时备份一次gitlab
# 0 0,6,12,18 * * * /bin/bash -x /data/gitlab/backups/gitlab_backup.sh > /dev/null 2>&1
}
# 恢复
function gitlab_restore(){
# Gitlab只能还原到与备份文件相同的gitlab版本。
# 将备份文件拷贝到/var/opt/gitlab/backups
# 停止相关数据连接服务
gitlab-ctl status
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
# 现在通过之前的备份文件进行恢复(必须要备份文件放到备份路径下,默认的是/var/opt/gitlab/backups)
# 1566921708_2019_08_28_9.3.6_gitlab_backup.tar
# BACKUP=1566921708_2019_08_28_9.3.6备份出来的包,后面的_gitlab_backup.tar不要
gitlab-rake gitlab:backup:restore BACKUP=1566921708_2019_08_28_9.3.6
# 期间会要求输入两次yes
# 再次启动gitlab
gitlab-ctl start
gitlab-ctl status
# 恢复命令完成后,可以check检查一下恢复情况
gitlab-rake gitlab:check SANITIZE=true
}
function main(){
gitlab_install
gitlab_backups
gitlab_restore
}
main
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
作者编辑不易,如有转载请注明出处。完整转载来自https://wangairui.com 网站名称:猫扑linux
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果