mysql数据库的备份和还原,使用mysqldump进行数据库备份(用于mysql备份脚本等),已经命令行还原数据库,常用命令包括
一.备份
1.基础
-h[host](--host[=host])
主机名(默认localhost)
-P[port](--port[=port])
端口(默认3306)
-u[user](--user[=user])
用户名
-p[password](--password[=password])
密码
-d(--no-data)
只导出结构
-A(--all-databases)
备份所有数据库
-B(--databases)
数据库名(多个)
-f(--force)
遇到错误继续
-q(--quick)
快速导出
--tables
导出表覆盖--databases选项,后面所跟参数被视作表名
2.进阶
-n(--no-create-db)
只导出数据,而不添加CREATE DATABASE 语句。
-t(--no-create-info)
只导出数据,而不添加CREATE TABLE 语句。
--opt
等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 默认开启
--skip-opt
禁用opt
--extended-insert
使用包含多个值列表的多行INSERT。
--set-charset
输出SET NAMES default_character_set 默认为打开
--skip-set-charset
关闭set-charset
--add-drop-database
添加drop数据库语句。默认为打开
--skip-add-drop-database
取消选项
--add-drop-table
drop数据表语句。默认为打开
--skip-add-drop-table
取消选项
--add-locks
在INSERT前后分别加LOCK TABLES和UNLOCK TABLES。
--skip-add-locks
取消选项
--comments
为备份文件添加注释。
--compact
禁用结构化注释及首尾结构体
--complete-insert
使用带有列名的完整INSERT。
--default-character-set[=charset_name]
设置默认字符集
--lock-tables
备份前锁定表
--routines
备份routines(存储过程和函数)
备份脚本脚本:
#!/bin/bash
#定义备份参数
dbhost=localhost
dbport=3306
dbname=blog
dbuser=root
dbpasswd=123456
backuppath=/.../db_backup/
logfile=/.../db_backup/db_backup.log
now=`date +%Y-%m-%d`
dumpfile=$dbname-$now
#使用下面函数备份数据库
back_db(){
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
mysqldump --skip-opt --host=${dbhost} --port=${dbport} -u${dbuser} -p${dbpasswd} --default-character-set=utf8mb4 --quick --force --routines --add-drop-database --add-drop-table --databases ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
echo "mysqldump --skip-opt --host=${dbhost} --port=${dbport} -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table --databases ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}"
tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
}
#删除一周前的备份文件
rm_oldfile(){
find ${backuppath} -type f -mtime +7 -exec rm {} \;
}
cd ${backuppath}
back_db
rm_oldfile
二.还原
1.还原全部数据库:
mysql命令行: mysql>source f:\all.sql
系统命令行: mysql -uroot -p123456 <f:\all.sql
2.指定数据库
mysql命令行: mysql>use db
mysql>source f:\db.sql
系统命令行: mysql -uroot -p123456 db <f:\db.sql
注意:本文归作者所有,未经作者允许,不得转载