MySQL备份恢复加速技巧与亿级数据复制方法分享

创始人
2024-12-24 14:49:01
0 次浏览
0 评论

如何有效地提高MySQL的备份和恢复速度

作者:河南老宋(志强)链接:https://www.zhihu.com/question/20334428/answer/110981915来源:知乎版权归作者所有。
商业转载请联系作者获得许可。
非商业转载请注明出处。
问题描述不是很清楚。
使用mysqldump备份时,通常需要添加--single-transaction参数。
快速备份1要求在备份期间首先使用读锁刷新表,并且如果有任何事务或语句正在运行,则将负责锁定表。
如果你不完成它,你的备份过程将继续等待并阻止其他事务,这也会影响你的业务。
因此,您应该首先确保备份期间没有运行大型事务。
具体的单事务锁参见我的博客:备份mysqldump时添加单事务锁?2mysqldump是单进程,无法并行化,但目前机器上的瓶颈主要出现在IO上。
3.如果使用mysqldump时有足够的空间,压缩时不要备份。
2.加速恢复。
1.关闭binlog。
不写入Binlog可以显着加快数据速度。
2.导入innodb_flush_log_at_trx_com。
mit=03更好配置的建议:1.如果需要使用逻辑备份,可以考虑两个备份工具:mysqldumper和mysqlpump(5.7)。
这两者在备份时也可以对单个表进行备份。
对于多表,只需要恢复物理备份xtrabackup(开源)、MEB(Oracle提供,付费),份原理基于mysqlcrashrecover,备份速度并不比逻辑备份好多少,没有变化。
备份。
不过,恢复速度明显提高。
逻辑备份是SQL语句文件,因此恢复时必须逐条运行每条SQL语句,这使得恢复速度非常慢。
物理备份和恢复速度与直接复制文件相当,显着提高恢复期间的性能。
这两个软件还支持并行化,从而提供更好的结果。
逻辑备份的最大优点是压缩后的备份文件占用空间较小。
最大的缺点是物理备份恢复速度非常慢,而且压缩后的备份文件比逻辑备份占用更多的空间。

有了云,作为用户的您就不必考虑这些事情。
ucloud是一个不错的选择http://www.ucloud.cn附:xtrabackup的并行参数ParallellocalbackupsParallelcompressionParallelencryptionParallelapply-log

高效快速实现MySQL上亿表数据复制方法分享mysql上亿表复制

MySQL复制是一种高效、快速的实现亿级表数据共享的方式。
MySQL是一种常用的开源关系数据库管理系统,可以存储、管理和搜索大量数据。
由于数据量很大,如何从数亿张MySQL表中复制结果就很重要。
本文将分享一种高效快速的实现方法并提供相关代码。
1.使用MySQL复制功能。
MySQL自带复制功能,通过该功能可以在不同MySQL服务器之间复制数据。
主服务器的变化可以自动复制到从服务器上,实现数据实时和负载均衡。
如果主服务器数据表较大,一次复制时间较长,可以采用流式复制或并行复制来提高其复制效率,从而实现数亿张MySQL表的数据复制。
2.使用mysqldump命令导出数据。
mysqldump命令可用于导出整个MySQL数据库或特定表的数据。
可以将需要导出的数据导出为SQL脚本,然后在目标MySQL数据库上执行SQL脚本文件。
可以导出对服务器的操作和主服务器的数据。
该方法需要导出整个数据表并使用快速批量插入功能(使用opt-op-opt选项)。
3.使用CDC(ChangeDataCapture)工具,它可以捕获数据库更改并解析它们。
在MySQL中,有很多工具可以实现CDC功能,例如OpenReplicator、Maxwell、Debezium等。
它们捕获原始数据库中的所有更改并将更改应用到目标数据库中,从而复制数据库。
其中,OpenReplicator是一款高性能、轻量级的MySQL复制工具,可以在低端服务器上快速复制数亿个数据文件。
以下是如何使用OpenReplicator的示例:1.安装OpenReplicator。
下载OpenReplicator源代码(open-replicator.properties)。
文件内容如下:#数据库数据openreplicator.datasource.driver=com.mysql.jdbc.Driveropenreplicator.datasource.url=jdbc:mysql://127.0.0.1:3306/testopenreplicator.datasource.username=rootopenreplicator。
datasource.password=123456#连接信息openreplicator.master.hostname=127.0.0.1openreplicator.master.port=3306openreplicator.master.username=rootopenreplicator.master.password=123456openreplicator.binlog.filename=mysql-bin.000001openreplicator.binlog.position=4#监听openreplicator地址的位置.server.hostname=127.0.0.1openreplicator.server.port=13111#需要复制的表数据openreplicator.filter.rule=replicate-do-table:test.demo.*3.:$java-cp“/path/to/open-replicatora.jar”com.google.code.or.OpenReplicator-f/path/to/open-replicator.properties,/path/to/open-replicator.jar和/path/to/mysql-connector-java。
jar它们分别是OpenReplicator和MySQL的UARS包装器;上面的简单示例使用OpenReplicator从数亿个MySQL表中复制数据。
读者可以根据自己的需要修改配置文件。
综上所述,从数百个MySQL表中复制数据的方法有很多种,您可以根据自己的情况选择不同的方法。
本文介绍MySQL的复制功能、mysqldump命令以及CDCOpenReplicator工具的使用。
热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

2
MySQL分区删除技巧与8.0版本新特性... mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...

3
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

4
深度解析:MySQL查询语句执行顺序及优... mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...

5
SQL教程:使用SUBSTRING和IN... sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...

6
MySQL日期差异计算方法:轻松获取日期... MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...

7
MySQL及SQL查询获取前10条数据方... MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...

8
MySQL启动问题排查与解决指南 Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...

9
DbVisualizer添加MySQL数... 如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...

10
SQL字段默认值设置全攻略:轻松实现自动... sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...