您的位置:首页 > 数据库 > MySQL

Mysql数据库备份与恢复

2017-03-29 22:38 246 查看

一:前言:

备份数据库非常重要,数据库通常包含公司的大部分任务关键数据(销售、客户等待)执行备份是系统管理员能够在下列几种类型时间之后恢复数据:
1:操作系统故障
2:电源故障
3:文件系统崩溃
4:硬件问题
5:安全漏洞
6:数据库损坏
7:数据中毒

二:数据库备份方法:

逻辑备份:纯文本文件中到处信息和记录
特征
1.数据库结构是通过查询数据库检索的;
2.可移植性高,在某些情况下可以恢复到另一个数据库提供的程序(如Postgres);
3.备份很慢,因为服务器必须访问数据库信息并将其转换为逻辑格式;
4.在服务器联机时执行;
5.备份不包过日志和配置文件;
物理备份:包含存储内容的文件和目录的副本;
特征
1.包含数据库目录和文件夹的原始副本;
2.输出更精简;
3.备份可以包含日志和配置文件;
4.只能移植到具有类似硬件和软件的其他计算机;
5.比逻辑备份快
6.应该在服务器脱机或者数据库所有表均锁定时执行,防止备份期间发生改变。

三:逻辑备份实例:

1:备份单个数据库:
[root@Master ~]# mysqldump -u root -p wordpress > /backup/wordpress.dump

注:wordpress为备份的数据库,/backup/wordpress.dump为备份文件
2:备份所有数据库:
[root@Master ~]# mysqldump -u root -p --all-databases > /backup/databases.dump
可以看到此处使用了一个--all-databases的参数,是备份所有数据库,可选的参数有下面这几个

--all-databases备份所有数据库
--add-drop-tables生成的 sql 中包含 drop tables 语句,删除以前的 table
--no-data只生成库和表结构,没有数据
--lock-all-tables在备份结束之前,锁定所有表,保证数据完整性
--add-drop-databases生成的 sql 中包含 drop database 语句,删除以前的 database
3:同时备份多个数据库
[root@Master ~]# mysqldump -u root -p --databases wordpress typecho > /wptp.dump

--databases 后面加要备份的数据库,数据库之间用空格隔开
4:备份数据库中多张表:
[root@Master ~]# mysqldump -u root -p database table1 table2 > /backup/tables.dump

参数为要备份的数据库,后面加备份的表,空格隔开多张表。
5:简单shell备份所有数据库:
新建一个shell脚本,假如以下内容。
#!/bin/bash
read -p "please input the database user:" user
read -p "please input the password for you user $user:" passwd
database=`mysql -u $user -p$passwd -e "show databases" | sed 1,2d`
for data in $database
do
mysqldump -u $user -p$passwd -B $data > ${data}-`date +%Y-%m-%d`.dump
echo "backup $data success!!!"
done


支持多用户备份,在脚本实行时,输入相应的数据库用户和用户密码,即可备份该用户所有的数据库。

四:数据库恢复:

1:所有数据库恢复。
mysqldump -u root -p --all-databases > data.dump
mysql -u root -p -h localhost < data.dump


2:单个数据库恢复:
mysql -u root -p -h localhost database1 < database1.dump

单个数据库恢复需要现在登陆数据库并创建相应的数据库以后进行恢复,还可以在创建数据库以后use进入该数据库使用命令source恢复。如
create database Contacts;
show databases;
use Contacts
source /root/users.mdb
show tables;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息