一、什么是数据库迁移?

随着业务的增长或机器老化等原因,不可避免会碰到将数据库从一台机器迁移到另一台机器(集群)的问题。数据库迁移可分为冷迁(离线)和热迁(在线实时).

二、如何无缝迁移?

以旧库 192.168.0.101:3306 --> 迁移到192.168.0.102:3307 为例

离线迁移很简单.

.Shell>> mysqldump -uadmin -pxxxx --add-drop-database --database dbname1, dbname2, dbname3 > backup_data.sql    # 利用mysqldump 命令导出数据库

. Shell>> sudo services mysqld stop # 导出后停掉远离数据库服务器,防止再写入.

. Shell >> scp bakup_data.sql admin@192.168.0.102:/data/ # 将数据库上传到新机器.

. mysql> source backup_data.sql # 登录新机器mysql后,用source命令导入即可.

4. 注意通过show tables, select count(*) 等语句检查一下数据一致性。

5. 开启mysql-proxy 将建立到旧库到新库的代理转发(视业务情况而定,也可直接前端修改源码数据库配置)。

Shell>> mysql-proxy -address 192.168.0.101: --proxy-backend-addresses 192.168.0.102: # 启动mysql-proxy代理,将请求转发到新库。

过一段时间确定无误后,可以将原来机器备份数据 backup_data.sql 删除,以节省空间。

=======

在线迁移,原理一样。只是在数据库导出到导入时,针对较大的数据库耗时较长或比较重要的实时在线业务,开启二进制日志记录,不必停用原有数据库。在上述第三步后,再增量备份一下。

3.1 查看记录点

mysql> show master status或 mysql>show binary logs; # 记住此时原来数据库记录点。(若没有,需要先在配置文件my.cnf中[mysqld]下加一行: log-bin=mysqlbin-log #打开binlog日志记录)

3.2 增量备份

shell>> mysqlbinlog --start-position= --stop-position= mybinlog. > newdata.sql #  将日志记录导出为sql文件.
mysql> source newdata.sql # 导入增量备份数据

利用mysql-proxy 代理无法迁移数据库的更多相关文章

  1. mysql proxy代理安装和配置

    mysql proxy代理安装和配置 服务器说明: 192.168.1.219   mysql主库(主从复制) 192.168.1.177   mysql从库(主从复制) 192.168.1.202 ...

  2. Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目

    http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application  shang  2年前 (2013-03-28) ...

  3. docker数据卷学习-利用数据卷实现mysql的快速恢复和迁移

    docker数据卷学习 一 新建带有数据卷的容器 1.从docker hub下载centos7镜像 # docker pull centos 2. 创建container # docker run - ...

  4. mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?

    原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...

  5. Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended

    问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...

  6. 利用 Docker 备份、迁移数据库

    原文地址:https://zeeko.1503.run/Article/17 最近在把腾讯云的国内主机迁移到香港主机,因为之前使用的 MySql 跟 MongoDb 都是基于 Docker 部署的,所 ...

  7. 使用mysql proxy对数据库进行读写分离

    服务器安排如下: 192.168.100.128 主 192.168.100.129 从 192.168.100.130 mysql-proxy 1.在100.130中下载安装mysql-proxy ...

  8. C# 利用mysql.data 在mysql中创建数据库及数据表

    C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...

  9. mysql proxy 数据库读写分离字符集乱码

    mysql proxy 数据库读写分离字符集乱码 解决办法 在对应配置后端数据库服务器的配置.cnf中加入如下代码 init-connect='SET NAME UTF8' skip-characte ...

随机推荐

  1. svn tree conflicts 解决方法

    svn resolve --accept working -R XXX. 其中XXX为提示冲突的目录.

  2. 使用 margin 让div块内容居中

    问:有一个div块,其width为300px,如何设置margin让div块居中显示? 答:margin设置为 margin:0 auto,即div块的上下外边距设置为 0 , 左右外边距设置为 自动 ...

  3. Logistic回归的牛顿法及DFP、BFGS拟牛顿法求解

    牛顿法 # coding:utf-8 import matplotlib.pyplot as plt import numpy as np def dataN(length):#生成数据 x = np ...

  4. jQuery UI 对话框(Dialog) - 模态表单

    <!doctype html><html lang="en"><head> <meta charset="utf-8" ...

  5. linux下恢复误删除的文件方法(ext2及ext3)

     linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...

  6. Google perf tools for nginx

    注意:本教程仅适用于Linux. 下面为大家介绍google-perftools的安装,并配置Nginx和MySQL支持google-perftools. 首先,介绍如何优化Nginx: 1,首先下载 ...

  7. Python合并两个numpy矩阵

    numpy是Python用来科学计算的一个非常重要的库,numpy主要用来处理一些矩阵对象,可以说numpy让Python有了Matlab的味道. 实际的应用中,矩阵的合并是一个经常发生的操作,如何利 ...

  8. EntityValidationErrors

    关于如何查看 EntityValidationErrors 详细信息的解决方法 我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 "See 'EntityValidat ...

  9. Spring使用拦截器支持国际化(转)

    Spring使用拦截器支持国际化很方便,使用时只需要两个步骤: 一.spring配置 具体配置方式如下: <!-- 资源文件绑定器,文件名称:messages.properties(没有找到时的 ...

  10. risc与cisc

    RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法. 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成 ...