linux中MySQL备份模式、方式以及工具详解

一、备份模式

冷备份:

备份过程中必须关闭软件或服务的相关进程,在无人使用的状态下进行数据备份,这种状态是无程序干扰状态,可以对数据做完整备份。
例:就是将游戏停服进行维护时做的备份,停服时没有任何干扰。

温备份

在备份过程中关闭一些子进程,对这些关闭的子进程影响的数据进行备份,而对正在运行的进程不备份,这种温备份在运行中不会影响用户的使用,备份完成后启动刚刚备份的子进程,数据完整性与一致性较差。
缺点:恢复时间长
例:在游戏中的存档任务

热备份

备份处于联机状态,在服务不关闭的状态下对数据进行备份。备份时也不影响用户使用,需要设备性能较好。
优点:恢复数据时间短,并且完整性与一致性最好

二、备份动作方式

完整备份

  • 概述:是将所有数据进行完整备份,一般采用冷备份的方式
  • 优点:数据的恢复方便,例如将一块硬盘的数据完整备份到另一块硬盘中,当该硬盘出现问题后,使用备份硬盘顶替即可
  • 缺点:耗费时间长,占空间大

增量备份

  • 概述:是将所有的数据进行备份一次,然后下次添加或修改数据时,只备份添加或修改的数据
  • 优点:占用空间相对较少,并且耗费时间少
  • 缺点:恢复数据时相对较为繁琐
    在这里插入图片描述
    只备份红色圆圈圈起的部分

差异备份

  • 概述:先将原始数据备份,然后数据被修改时再进行完整备份,修改或添加后再进行完整备份,以此类推。
  • 优点:恢复数据效率高
  • 缺点:随着内容的越来越多备份时间会越来越长,并且占用空间也会越来越大
  • 在这里插入图片描述
    备份红色圆圈圈起的地方

三、备份实践

1.tar命令备份

[root@localhost ~] cd /usr/local/mysql/data/
#进入mysql的data目录

1)创建测试数据库(abc)
[root@localhost data] mysql -u root -h localhost -p
Enter password: 
	mysql> create database abc;
	Query OK, 1 row affected (0.01 sec)
	
	mysql> show databases;
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| abc                |
	| mysql              |
	| performance_schema |
	| test               |
	+--------------------+
	5 rows in set (0.00 sec)
	
	mysql> exit
	Bye
[root@localhost data] mkdir /bak

2)对abc库进行备份
[root@localhost data] tar -zcvf /bak/mysql.tar.gz abc
abc/
abc/db.opt

3)删除测试数据库
[root@localhost data] mysql -u root -h localhost -p
Enter password: 

	mysql> show databases;
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| abc                |
	| mysql              |
	| performance_schema |
	| test               |
	+--------------------+
	5 rows in set (0.03 sec)
	
	mysql> drop database abc;
	Query OK, 0 rows affected (0.01 sec)
	
	mysql> exit
	Bye
	
4)恢复数据库abc
[root@localhost data] tar -zxvf /bak/mysql.tar.gz -C /usr/local/mysql/data/
abc/
abc/db.opt

5)登录数据库并查看恢复的数据库
[root@localhost data] mysql -u root -h localhost -p
Enter password: 
	
	mysql> show databases;
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| abc                |
	| mysql              |
	| performance_schema |
	| test               |
	+--------------------+
	5 rows in set (0.00 sec)
	
	mysql> use abc;
	Database changed

2.使用三方工具进行备份

由于三方备份的工具很多,这里就举一个命令例子了。
建议备份时要精确到表,因为恢复数据时会恢复到备份时的状态,如果备份范围过大,比如备份一个数据库那么还原时会将该数据库中的内容全部恢复到备份时的时间点。

mysqldump命令格式
备份命令格式:
mysqldump -u [用户名] -p [--database] [--all-database] > 备份文件路径
mysqldump -u [用户名] -p 库名 表名 表名 > 备份文件路径
#-u:指定登录的用户名
#-p:验证密码
#--database:指定数据库,后面跟上数据库名称
#--all-database:将备份所有数据库内容

还原命令格式:
mysql -u root -p < 备份文件路径
mysqldump工具

1)在abc库中创建测试表biao1
[root@localhost data] mysql -u root -h localhost -p
Enter password: 
	mysql> use abc;
	Database changed
	
	mysql> create table biao1(id int, name char(10));
	Query OK, 0 rows affected (0.01 sec)
	
	mysql> show tables;
	+---------------+
	| Tables_in_abc |
	+---------------+
	| biao1         |
	+---------------+
	1 row in set (0.00 sec)
	
	mysql> insert into biao1 (id,name) values(1,'chen');
	Query OK, 1 row affected (0.00 sec)
	
	mysql> select * from biao1;
	+------+------+
	| id   | name |
	+------+------+
	|    1 | chen |
	+------+------+
	1 row in set (0.00 sec)
	
	mysql> exit
	Bye

2)使用mysqldump验证用户名密码,并指定数据库abc并备份到/bak/abc.bak位置
[root@localhost data] mysqldump -u root -p --database abc > /bak/abc.bak
Enter password: 

3)删除biao1
[root@localhost data] mysql -u root -p -h localhost 
Enter password: 
	mysql> use abc
	Database changed
	mysql> show tables;
	+---------------+
	| Tables_in_abc |
	+---------------+
	| biao1         |
	+---------------+
	1 row in set (0.00 sec)
	
	mysql> drop table biao1;
	Query OK, 0 rows affected (0.00 sec)
	
	mysql> exit
	Bye

4)恢复该该数据文件到数据库abc中
[root@localhost data] mysql -u root -p abc < /bak/abc.bak 
Enter password: 

5)验证是否成功
[root@localhost data] mysql -u root -h localhost -p
Enter password: 
	mysql> use abc
	Database changed
	mysql> show tables;
	+---------------+
	| Tables_in_abc |
	+---------------+
	| biao1         |
	+---------------+
	1 row in set (0.00 sec)
原创文章 20 获赞 7 访问量 709

猜你喜欢

转载自blog.csdn.net/adsedfewf/article/details/105687913