mysql 数据迁移_MySQL海量数据迁移

185bc452b875d9f94df9f9769efa499b.png

数据库迁移

   本主前一段时间写毕业设计主要使用MySQL,紧锣密鼓的开发了将近一个多月,项目数据层、接口层、数据采集层已经开发完成,算法还在不断的优化提速,由于请了几位大佬帮我做Code Review,所以不得已购买了一个阿里云的RDS服务,将本地的所有数据迁移到RDS上。本篇文章仅仅介绍数据库MySQL本地迁移到云端。HIVE的数据同步到MySQL后续会介绍。使用的是Sqoop脚本。

01

为什么进行数据库迁移

   我们首先需要确认的是什么场景下才会进行数据库迁移工作呢?

        1、磁盘空间不足

        2、业务出现瓶颈:业务扩展,单机读写压力大,在IO性能允许的情况下可以进行读写分离,横向扩展。

        3、机器出现瓶颈:磁盘IO能力、内存、CPU出现瓶颈

        4、项目改造

        ......

02

数据库迁移要求

       1、 数据完整性

       2、 线上业务平稳运行

       3、 安全性

03

数据库备份

  1、 数据量较小的情况下的迁移方式(10G)

     直接选择数据库的备份命令mysqldump,将数据库SQL脚本导入到一个文件中,直接将文件上传至云端服务器执行或Load即可。我将本地数据迁移的RDS上使用的是这种迁移方式。

mysqldump -h host -p 3306 -u [用户名] -p [用户密码] --no-data --[database|database | all-databases] [数据库名称 | 多个数据库名称] [表1,表2] > sql脚本名称 | gzip 压缩文件.gz

   选项说明:--no-data 仅仅备份数据库结构,不备份数据

                    --[database | databases ] 本分单个或多个数据库

                    --all-databases 备份所有数据库

     当然导出文件只是第一步,当然需要将脚本文件上传到新的服务器上(这里就不对上传方式进行介绍了,scp等等),然后将脚本重新执行即可迁移新的数据库。这一个过程完全可以写一个Shell脚本放到旧的服务器上进行执行。比如导出所有的数据库,不包括表结构,代码如下,近期会改造该代码,需要搭建MySQL集群,两个节点:

mysqldump --no-data --all-databases -uroot -proot > all_databases.sql

Tips : 有一个前提,您安装的mysql必须配置到环境变量中。

 2、当数据量超过10G的迁移方式

         当数据量较大的时候,不能再使用mysqldump,因为此时会产生锁,导致时间较长,可以选择xtrabackup、直接拷贝数据目录(前提是容许停止服务),此时数据传输可以使用rsync进行传输数据文件。

04

参考

  mysqldump https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

05

展望

    海量数据迁移还没有场景得以应用,后期会在公司研究高并发(百万级QPS)一定会接触到的,后期会从数据库主从节点角度分析数据迁移,主要点如下:

       1、主从分离下从节点的数据的备份与迁移

       2、主从分离下任意节点数据的备份与迁移

       ......

喜欢本主的打个赏吧401762d2f84749d108ae295c5d4ed877.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组中重复的数字

