• 利用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~
  • 相关阅读:
    今天博客开通第一天,以此纪念!
    基于opencv的车牌识别系统
    【C和指针】笔记1
    【局域网聊天客户端篇】基于socket与Qt
    对Qt下对话服务器客户端的总结(MyTcpServer与MyTcpClient)
    linux 线程编程详解
    【linux】安装samba服务
    linux(ubuntu)获取命令源码方式
    win7下用SSH连接linux虚拟机
    Linux下deb包安装工具(附带安装搜狗输入法)
  • 原文地址:https://www.cnblogs.com/jkmiao/p/5653592.html
Copyright © 2020-2023  润新知