数据库备份的重要性,在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果,数据库备份,能及时的恢复重要数据。

造成数据丢失的原因:
  • 程序错误
  • 人为错误
  • 计算机失败
  • 磁盘失败
  • 灾难(火灾、地震)偷窃、
从物理与逻辑的角度,备份可分为物理备份和逻辑备份。
  1. 逻辑备份:指对数据库逻辑组件(如表、数据库)的备份。
  2. 物理备份:对数据库操作系统的物理文件(数据文件、日志文件)的备份。物理备份又可以分为冷备份和热备份。
冷备份:在关闭数据库时进行的备份操作,能较好的保证数据库的完整性。
热备份:数据库运行状态时的备份,备份方法依赖于数据库的日志文件。

备份又可分为完全备份、差异备份和增量备份。

  1. 完整备份:对整个数据库所有对象进行备份,花费时间长。
  2. 差异备份:完全备份和增量备份之后的备份。(只识别完整备份,备份之后的)
  3. 增量备份:只针对备份后面修改的内容进行备份。(只备份完整备份之后增加的那一条。)

一.使用tar打包文件夹备份。

1.数据库文件很大,可以使用压缩率较大的XZ格式压缩,优先安装XZ压缩工具

yum install xz -y

2.对数据库文件夹/usr/local/mysql/data/进行打包操作

tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data 

3.如果数据库文件损坏丢失,可以解压压缩备份文件,做数据恢复工作。

tar Jxvf /opt/mysql-2018-8-30.tar.xz /usr/local/mysql/data

二、使用mysqldump工具备份。

1.对单个库进行完整备份

mysqldump -u 用户名 -p[密码] --database[数据库] > /备份路径/备份文件名

例:

mysqldump -uroot -pabc123 --database school > /opt/school.sql

2.对某些表进行完全备份。

mysqldump -u用户名 -p[密码][数据库名][表名]>/备份路径/备份文件名

3.对多个库进行完全备份

mysqldump -u用户名 -p[密码] --databases [库名1][库名2] >/备份路径/备份文件名

4.对所有库进行完全备份。

mysqldump -u用户名 -p[密码] --all-databases >/备份路径/备份文件名

5.只备份某个表的表结构。

mysqldump -u用户名 -p[密码] -d [库名][表名]>/备份路径/备份文件名

三、恢复数据库

1.登陆数据库后,进入数据库用source命令直接进行整库恢复

source 备份脚本路径

例:

source /opt/school.sql

注意:创建新的数据库,进入新数据库中执行source命令 。

2.用mysql命令恢复。(不登录数据库的情况下)

mysql -u用户名 -p[密码] 库名 < /库备份路径/备份文件

有2个例子说一下,第一种只备份了表,需要提前创建新库,再恢复,第二种无需提前创建新库。

例:

1)第一种

先备份

mysqldump -uroot -pabc123 school>/opt/school.sql

创建新库,查看新库的信息。

mysql -uroot -pabc123 -e 'create database school;show databases;'

Mysql完全备份与恢复_第1张图片

恢复

mysql -uroot -pabc123 school < /opt/school.sql

2)第二种

备份

mysqldump -uroot -pabc123 --databases school > school.sql

无需提前创建新库

恢复

mysql -uroot -pabc123 school < school.sql

三、无需登录数据库进行查看、创建数据库、表

mysql -u 用户名 -p[密码] -e '[命令];[命令];'

例:创建一个库查看进入库

mysql -uroot -pabc123 -e 'create database school;show databases;'