备份脚本记录一下–(单个数据库)
2021-11-15
1.新建shell脚本:vim **.sh
#!/bin/bashCKUP=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以输出变量调试
echo $DATETIME
echo "========开始备份========="
echo "========备份路径 $BACKUP/$DATETIME.tar.gz========="
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PASSWOLD=123456
#备份数据库名
DATABASE=aeaicrm
#创建备份路径,如果存在就使用,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行MySQL的备份数据库指令
mysqldump $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时文件
rm -rf $BACKUP/$DATETIME
#删除十天前的备份文件/【-exec rm -rf {} \;】--删除找到的文件
find $BACKUP -mtime +7 -name "*.tar.gz" -exec rm -rf {} \;
echo "=========备份文件成功========="
- 创建任务计划:
crontab -e
3.问题记录
我的报错信息:
解决:
修改配置文件my.cnf
添加:
[mysqldump]
User=root
Password=mypassword
保存退出.
Shell脚本不指定用户名跟密码:
可能有更好的解决办法….
更新shell脚本—————(多个数据库)
2022-03-16
#!/bin/bash
#MySQL用户
user=test
#MySQL密码
userPWD=youpassword
需要定期备份的数据表的列表<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>List of data tables that need to be backed up regularly</font>*</details>
dbNames=(aeaicrm activiti chronicdisease lis oa)
每个备份数据都存储在该日期创建的文件夹中,同时删除过期的备份。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Each backup data is stored in a folder created on the date, while the expired backup is deleted.</font>*</details>
此处以保留1个月的备份数据为例
DATE=date -d "now" +%Y%m%d%H
ODATE=date -d "-1 month" +%Y%m%d%H
newdir=/home/backup_mysql/$DATE
olddir=/home/backup_mysql/$ODATE
删除过期备份数据
if [ -d $olddir ];
then
rm -rf $olddir
fi
创建新备份文件夹
mkdir $newdir
备份备份数据库列表中的所有数据库<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Back up all databases in the backup database list</font>*</details>
for dbName in ${dbNames[*]}
do
dumpFile=$dbName-$DATE.sql.gz
mysqldump -u$user -p$userPWD $dbName | gzip > $newdir/$dumpFile
done
==============================分割线==========================================
mysqldump相关:
Mysqldump 命令只导出表结构或数据或数据和结构的方法
1. 备份数据库
mysqldump –opt -d 数据库名 -u root -p > xxx.sql
mysqldump DB_NAME >数据库备份名
mysqldump -A -uUSER_NAME -pPASSWORD DB_NAME>数据库备份名
mysqldump -d -A –add-drop-table -uroot -p >xxx.sql
2. 导出结构不导出数据
mysqldump –opt -d 数据库名 -u root -p > xxx.sql
3. 导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql
4. 导出数据和表结构
mysqldump -uroot -p 数据库名 > xxx.sql
5. 导出特定表的结构
mysqldump -uroot -p -B 数据库名 –table 表名 > xxx.sql
6. 导入数据
mysqldump导出的是完整的SQL语句,所以用mysql客户程序就能把数据导入.
mysql 数据库名 < 文件名
或者
source /tmp/xxx.sql
Original: https://www.cnblogs.com/yaodun55/p/15555435.html
Author: 少年Dev
Title: linux自动备份mysql数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524363/
转载文章受原作者版权保护。转载请注明原作者出处!