Docker 安装MySQL 主从复制 、Redis 、nginx 、安装maven,和java 配置开发环境

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 使用docker 安装 MySQL 主从复制 、Redis 、nginx 、安装maven,和java 配置开发环境

一、 执行命令,删除原有的docker

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine

二、 安裝docker

  • sudo yum install docker-ce 安装
  • sudo systemctl start docker 启动
  • docker --version 查看版本

    1 安装maven,和java

  • docker pull hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8

----
### 2 安装mysql

  • 拉取镜像,docker pull mysql:5.8
  • 安装mysql主从复制

    安装主库

  • docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=root -p 10000:3306 -d mysql
  • docker ps 查看mysql容器是否启动

    配置
  • 使用navicat 连接数据库,报错。Client does not support authentication protocol ; 解决方法 如下:
  1. 授权
    GRANT ALL ON . TO 'root'@'%';
  2. 刷新权限
    flush privileges;

     此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则;
    
  3. 更改加密规则
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
  4. 更新root用户密码
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  5. 刷新权限
    flush privileges;
  • docker exec -it mysql-master /bin/bash 或 docker exec -it 627a2368c865 /bin/bash 进入mysql主库容器内部
  • 切换到/etc/mysql 目录下, cd /etc/mysql .
  • 修改my.cnf文件,vim my.cnf 在文件中添加如下内容

     [mysqld]
     ## 同一局域网内注意要唯一
     server-id=1001  
     ## 开启二进制日志功能,可以随便取(关键)
     log-bin=mysql-bin

    如果报错,出现没有vi 命令: 依次执行以下命令

      apt-get update;
      apt-get install vim
  • 重启mysql服务,使用命令: docker restart 容器名称或者id (1b4671904bfa)

#### 创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

  • CREATE USER'slave'@'%'IDENTIFIED BY'123456';
  • GRANT REPLICATION SLAVE,REPLICATION CLIENT ON.TO'slave'@'%';

安装从库

  • docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 10001:3306 -d mysql
  • docker ps 查看mysql容器是否启动
配置
  • docker exec -it mysql-slave /bin/bash 或 docker exec -it 627a2368c865 /bin/bash 进入mysql主库容器内部
  • 切换到/etc/mysql 目录下, cd /etc/mysql .
  • 修改my.cnf文件,vim my.cnf 在文件中添加如下内容

     [mysqld]
        server-id=101  
        ## 开启二进制日志功能
        log-bin=mysql-slave-bin   
        ## relay_log配置中继日志
        relay_log=edu-mysql-relay-bin

    如果报错,出现没有vi 命令: 依次执行以下命令

      apt-get update;
      apt-get install vim
  • 重启mysql服务,使用命令: docker restart 容器名称或者id (1b4671904bfa)
    ### 配置主从复制
  • 登录主服务器,执行show master status;如下图
  • 登录从服务器,执行

      change master to master_host='172.17.0.2',master_user='slave',
      master_password='123456',master_log_file='mysql-bin.000001',
      master_log_pos=155,master_port=3306;
  • show slave status G;用于查看主从同步状态。
  • start slave ; 启动主从复制。
  • show slave status G;用于查看主从同步状态。
  • 查看容器的ip docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名称或id(mysql-master)
  • 在容器中安装ping : apt-get install iputils-ping
  • 参数解释

    1. master_host :Master的地址,指的是容器的独立ip,
    2. master_port:Master的端口号,指的是容器的端口号
    3. master_user:用于数据同步的用户
    4. master_password:用于同步的用户的密码
    5. masterlogfile:指定 Slave 从哪个日志文件开始复制数据
    6. masterlogpos:从哪个 Position 开始读,
    7. masterconnectretry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

      3 安装 redis

  • 使用Dockfile 安装redis

      FROM centos
      MAINTAINER merry
      WORKDIR /home
      RUN yum install -y wget gcc && \      
       rpm --rebuilddb && \
       yum -y install gcc automake autoconf libtool make && \
       yum -y install net-tools && \
       yum -y install tar && \
       wget http://download.redis.io/redis-stable.tar.gz && \
       tar -xvzf redis-stable.tar.gz && \
       mv redis-stable/ redis && \
       rm -f redis-stable.tar.gz && \
       yum clean all && \
       cd redis && \
       make && make install     
      EXPOSE 6379
      ENTRYPOINT redis-server /home/redis/redis.conf
      CMD ["redis-server"]
     
  • 构建: docker build -t redis:v1 .
  • 启动: docker run -d -p 6378:6379 redis:v1
    ### 4 安装 nginx
  • 使用Dockfile 安装

        FROM centos
        MAINTAINER merry
        
        #ENV 设置环境变量
        ENV PATH /usr/local/nginx/sbin:$PATH
        
        ADD http://nginx.org/download/nginx-1.16.0.tar.gz .
         
        #RUN 执行以下命令 
        RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
        RUN useradd -M -s /sbin/nologin nginx
        RUN tar -zxvf nginx-1.16.0.tar.gz
        RUN mkdir -p /usr/local/nginx
        RUN cd nginx-1.16.0 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
        ADD nginx.conf /usr/local/nginx/conf/nginx.conf
         
        #EXPOSE 映射端口
        EXPOSE 80 
        EXPOSE 443
        #ENTRYPOINT 运行以下命令
        ENTRYPOINT ["nginx"]
    
  • 构建: docker build --rm --tag centos_nginx:centos .
  • 启动容器:

          docker run \
          --name centos_nginx \
          -d -p 80:80 \
          -v  /home/nginx/html:/usr/share/nginx/html \
          -v  /home/log:/var/log/nginx \
          -v  /home/nginx.conf:/usr/local/nginx/nginx.conf:ro \
          -v  /home/nginx/conf.d:/usr/local/nginx/conf.d \
          nginx 
          

欢迎关注公众号,查看更多内容

XG54_9_WXMH_5X_HB_H_7V

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
16天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
43 6
|
25天前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
20 0
|
25天前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
25 1
|
25天前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
17 0
|
25天前
|
存储 Java 关系型数据库
冬奥会传统文化管理系统【GUI/Swing+MySQL】(Java课设)
冬奥会传统文化管理系统【GUI/Swing+MySQL】(Java课设)
8 0
|
25天前
|
存储 Java 关系型数据库
学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)
学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)
22 0
|
25天前
|
存储 Java 关系型数据库
学生管理系统【GUI/Swing+MySQL】(Java课设)
学生管理系统【GUI/Swing+MySQL】(Java课设)
19 0
|
25天前
|
存储 Java 关系型数据库
洗浴中心管理系统【GUI/Swing+MySQL】(Java课设)
洗浴中心管理系统【GUI/Swing+MySQL】(Java课设)
14 0
|
18天前
|
负载均衡 容灾 关系型数据库
mysql主从复制
mysql主从复制
33 1
|
8天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
148 10