实践课:不停机迁库

Posted by 大雁小鱼的博客 on January 9, 2019

目标

本次实践课的课程目标如下
目标:通过实践操作,掌握MYSQL不停机迁库的原理和操作方法。实践出真知啊,一定要动手实践才能真正掌握。

环境

操作系统 kali
MySQL 8.0

操作流程大纲

  1. 源码安装MYSQL8.0
  2. 启动2个MYSQL实例,并创建用户表
  3. 用Python编写导入大量用户信息(约10万条记录)的脚本
  4. 编写一个SpringBoot应用程序,开发一个HTTP接口随机访问用户
  5. 编写一个BASH,无限循环访问这个HTTP接口
  6. 不停机迁库

操作步骤说明

  1. 源码安装MYSQL8.0
    具体的源码安装MYSQL教程请参考:https://luyuanwan.github.io/2019/01/06/源码安装mysql/
    建议读者也能源码安装MYSQL,多动手一定会学到很多东西的

  2. 启动2个MYSQL实例,并创建用户表
    关于如何启动2个MYSQL实例,请参考:

创建用户表语句如下:

CREATE TABLE user(
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  PRIMARY KEY(id)
);
  1. Python编写导入SQL数据脚本
    for i in range(100000):
     print("insert into user(name) values('name' + str(i));");
    
  2. 编写SpringBoot应用,Controller代码如下
    @RestController
    public class UserController{
    
     @Autowired
     UserDao userDao;
        
     Random random = new Random(100000);
        
     @RequestMapping(value = "/get/user",method=RequestMethod.GET)
     public String user(){
         int id = random().nextInt();
         if(id<0){
            id = id*-1;
         }
         id = id % 100000;
         User user = userDao.findUser(id);
         return JSON.toJSONString(user);
     }
    }
    
  3. 编写Bash
    while true
    do
      curl localhost:8080/get/user
    done
    
  4. 不停机迁库

未完待续

如果觉得排版不好看,可以参考:https://github.com/luyuanwan/luyuanwan.github.io/blob/master/_posts/2019-01-09-实践课:不停机迁库.md