冷备份是指发生在数据库已经正常关闭的情况下进行的备份。由于此时数据库已经关闭,通过冷备份可以将数据库的关键性文件拷贝到另外存储位置。冷备份因为只是拷贝文件,因此备份的速度非常快。在执行恢复时,只需将文件再拷贝回去就可以很容易恢复到某个时间点上。冷备份的最大缺点在于在冷备份过程中,数据库必须是关闭状态,不能提供外部的访问。
在了解到了基础的知识以后,这里将通过一个简单的示例来演示如何操作MySQL数据库完成数据的冷备份与冷恢复。
视频讲解如下;
提示:下面的示例演示的是MySQL的冷备份与恢复,并以员工表(emp)中的员工数据为例。
(1)确定员工表的数据条数。
mysql> select count(*) from emp; # 输出的信息如下: +----------+ | count(*) | +----------+ | 14 | +----------+
(2)退出MySQL命令行工具,再执行下面的语句停止MySQL
mysqladmin -uroot -pWelcome_1 shutdown
(3)创建MySQL备份目录
mkdir -p /databackup/cold/
(4)使用tar命令执行冷备份将整个MySQL的目录进行备份。
cd /usr/local tar -cvzf /databackup/cold/mysql.tar.gz mysql/ # 输出的信息如下: mysql/ mysql/bin/ mysql/bin/mysql ...... mysql/lib/ mysql/lib/libmysqlclient.a mysql/lib/libmysqlservices.a mysql/lib/pkgconfig/ ...... mysql/data/demo1/ ...... mysql/data/demo1/emp.ibd mysql/data/demo1/indextable1.ibd ...... mysql/data/binlog.000017 mysql/data/binlog.000011 mysql/data/binlog.000013
提示:从tar命令输出的信息可以看出,该命令将整个mysql目录进行了打包并将打包后的文件放到了/databackup/cold/目录下。
(5)模拟数据库出现错误,以测试冷备的数据是否能够进行恢复。
rm -rf /usr/local/mysql/
(6)重新启动MySQL,会发现MySQL服务可以正常启动。
systemctl start mysqld # 输出的信息如下: mysqld.service - LSB: start and stop MySQL Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled) Active: active (exited) since Sat 2022-02-26 22:30:47 CST; Docs: man:systemd-sysv-generator(8)
(7)尝试登录MySQL。
mysql -uroot -pWelcome_1 # 将出现下面的错误信息: -bash: /usr/local/mysql/bin/mysql: No such file or directory
(8)停止MySQL服务,并尝试使用文件/databackup/cold/mysql.tar.gz来进行恢复。
systemctl stop mysqld tar -zxvf /databackup/cold/mysql.tar.gz -C /usr/local/ systemctl start mysqld
(9)登录MySQL,检查数据是否恢复。
mysql -uroot -pWelcome_1 mysql> use demo1; mysql> select count(*) from emp; # 输出的信息如下: +----------+ | count(*) | +----------+ | 14 | +----------+