备份的目的
做灾难恢复:对损坏的数据进行恢复和还原
需求改变:因需求改变而需要把数据还原到改变以前
测试:测试新功能是否可用
备份需要考虑的问题
可以容忍丢失多长时间的数据;
恢复数据要在多长时间内完;
恢复的时候是否需要持续提供服务;
恢复的对象,是整个库,多个表,还是单个库,单个表。
备份的类型
1、根据是否需要数据库离线
冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;
热备(hot backup):备份的同时,业务不受影响。
注:
1、这种类型的备份,取决于业务的需求,而不是备份工具
2、MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具
2、根据要备份的数据集合的范围
完全备份:full backup,备份全部字符集。
增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。
差异备份:differential backup 上次完全备份以来改变了的数据。
建议的恢复策略:
完全+增量+二进制日志
完全+差异+二进制日志
备份的对象
1、 数据;
2、配置文件;
3、代码:存储过程、存储函数、触发器
4、os相关的配置文件
5、复制相关的配置
6、二进制日志
mysqldump基本语法
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql使用root用户备份test数据库下的person表 mysqldump -u root -p test person > D:\backup.sql
mysqlimport
mysqlimport [options] db_name textfile1 [textfile2 ...] --同时导入两个文件 mysqlimport --use-threads=2 test /home/mysql/t.txt /home/mysql/s.txt
select into , load data, source
SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; LOAD DATA INFILE "/path/to/file" INTO TABLE table_name; 注意:如果导出时用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'语句,那么LODA时也要加上同样的分隔限制语句。还要注意编码问题。 mysql>use dbtest; mysql>set names utf8; mysql>source D:/www/sql/back.sql;
mysqlbinlog
mysqlbinlog [options] log_file ... --将xxx.binlog.000001 导入到c盘 mysqlbinlog --start-position=4 --stop-position=106 xxx_binglog.000001 > c:\\test1.txt
热备工具
ibbackup
XtraBackup
其他
LVM快照备份,通过文件系统的快照来备份
replication备份
replication+LVM备份
复制replication是MySql提供的一种高可用解决方案,复制的原理
1.主服务器master把数据更改近路到二进制日志binlog中
2.从服务器slave把主服务器的二进制日志复制到自己的中继日志relay log中
3.从服务器重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性
需要注意的是因为延迟复制不能达到实时同步
如果在主服务器上DBA做了一些误删除操作,那么从服务器也一样会同步这些操作,这样错误的操作也会被同步就达不到备份的目的了,所以用复制+快照来实现更好的备份
性能优化
OLTP在线事务处理对CPU要求不高但要更多内存
OLAP在线分析处理需要更多的查询和连接对CPU要求高
当内存超过了数据量总大小时,性能会直线上升,但继续增加内存效果就不明显了
inodb_read相关参数
SHOW GLOBAL STATUS LIKE 'innodb%read%';
innodb_buffer_pool_reads 表示从物理磁盘读取页的次数
innodb_buffer_pool_read_ahead 预读的次数
innodb_buffer_pool_read_ahead_evicted 预读的页,但是没有被读取就从缓冲池中被替换的页的数量,一般用来判断预读取的效率
innodb_buffer_pool_read_requests 从缓冲池中读取页的次数
innodb_data_read 总共读入的字节数
innodb_data_reads 发起读取请求的次数,每次读取可能需要读取多少页
可以将多块盘组成RAID来提供性能和高可用,也可以用SSD提供性能
RAID-0性能最好,但是安全性最低
RAID-1 安全性最好,但是利用率最低
RAID-5综合了RAID-0和RAID-1的特点,加入了奇偶校验,将盘的校验数据放入其他盘,这样即使坏掉已坏盘也不怕
RAID10和RAID01则综合了RAID1和RAID0的特点
RAID10有更好的读取速度,RAID01比RAID10有更好的写入速度,但是安全性要差一点,现在一般用的是
RAID10比较多,此外还有RAID50
RAID卡 write-through和write-back模式
Write-Through 模式:
1. DB向Cell发送一个写请求, cellsrv进行验证确认其请求有效;
2. cellsrv将发送指令将其写入到物理磁盘;
3. 写完成以后,给DB确认已经写成功;
4. cellsrv判断次数据是否适合缓存到cache中,如果满足条件则缓存,否则不缓存。
Write-Back 模式:
1. DB向Cell发送一个写请求, cellsrv进行验证确认其请求有效;
2. cellsrv将发送指令将其写入到磁盘Cache;
3. 将此数据的状态置为dirty的状态。(直到下次临界条件将脏数据刷新到磁盘,并判断此数据是否适合缓存,如果不适合,刷新完成以后会丢弃,刷新和缓存过程是异步的,并不在步骤3来完成)
4. 写完成以后,给DB确认已经写成功;
这两种模式相比,明显write-back效率要高很多,因为每次都是写入到RAID卡的缓存中,再异步刷新到磁盘上,RAID卡也带了备用电池,所以当开启电池后可以安全的使用这种模式,当电池在充电或者没电的时候就会使用write-through模式
不同的操作系统,文件系统对性能影响并不大
两个基准测试工具
sysbench
mysql-tpcc
参考
[InnoDB系列] -- 实测ibbackup vs mysqldump
MySQL实验室DMB数据库监控及灾备系统 之 [备份模式的选择]
Cache写策略——write-through与write-back
基于keepalived 实现VIP转移,lvs,nginx的高可用
相关推荐
最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...
接着以InnoDB的内部实现为切入点,逐一详细讲解了InnoDB存储引擎内部的各个功能模块,包括InnoDB存储引擎的体系结构、内存中的数据结构、基于InnoDB存储引擎的表和页的物理存储、索引与算法、文件、锁、事务、备份,...
- InnoDB 引擎层面的性能优化和功能增强。 - Server 层面的性能优化和功能增强。 #### InnoDB 层新特性 InnoDB 是 MySQL 最常用的存储引擎之一,在 MySQL 5.6 中得到了显著的增强,特别是在性能和功能方面。 ##...
通过本书的阅读和学习,读者将深入了解 MySQL 的核心技术和 InnoDB 存储引擎的关键原理,同时掌握一些实战技巧,从而更好地应用 MySQL 技术进行数据管理。本书的结构分为三个部分。第一部分介绍 MySQL 技术内幕,...
《高性能mysql(第3版)》是最具代表性的进阶书籍没有之一,它是 MySQL 领域的经典之作,内容涵盖 MySQL 架构和历史,性能分析,优化,复制、备份和恢复,高可用与高可扩展性。值得每一个后端工程师多次阅读,无论是...
InnoDB存储引擎为MySQL数据库提供了强大的支持,通过本用户指南,用户可以详细了解和掌握如何使用InnoDB存储引擎进行高效和安全的数据管理,从而在数据库运行中提升性能并保证数据的稳定和安全。不过,值得注意的是...
其中,InnoDB存储引擎得到显著增强,支持更多的并发连接,提高了查询速度,并引入了压缩表功能以节省磁盘空间。 2. **安装步骤** - **下载**: 首先,你需要从官方网站或可信的源下载适用于Windows的MySQL 5.5...
### MySQL核心Innodb存储引擎浅析—事务系统 #### 存储引擎介绍 在MySQL中,存储引擎是处理表的存储方式的核心组件之一。不同的存储引擎提供了不同的特性,如事务支持、锁定粒度等。其中,MyISAM和InnoDB是最常用...
Xtrabackup工具支持对InnoDB存储引擎的增量备份,工作原理如下: xtrabackup备份原理 xtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的...
综上所述,理解并优化MySQL的InnoDB存储引擎参数对于提升数据库性能和管理效率至关重要。在创建和管理表时,选择合适的存储引擎、索引策略以及配置合适的参数,都能显著影响系统的整体表现。在实际应用中,应根据...
- InnoDB 存储引擎增强:包括对大页内存的支持,改进的行格式,以及更好的性能监控。 - 查询优化器改进:采用了新的统计信息收集策略,提升了查询计划的准确性。 - 分区表改进:支持更多的分区类型和操作,例如在线...
10. **性能优化**:此版本的MySQL支持InnoDB存储引擎的性能优化,如InnoDB Buffer Pool、索引优化、并行查询处理等,以提高数据读写速度和整体性能。 总之,`mysql-community-server-8.4.0-1.el9.x86_64`是为RHEL/...
5.6.29版本引入了InnoDB存储引擎的改进,如更好的行锁定机制,更高效的全文索引,以及对并行复制的支持。此外,它还优化了查询缓存,增强了性能监控和诊断工具。 在压缩包中,`Hive的mysql安装配置.doc`可能是关于...
1. **性能提升**:MySQL 8.0通过优化查询执行器、引入InnoDB存储引擎的改进以及更好的索引策略,提高了查询速度和整体系统性能。 2. **增强的数据类型**:添加了JSON数据类型,支持非结构化数据存储,使MySQL能够...
5. **优化的InnoDB存储引擎**:包括更快的索引插入、更高的内存利用率以及更有效的内存管理,使得InnoDB在处理大量并发事务时表现更出色。 6. **增强的监控和诊断**:提供了更丰富的性能指标和监控工具,如...
- **InnoDB存储引擎增强**:包括更好的性能和更高效的内存管理。 - **JSON支持**:MySQL现在可以直接处理JSON数据类型,增强了对NoSQL场景的支持。 - **窗口函数**:允许在SQL查询中进行复杂的数据分析操作。 - **...
1. **InnoDB引擎优化**:InnoDB作为MySQL的默认存储引擎,在8.0版本中进行了大量的优化,包括更快的插入速度、更高的并发性和更小的内存占用。 2. **窗口函数**:MySQL 8.0引入了SQL标准的窗口函数,允许用户在分组...
- **InnoDB存储引擎**:5.7版提升了InnoDB的性能,包括更快的插入速度、更好的并行处理能力,以及对事务处理的支持。 - **查询优化器改进**:引入了Query Profiler,帮助用户分析和优化查询性能,同时增强了Cost-...
MySQL是世界上最受欢迎的开源数据库系统之一,尤其在Linux操作系统中广泛应用。...随着技术的发展,新版本的MySQL提供了更多特性,如InnoDB存储引擎、JSON支持、窗口函数等,进一步增强了数据库的功能和性能。
InnoDB存储引擎支持事务处理、行级锁定和外键等特性,适用于需要高可靠性和高并发处理的系统。 并发控制是数据库管理中的一个重要部分,目的是为了避免多线程环境下多个事务同时修改数据造成的不一致问题。MySQL...