• 线上项目腾讯云平滑迁移方案及步骤


    目前项目需要迁移至公有云,数据量较大,访问量极高,以腾讯云为例.
    我们有两种方案
    (1)购买配置cvm部署应用,云存储Redis,CDB for MySQL,负载均衡CLB(公网)
    问题:
    1.腾讯云redis迁移工具原理为主从拉取rbdaof进行全量同步,考虑共用腾讯云旧实例保留老数据,及本身主从redis有其他项目数据,便放弃迁移。
    2.redis主从同步,跟分库(15个)无关,slaveof后会覆盖各个分库。拉取主库全部分库数据。
    3.腾讯云不支持mysql5.7迁移及mysql5.7至mysql5.7迁移工具不兼容,采用在线上5.7版本建立5.6从库,之后5.6从库 DTS至腾讯云,保持主从同步。
    上线步骤:
    1.参考项目线上网络环境及目前腾讯云已迁入应用网络环境设置,大体评估购买腾讯云产品选型、参数及网络配置。
    *内网可达:
    账户中心:域名
    redis
    mysql
    *公网可达:
    nginx
    2.腾讯云基础环境准备
    *负载均衡CLB(公网)
    若无公共CLB,需购买1公网CLB,购买参数参照运维建议。
    *云服务器CVM
    统计线上项目 uv,硬件资源使用,配置>2台内网cvm部署项目,若无公共CLB需1台公网部署nginx,购买配置参照腾讯已迁入应用及运维建议.
    *CDB for MySQL
    1台(1主1备版),购买参数参照线上mysql参数及腾讯已迁入mysql
    *云存储Redis

    3.若无公共redis,需购买1台(主从版),容量参照线上使用情况。
    1.协助运维准备腾讯云基础环境:
    2台CVM(2核4G) 网络可达账户中心
    1台redis实例(主从)>1GB
    1个mysql实例(主从版,版本5.6)
    //腾讯云不支持版本5.7实例,同步工具也不支持5.7->5.7同步.
    2.创建当前线上mysql(5.7)的5.6版本从库,计划从该从库创建DTS数据迁移
    创建mysql 5.6实例,并开启binlog,重启
    [mysqld]
    log-bin=mysql-bin
    server-id=** //[必须]服务器唯一ID,默认是1,一般取IP最后一段
    2.创建线上项目备份:
    mysqldump -uroot -p ** --routines --single_transaction --master-data=2 --databases 库名 > _back.sql
    3.5.6实例还原备份,查看备份点
    mysql -uroot -p** 库名 < _back.sql
    4.创建主从
    mysql>change master to master_host='线上主IP',master_user='root',MASTER_PORT=3306,master_password='**', master_log_file='gzflog-bin.000004',master_log_pos=2496;
    5.查看同步状态
    mysql>start slave;
    mysql> show slave statusG;
    6.查看项目原有从库状态是否受影响:
    mysql> show slave statusG;
    7.对比总条数:
    use ****
    select count(1) from table;
    select count(1) from table;
    select count(1) from table;
    select count(1) from table;

    3.协助运维创建mysql DTS数据迁移任任务.
    参照:https://cloud.tencent.com/document/product/571/8710
    线上msyql(10.1.3.82)创建super权限迁移账号
    GRANT ALL PRIVILEGES ON *.* TO "迁移账号"@"%" IDENTIFIED BY "迁移密码";
    FLUSH PRIVILEGES;
    确认 MySQL 变量
    SHOW GLOBAL VARIABLES LIKE 'XXX';
    确认log-bin,动态修改配置:
    set global server_id = 99;
    set global binlog_format=ROW;
    set global binlog_row_image=FULL;
    set global innodb_stats_on_metadata = 0;
    创建迁移任务,选择全量+增量,整个实例
    启动迁移,增量同步,持平后对比项目表数据条数,并保持主从同步状态
    use ****
    select count(1) from access_token;
    select count(1) from client;
    select count(1) from refresh_token;
    select count(1) from user;
    3.部署项目
    通知运维项目使用redis 1号库
    修改jenkins 项目部署线上配置
    修改项目配置文件,jenkins配置模板,有新增字段
    #端口
    server.port=8280
    management.port=8281
    #mysql
    spring.datasource.url=jdbc:mysql://*****:3307/***8?useSSL=false
    spring.datasource.username=***
    spring.datasource.password=****
    #redis
    spring.redis.host=****
    spring.redis.port=****
    spring.redis.database=1

    部署,并测试接口及网络环境
    curl -X POST -d ""
    curl -X GET ""
    curl -X GET ""
    ping ***.com
    协助运维配置nginx,并测试网络可达
    查看redis存储:
    redis-cli -h ***** -p 6479
    select 1;
    keys *o*
    通知运维写停机脚本
    线上两台机器:**********
    ps -ef|grep ***
    kill -9 id

    4.通告相关部门项目腾讯云迁入IP变更.(待统计)

    5.具备上线条件后,操作上线步骤
    检查项目运行状态是否正常
    检查mysql主从同步状态是否正常(运维)
    核对网络切换步骤(运维)
    执行项目停机脚本,运维切换网络入口(运维)
    测试登录
    https://dev-game.smartisan.com/
    核对mysql主从同步状态,无误后,停止同步.
    * 提交测试
    * 查看监控服务、网络状态

  • 相关阅读:
    No bean named 'springSecurityFilterChain' is defined
    Spring管理hibernate Session
    集成hibernate
    Maven setting.xml
    SpringMVC集成Spring
    搭建SpringMVC
    一个简单的web project
    一文带你认识Java8中接口的默认方法
    抽象类和模板方法模式
    可能你不知道的,关于自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/guozefeng/p/7252546.html
Copyright © 2020-2023  润新知