欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库的各种备份方式讲解

程序员文章站 2023-03-27 18:38:28
物理备份 物理备份的原理是基于文件的拷贝,属于纯I/O型的备份方案。这种备份比较适合大型、重要、出现故障时需要快速恢复的场景,最大优点是备份和恢复的速度更快。 物理备份又分为冷备...

物理备份

物理备份的原理是基于文件的拷贝,属于纯I/O型的备份方案。这种备份比较适合大型、重要、出现故障时需要快速恢复的场景,最大优点是备份和恢复的速度更快。 物理备份又分为冷备份和热备份。

冷备份(脱机备份)

冷备份又称为脱机备份,是指在数据库服务停止运行时进行的备份。其实就是停掉数据库服务,cp数据文件的方法。进行备份的操作是:停掉MySQL服务,在操作系统级别备份MySQL的数据文件和日志文件到备份目录。

热备份(联机备份)

热备份又称为联机备份,是指在数据库服务运行期间执行的备份操作。其优点在于,备份执行过程中不会影响其他客户端访问MySQL服务,其他会话仍能正常读取数据。在MySQL中,对于不同的存储引擎,热备份方法也有所不同,下面主要介绍MyISAMySQL和InnoDB两种常用的存储引擎的热备方法。 1、MyISAM存储引擎 MyISAM存储引擎的热备份本质是将要备份的表加读锁,然后在cp数据文件到备份目录,常用以下两种方法: 使用mysqlhotcopy工具;手工锁表cp:首先数据库中所有表加读锁flush tables for read,然后cp数据到备份目录。2、InnoDB存储引擎 可以用以下方法进行备份: ibbackup;Xtrabackup;

逻辑备份

MySQL数据库的逻辑备份保存的是数据库逻辑结构(create database、create table语句)以及其所存储的数据(转换成insert语句或数据文本)。该方式最大的优点是灵活,缺点是执行恢复时的性能较差,综合来看,逻辑备份比较适合小型的、便于在其他服务器进行恢复的场景。可以通过以下方法实现: mysqldump命令:可参考:MySQL逻辑备份之MySQLDumpselect...into outfile ...:可参考:MySQL之导入和导出

全量备份

全量备份指的是备份MySQL数据库中的所有数据,可通过冷备或热备实现。

增量备份

MySQL中的增量备份必须借助Binlog实现,也就是说,必须在Mysql服务启动时指定--log-bin参数(也可在my.inf指定),Binlog是二进制日志,无法直接打开,可通过专用工具mysqlbinlog查看其内容。

1、查看Binlog参数;

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.21-log |
+------------+
1 row in set (0.01 sec)

mysql> show variables like '%log_bin%' ;
+---------------------------------+-----------------------------------------+
| Variable_name                   | Value                                   |
+---------------------------------+-----------------------------------------+
| log_bin                         | ON                                      |
| log_bin_basename                | /usr/local/mysql/binlog/mysql-bin       |
| log_bin_index                   | /usr/local/mysql/binlog/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                     |
| log_bin_use_v1_row_events       | OFF                                     |
| sql_log_bin                     | ON                                      |
+---------------------------------+-----------------------------------------+
6 rows in set (0.00 sec)

mysql> 

2、以逻辑方式创建完整备份;

mysql> system mysqldump -uroot -p -A -R -x --default-character-set=utf8 | gzip > /usr/local/mysql/backup/whole_db_bak_`date +%F`.sql.gz
Enter password: 
mysql> system ls -l /usr/local/mysql/backup/
total 208
-rw-r--r--. 1 root root 212685 Mar 14 16:36 whole_db_bak_2018-03-14.sql.gz
mysql> 

注:也可使用脱机备份进行数据库的全备。 3、将全备后的Binlog定期备份至指定目录即完成了MySQL之增量备份;