MySQL-备份和恢复
备份是为了保证在灾难发生的时候,保证数据不丢失或者最小程度的丢失
备份策略要求:
损失最小、对数据库的影响最小
备份可以通过计划任务+脚本来实现自动化
一、备份的分类
类型:
1.根据服务是否在线继续分为热备份、温备份和冷备份
热备份:读写均不受影响
温备份:仅可以执行读操作
冷备份:也称为离线备份,读写操作均终止。
2.根据备份时是否之间复制数据文件分为物理备份和逻辑备份。
物理备份:直接复制数据文件,速度快。
逻辑备份:通常是将数据导出至文本文件中。速度慢、丢失浮点精度;方便使用文本根据直接进行处理、可移植能力强
3.根据备份数据内容分为完全备份、增量备份和差异备份。
完全备份:备份全部数据。
增量备份:仅备份上次完全备份或增量备份以后变化的数据。
差异备份:仅备份上次完全备份以来变化的数据
备份时间的选择:数据库访问量较小的时候做备份。
工具:
mysqldump
lv:逻辑卷快照
Innodb:商业工具
mysqlbackup:Mysql企业版的备份工具
基于文件系统的备份
1.停止数据库
[root@ULA mysql]# systemctl stop mariadb
[root@ULA mysql]# mkdir /server/mariadb-backup -p
2.使用tar备份数据库文件
[root@ULA mariadb-backup]# cd /var/lib/mysql/
[root@ULA mysql]# tar czf /server/mariadb-backup/zhangqi.$(date +%F).tar.gz zhangqi
还原:
解压:
# tar xf /server/mariadb-backup/zhangqi.2017-06-06.tar.gz -C /var/lib/mysql
数据库文件授权:
chown mysql.mysql /var/lib/mysql/zhangqi -R
启动:
# systemctl start mariadb
二、备份
--------------------------------------------
使用mysqldump备份
--------------------------------------------
1.备份单个数据库
# mysqldump -u root -p2 库名 > /tmp/name.sql
[root@ULA mysql]# mysqldump -u root -p2 data1 > /tmp/data1.sql
2. 备份单个表
# mysqldump -u root -p2 库名 表名 > /tmp/name.sql
3. 备份多个表
# mysqldump -u root -p2 库名 表名 表名 > /tmp/name.sql
4. 多库备份 -B,--databases
# mysqldump -u root -p2 -B 库名 库名 > /tmp/name.sql
5. 全库备份 -A, --all-databases
# mysqldump -u root -p2 -A > /tmp/name.sql
三、恢复
1、单库恢复
MariaDB [(none)]> drop database data1;
Query OK, 2 rows affected (0.01 sec)
MariaDB [(none)]> create database data1; //先建库
Query OK, 1 row affected (0.00 sec)
第一种恢复方式:
[root@ULA mysql]# mysql -u root -p2 data1 < /tmp/data1.sql
第二种恢复方式:
[root@ULA mysql]# mysql -u root -p2
MariaDB [(none)]> use school
MariaDB [school]> source /tmp/data1.sql
2、单表恢复
[root@ULA mysql]# mysql -u root -p2 school < /tmp/table.sql
3、多表恢复(同单表恢复一样)
4、多库恢复(恢复之前是不需要手动创建数据库的)
[root@ULA mysql]# mysql -u root -p2 < /tmp/ddata.sql
5、全库恢复
[root@ULA mysql]# mysql -u root -p2 < /tmp/all.sql
浙公网安备 33010602011771号