解决问题思路1. 代码实现: package j2;import java.util.Arrays;/*** Created by admin on 2019/5/8.*/ public class FindDuplicate {public static void duplicate(int[] numbers,int length,int[]duplication){//边界条件的判断if (numbers null || length0) {r…

eclipse中junit_在Eclipse中有效使用JUnit

eclipse中junit最近,我被卷入了讨论1和一些受感染的同伴2,他们关于我们如何在Eclipse IDE中使用JUnit 。 令人惊讶的是,对话带来了并非所有人都知道的一些“技巧”。 这使我有了写这篇文章的想法,总结了我们的演讲。 谁知道–也许…

BFS迷宫问题模型(具体模拟过程见《啊哈算法》)

题目描述与DFS模型走迷宫那篇一样。小哈被困在迷宫里,小哼解救小哈。 这里用BFS来写。BFS(广搜)与DFS(深搜)的区别就在于,DFS是“不撞南墙不回头”,一条路走到不能再走之后才会回到起始点&#…

Spring Batch可重启性

首先,我要非常感谢Spring的优秀人员,他们花了无数时间来确保Spring Batch作业的可行性,以及发出重新启动作业的神奇能力! 感谢您提供的这个优雅的工具集,它使我们能够浏览大量数据集,同时使我们在跌倒时能够…

tf.clip_by_value()

tf.clip_by_value(A, min, max) 输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。 小于min的让它等于min,大于max的元素的值等于max。

python如何导入seaborn_Seaborn - 导入数据集和库

教 程 目 录 在本章中,我们将讨论如何导入数据集和库.让我们首先了解如何导入库. 导入库 让我们从导入Pandas开始,这是一个管理关系的好库(表格式)数据集. Seaborn在处理DataFrames时非常方便,DataFrames是用于数据分析的最广泛使用的数据结构…

Windows安装Redis(转!)

转自https://www.cnblogs.com/wxjnew/p/9160855.html “现在我已经走到了人生的十字路口边了,我相信,在已走过的人生道路中,我一直知道其中哪一条是正确的,是的,我一直坚信我知道。但是我却从未选择那些正确的道路&…

弃用Java的终结器

JDK-8165641 (“ Deprecate Object.finalize”)已打开以“ deprecate Object.finalize() ”,因为“ finalizer本质上存在问题,使用finalizer可能会导致性能问题,死锁,挂起和其他问题…

python安装mysqlclient_Python-安装mysqlclient(MySQLdb)

mysqlclient(也就是Python3版本的MySQLdb),性能比pymysql好,速度更快及PyMySQL的应用场景;所以一般大项目建议使用MySQLdb 使用pip安装 pip install mysqlclient 安装过程中可能会出现如下问题:解决方法如下…

tesorflow 填充‘same’与‘valid’

源码: #codingutf-8import tensorflow as tf# case 2 input tf.Variable(tf.random_normal([1, 256, 256, 3]))op1 tf.layers.conv2d(inputsinput, filters164, kernel_size(7, 7), strides(2, 2), padding"same", activationtf.nn.relu)op2 tf.layer…

hadoop中两种上传文件方式

记录如何将本地文件上传至HDFS中 前提是已经启动了hadoop成功(nodedate都成功启动) ①先切换到HDFS用户 ②创建一个user件夹 bin/hdfs dfs -mkdir /user (hadoop目录下) 多级创建的时候 hdfs dfs -mkdir -p /wifi/classify 查看创…

c语言科学计数法_C入门:C语言中数据的储存(上)

How Data is stored in computer memory?储存数据是计算机进行各种数据操作的基础,为了理解计算机可以对哪些数据进行怎样的操作,有必要了解数据在计算机中的储存方式。为了有效防止失真,提高数据的准确性和稳定性,计算机使用二进…

tf.layers.dense

tf.layers.dense( inputs, units, activationNone, use_biasTrue, kernel_initializerNone, bias_initializertf.zeros_initializer(), kernel_regularizerNone, bias_regularizerNone,activity_regularizerNone, trainableTrue, nameNone, reuseNone ) 各参数含义:…

java 修改 枚举类字段_枚举枚举和修改“最终静态”字段的方法

java 修改 枚举类字段在本新闻通讯中,该新闻通讯最初发表在Java专家的新闻通讯第161期中,我们研究了如何使用sun.reflect包中的反射类在Sun JDK中创建枚举实例。 显然,这仅适用于Sun的JDK。 如果需要在另一个JVM上执行此操作,则您…

tf.reduce_mean

tf.reduce_mean(input_tensor, axisNone, keep_dimsFalse, nameNone, reduction_indicesNone) 作用:沿着张量不同的数轴进行计算平均值。 参数:input_tensor: 被计算的张量,确保为数字类型。 axis: 方向数轴,如果没有…

display函数怎么使用_使用网络构建复杂布局超实用的技巧,赶紧收藏吧

前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid/pen/zYqNvgvHeader Aside 1 Section Aside 2 Footer在上面,我们创建了一…

安装后jdk1.8 配置环境变量以后 版本显示还是1.7

配置图如下 1.7版本不用卸载 不用就可以了 转载于:https://www.cnblogs.com/roujiamo/p/10836593.html

为@Cacheable设置TTL – Spring

今天,我被要求为应用程序正在使用的某些键设置缓存的过期时间,因此我Swift开始寻找Spring Cacheable表示法提供的所有选项,以设置过期时间或生存时间。 由于Spring没有提供任何可配置的选项来实现它,因此,我利用固定延…

tf.equal

tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的 import tensorflow as tf import numpy as np A [[1,3,4,5,6]] B [[1,3,4,3,2]] with tf.Session() a…

校验输入框的内容不能重复_答应我,用了这个jupyter插件,别再重复造轮子了

以下文章来源于Python大数据分析 ,作者费弗里1 简介在使用Python、R等完成日常任务的过程中,可能会经常书写同样或模式相近的同一段代码,譬如每次使用matplotlib绘制图像的时候可以在开头添加下面两行代码来解决中文乱码等显示问题&#xff1…