使用mysqldump备份与还原的mysql数据库
使用mysqldump备份与还原的mysql数据库
一、mysqldump命令介绍
1.mysqldump -help
查看命令介绍:
mysqldump --help
2.mysqldump登录选项:
-u user:指定用户
-h host:指定主机
-p:表示要使用密码
-E, --events: 备份事件调度器
-R, --routines: 备份存储过程和存储函数
3.mysqldump备份选项:
--all-databases:备份所有数据库
--databases db1 db2:备份指定的数据库
--single-transaction:对事务引擎执行热备
--flush-logs:更新二进制日志文件
--master-data=2
1:每备份一个库就生成一个新的二进制文件(默认)
2:只生成一个新的二进制文件
--quick:在备份大表时指定该选项
二、备份数据库的语句实例
1.导出数据库表的表数据和表结构
mysqldump -u[用户名] -h[ip] -p[密码] -P[端口号] 数据库名 表名 >导出的文件名.sql
mysqldump -uroot -h 127.0.0.1 -pMrwhite@2021 -P3306 testdb game > game.sql
2.导出包括系统数据库在内的所有数据库
mysqldump -uroot -pMrwhite@2021 --all-databases>all.sql
3.导出多张表:
mysqldump -uroot -pMrwhite@2021 --databases test --tables t1 t2>two.sql
4.只导出表结构不导表数据,添加“-d”命令参数
mysqldump -uroot -h127.0.0.1 -pMrwhite@2021 -P3306 -d testdb game > game.sql
5.只导出表数据不导表结构,添加“-t”命令参数
mysqldump -uroot -h127.0.0.1 -pMrwhite@2021 -P3306 -t testdb game > game.sql
6.只导出testdb数据库的表结构
mysqldump -uroot -pMrwhite@2021 --no-data --databases testdb>database_testdb.sql
三、还原数据库的语句实例
1.格式:mysql -h[ip] -P[(大写)端口] -u[用户名] -p[密码] [数据库名] < d:XX.sql(路径)
mysql -uroot -pMrwhite@2021 -h127.0.0.1 -P3306 testdb <testdb.sql #还原单个数据库
mysql -uroot -pMrwhite@2021 -h127.0.0.1 -P3306 <all.sql #还原全部数据库
2.命令行方式导入
mysql> use testdb;
mysql> source /root/test20221205/all.sql
四、封装shell脚本实现数据库的快速备份与还原,并可设置对应的备份版本
1.mysql库备份脚本:mysql_backup.sh
version=$1
service=$2
ip=127.0.0.1
passwd=Mrwhite@2021
if [ ! -d ${version} ];then
# rm -rf ${version}
mkdir ${version}
fi
if [ -d ${version} ];then
#cd ${version}
echo "开发备份数据库"
if [ "${service}" = "dbtest" ];then
mysqldump -h ${ip} -uroot -p${passwd} --databases testdb > ./${version}/testdb
echo "testdb库备份成功"
mysqldump -h ${ip} -uroot -p${passwd} --databases testdb2 > ./${version}/testdb2
echo "testdb2库备份成功"
fi
else
echo "目录不存在"
fi
查看运行结果:
2.mysql库还原脚本:mysql_reset.sh
version=$1
service=$2
ip=127.0.0.1
passwd=Mrwhite@2021
if [ ! -d ${version} ];then
echo "开发恢复备份数据库"
fi
if [ -d ${version} ];then
#cd ${version}
echo "开发还原数据库"
if [ "${service}" = "dbtest" ];then
#对应的数据库
mysql -uroot -p${passwd} -h ${ip} -P3306 testdb <./${version}/testdb
echo "testdb库还原成功"
mysql -uroot -p${passwd} -h ${ip} -P3306 testdb2 <./${version}/testdb2
echo "testdb2库还原成功"
fi
else
echo "数据库备份版本不存在"
fi
查看运行结果: