Mysql-数据库的备份和恢复

Mysql-数据库的备份和恢复

说明

mysql的数据库备份和恢复,另外一篇文章数据库定时备份计划


数据库的备份和恢复(单库)

备份

基本语法:

mysqldump -uroot -p 数据库 > 备份路径

备份张三数据库:

root@iZm5eiw4hobozjn054cjzrZ:~# mysqldump -uroot -p zhangsan > /home/backup/zhangsan.sql
Enter password:
root@iZm5eiw4hobozjn054cjzrZ:~# cd /home/backup/
root@iZm5eiw4hobozjn054cjzrZ:/home/backup# ls
zhangsan.sql

恢复

假如我们的库不小心被删掉了,我们可以通过以下方法恢复张三数据库
1.创建张三数据库

mysql> create database zhangsan;
Query OK, 1 row affected (0.00 sec)

2.use 张三数据库

mysql> use zhangsan;
Database changed

3.用source命令还原数据库

mysql> source /home/backup/zhangying.sql
Query OK, 0 rows affected (0.00 sec)

数据库的备份和恢复(某个库的某些表)

备份

基本语法:

cmd>mysqldump -u root -p  数据库名 表名1 表名2 > 备份路径

备份张三数据库中user 表

root@iZm5eiw4hobozjn054cjzrZ:/home/backup# mysqldump -uroot -p zhangsan user >/home/backup/user.sql
Enter password:
root@iZm5eiw4hobozjn054cjzrZ:/home/backup# cd /home/backup/
root@iZm5eiw4hobozjn054cjzrZ:/home/backup# ll
-rw-r--r-- 1 root root 1809 May 30 13:41 user.sql
root@iZm5eiw4hobozjn054cjzrZ:/home/backup#

恢复

在张三数据中恢复user表

mysql> use zhangsan;
mysql> source /home/backup/user.sql
Query OK, 0 rows affected (0.00 sec)

数据库的备份和恢复(多库)

基本语法:

cmd>mysqldump -u root -p  -B 数据库名1   数据库名2  > 备份路径

备份

同时备份zhangying和zhangsan数据库

root@iZm5eiw4hobozjn054cjzrZ:/home/backup# mysqldump -uroot -p -B zhangying zhangsan > /home/backup/dbs.sql
Enter password:
root@iZm5eiw4hobozjn054cjzrZ:/home/backup# cd /home/backup
root@iZm5eiw4hobozjn054cjzrZ:/home/backup# ls
dbs.sql  user.sql  zhangying.sql

恢复多个库

进入mysql控制台后,直接用source命令导入数据库。

source /home/backup/dbs.sql

知识点

备份多个库时会将创建库的命令备份,所以不用再次创建数据库,直接用source命令导入就好。

自动备份脚本

给大家介绍一个备份脚本,mysalback.sh

#!/bin/bash
#dcription: mysql-data automatically backup script

# 文件名为test_db+日期
backupDatabase=blog
fileName=${backupDatabase}`date +%Y%m%d`

# 定义baseDir变量
baseDir=/root/backup/date/

# 备份数据库
mysqldump -h127.0.0.1 -uroot -proot ${backupDatabase} > ${baseDir}${fileName}.sql

# 压缩
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql

# 删除刚刚备份的sql文件,留下压缩的
rm -f ${baseDir}${fileName}.sql;

# 删除7天前备份的数据,只保留7天内的数据
find ${baseDir} -mtime +7 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;

结尾

腹有诗书气自华,最是书香能致远。

添加新评论