zoukankan      html  css  js  c++  java
  • 利用mysql-proxy 代理无法迁移数据库

    一、什么是数据库迁移?

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

    二、如何无缝迁移?

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

    离线迁移很简单.

    1.Shell>> mysqldump -uadmin -pxxxx --add-drop-database --database dbname1, dbname2, dbname3 > backup_data.sql    # 利用mysqldump 命令导出数据库
    
    2. Shell>> sudo services mysqld stop # 导出后停掉远离数据库服务器,防止再写入.
    
    3. Shell >> scp bakup_data.sql admin@192.168.0.102:/data/ # 将数据库上传到新机器.
    
    3. mysql> source backup_data.sql # 登录新机器mysql后,用source命令导入即可.

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

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

    Shell>> mysql-proxy -address 192.168.0.101:3306 --proxy-backend-addresses 192.168.0.1023307 # 启动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=2772 --stop-position=5620 mybinlog.000005 > newdata.sql #  将日志记录导出为sql文件.
    mysql> source newdata.sql  # 导入增量备份数据
    每天一小步,人生一大步!Good luck~
  • 相关阅读:
    编程之美3.7 队列中最大值问题
    群聊天
    POJ 3384 Feng Shui 半平面交
    Fiberead
    熊猫资本李论:为何我不看好“轻轻家教”模式?_亿欧网_驱动创业创新
    轻轻家教_百度百科
    为什么我们要使用新型Web安全协议HSTS?
    http://www.doframe.com/jetoolweb/index.html
    http://www.16aspx.com/Code/Show/5352
    http://www.ybtsoft.com/
  • 原文地址:https://www.cnblogs.com/jkmiao/p/5653592.html
Copyright © 2011-2022 走看看