环境:
- mysql 5.7
- centos7
- 数据库管理账号密码
- 数据库名称
- 数据备份存储的目录
具体脚本
vi db_backup.sh
以下为脚本具体内容
#!/bin/bash
#define backup minute
DATE=`date +%Y%m%d%H%M`
#database name
DATABASE=jumpserver
#database username
DB_USERNAME=dba_username
#database password
DB_PASSWORD="myDb_P@ssw0rd"
#backup path
BACKUP_PATH=/mysqlbackup/
#backup command
/usr/local/mysql/app/mysql/bin/mysqldump -u $DB_USERNAME -p$DB_PASSWORD -h 127.0.0.1 -P 3306 -R --opt $DATABASE | gzip > ${BACKUP_PATH}\/${DATABASE}_${DATE}.sql.gz
#just backup the latest 30 days
find ${BACKUP_PATH} -name "*.sql.gz" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
把以上db_backup.sh放入到/etc/crontab中,每日执行
参数说明
-
mysqldump 参数 -R (–routines:导出存储过程以及自定义函数)
-
Mysqldump 参数 --opt
mysqldump -uroot -p --opt DATABASENAME [Table] > xxx.sql
默认Mysqldump导出的SQL文件中不但包含了导出的数据,还包括导出数据库中所有数据表的结构信息。
–opt:此Mysqldump命令参数是可选的,如果带上这个选项代表激活了Mysqldump命令的quick,add-drop-table,add-locks,extended-insert,lock-tables参数,也就是通过–opt参数在使用Mysqldump导出Mysql数据库信息时不需要再附加上述这些参数。
–quick:代表忽略缓冲输出,Mysqldump命令直接将数据导出到指定的SQL文件。
–add-drop-table:顾名思义,就是在每个CREATE TABEL命令之前增加DROP-TABLE IF EXISTS语句,防止数据表重名。
–add-locks:表示在INSERT数据之前和之后锁定和解锁具体的数据表,你可以打开Mysqldump导出的SQL文件,在INSERT之前会出现LOCK TABLES和UNLOCK TABLES语句。
–extended-insert (-e):此参数表示可以多行插入。