MySQL数据备份与恢复

网友投稿 257 2022-11-03

MySQL数据备份与恢复

一、数据备份的重要性备份的主要目的是灾难恢复在生产环境中,数据的安全性至关重要任何数据的丢失都可能产生严重的后果二、造成数据丢失的原因程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃三数据库备份的分类1、从物理与逻辑的角度分类1.物理备份对数据库操作系统的物理文件(如数据文件、日志文件等)的备份物理备份的方法冷备份(脱机备份):是在关闭数据库的时候进行的热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作2.逻辑备份对数据库逻辑组件(如:表等数据库对象)的备份2、从数据库的备份策略角度分类完全备份:每次对数据库进行完整的备份差异备份:备份自从上次完全备份之后被修改过的文件增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份四、常见的备份方法1、物理冷备备份时数据库处于关闭状态,直接打包数据库文件备份速度快,恢复时也是最简单的2、专用备份工具mydump或mysqlhotcopymysqldump常用的逻辑备份工具mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表3、启用二进制日志进行增量备份进行增量备份,需要刷新二进制日志4、第三方工具备份免费的MySQL热备份软件Percona XtraBackup五、MySQL完全备份1、概念是对整个数据库、数据库结构和文件结构的备份保存的是备份完成时刻的数据库是差异备份与增量备份的基础2、完全备份的优缺点优点:备份与恢复操作简单方便缺点:数据存在大量的重复占用大量的备份空间备份与恢复时间长3、数据库完全备份分类1.物理冷备份与恢复关闭MySQL数据库使用tar命令直接打包数据库文件夹直接替换现有MySQL目录即可2.mysqldump备份与恢复MySQL自带的备份工具,可方便实现对MySQL的备份可以将指定的库、表导出为SQL脚本使用命令mysql导入备份的数据六、数据库完全备份与恢复1、准备mysql -u root -pcreate database SCHOOL;use SCHOOL;create table if not exists CLASS1 (id int(4) not null auto_increment,name varchar(10) not null,sex char(10) not null,hobby varchar(50),primary key (id));

desc class;

insert into CLASS1 values(1,'user1','male','running');insert into CLASS1 values(2,'user2','female','singing');

1.物理冷备份与恢复systemctl stop mysqldyum -y install xz #xz是一个压缩工具#压缩备份tar Jcvf /opt/mysqlall$(date +%F).tar.xz /usr/local/mysql/data/#解压恢复tar Jxvf /opt/mysql_all_2021-02-05.tar.xz -C /usr/local/mysql/data

mysql -u root -p -e 'drop table school.class;'mysql -u root -p -e 'show tables from school;'

#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

#部分二进制文件的内容......BEGIN/!/;##-------------解释:at xxx 表示位置点------------------------------------------------

at 302

##--------------解释:开头210206 15:45:53表示时间,其他的现在用不到-----------------------------------#220213 0:28:54 server id 1 end_log_pos 449 CRC32 0xe972def7 Query thread_id=6 exec_time=0 error_code=0##--------------解释:这里是执行的操作语句---------------------use school/!/; <-------------use school;使用数据库SET TIMESTAMP=1612597553/!/; <------------建立时间戳insert into class values ('3','qwe','male','eat')<-------向表中插入数据/!/;##---------------------------------------------------------------

at 449

#210206 15:45:53 server id 1 end_log_pos 480 CRC32 0x5efde826 Xid = 446COMMIT/!/;

at 480

#210206 15:45:54 server id 1 end_log_pos 545 CRC32 0x11768895 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=noSET @@SESSION.GTID_NEXT= 'ANONYMOUS'/!/;

at 545

#210206 15:45:54 server id 1 end_log_pos 628 CRC32 0x778ea5fa Query thread_id=6 exec_time=0 error_code=0SET TIMESTAMP=1612597554/!/;##-------------------------------插入第二个数据--------------------------BEGIN/!/;

at 608

#220213 0:29:20 server id 1 end_log_pos 775 CRC32 0x66e3bb53 Query thread_id=6 exec_time=0 error_code=0SET TIMESTAMP=1612597554/!/;insert into class values ('4','asd','male','playgame')/!/;

at 775

#210206 15:45:54 server id 1 end_log_pos 806 CRC32 0x7b972395 Xid = 447COMMIT/!/;

at 806

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:八核浮点型DSP的双千兆网接口设计方案
下一篇:MySQL 索引
相关文章

 发表评论

暂时没有评论,来抢沙发吧~