MySQL数据备份与恢复
一.数据备份
1.物理备份
转存到某一文件目录,占空间比较大,使用 xtrabackup 工具 比较快
2.逻辑备份
汇总到备份文件夹中,速度慢,占用空间小,灵活 使用mysqldump工具(实际上备份sql语句)
mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名 称.sql
备份数据库
1.备份单个db
mysqldump -uroot -p atguigu>atguigu.sql #备份文件存储在当前目录下
mysqldump -uroot -p atguigudb1 > /var/lib/mysql/atguigu.sql
2.份全部数据库
mysqldump -uroot -pxxxxxx --all-databases > all_database.sql
mysqldump -uroot -pxxxxxx -A > all_database.sql
备份表
1备份部分表
mysqldump –u user –h host –p 数据库的名称 [表名1 [表名2...]] > 备份文件名称.sql
2.备份多张表
mysqldump -uroot -p atguigu book> book.sql
#备份多张表
mysqldump -uroot -p atguigu book account > 2_tables_bak.sql
3.备份单表的部分数据
mysqldump -uroot -p atguigu student --where="id < 10 " > student_part_id10_low_bak.sql
4.备份部分表
mysqldump –u user –h host –p 数据库的名称 [表名1 [表名2...]] > 备份文件名称.sql
mysqldump -uroot -p atguigu book> book.sql
#备份多张表
mysqldump -uroot -p atguigu book account > 2_tables_bak.sql
5.排除某些表的备份
mysqldump -uroot -p atguigu --ignore-table=atguigu.student > no_stu_bak.sql
6.只备份结构或只备份数据
- 只备份结构**(–no-data)**
mysqldump -uroot -p atguigu --no-data > atguigu_no_data_bak.sql
- 只备份数据**(–no-create-info)**
mysqldump -uroot -p atguigu --no-create-info > atguigu_no_create_info_bak.sql
二.数据恢复
单库备份中恢复单库
#备份文件中包含了创建数据库的语句
mysql -uroot -p < atguigu.sql
#备份文件中不包含了创建数据库的语句
mysql -uroot -p atguigu4< atguigu.sql
全量备份恢复
mysql –u root –p < all.sql
从单库备份中恢复单表
# 表结构
cat atguigu.sql | sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `class`/!d;q' > class_structure.sql
# 表数据
cat atguigu.sql | grep --ignore-case 'insert into `class`' > class_data.sql
# 用shell语法分离出创建表的语句及插入数据的语句后 再依次导出即可完成恢复
use atguigu;
mysql> source class_structure.sql;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> source class_data.sql;
Query OK, 1 row affected (0.01 sec)