美文网首页
Docker 部署集群mysql

Docker 部署集群mysql

作者: xiaoer0128 | 来源:发表于2020-04-22 10:34 被阅读0次

    一、安装docker

      yum install -y docker #安装
      service docker start #启动
      service docker  stop #关闭
    

    二、常用命令

    docker run -it docker.io/php bash #启动容器并且命令行进入
    docker run -it  -v --privileged /root/php:/root/php docker.io/php bash #启动容器,文件映射,文件加权限 并且命令行进入
    docker run -it --name php --privileged -v /root/php:/root/php -p 9000:80 docker.io/php bash #给名字起名字并且端口映射
    docker ps -a      #查看容器运行状态
    docker tag 原来的镜像的名字 要改为的镜像的名字
    docker start -i 容器名字 #重启容器
    docker volume inspect 容器名字  #查看容器数据卷
    
    截屏2020-04-19 17.52.18.png

    三、 设置加速器

    mkdir -p /etc/docker
    vim /etc/docker/daemon.json
        里面插入
        {
          "registry-mirrors": ["https://reg-mirror.qiniu.com"]
      }
    
    四、分布式集群PXC

    常用的命令

    docker node ls # 查看集群节点
    docker node rm -f 节点id #删除节点 -f 强制删除
    docker swarm leave -f #解散集群
    docker network ls #查看集群网络环境
    docker network create -d overlay --attachable 网络名称 #创建共享网络
    docker nerwork rm 网络名称 #删除虚拟网络
    

    1、 创建Swarm()集群(虚拟主机1)

    docker swarm init #如报错可指定IP --advertise-addr ip
    

    2、管理主机开放端口(虚拟主机1)

    firewall-cmd --permanent --zone=public --add-port=2377/tcp
    firewall-cmd --permanent --zone=public --add-port=7946/tcp
    firewall-cmd --permanent --zone=public --add-port=4789/tcp
    firewall-cmd --permanent --zone=public --add-port=4789/udp
    firewall-cmd --permanent --zone=public --add-port=7946/udp
    firewall-cmd --reload
    

    3、虚拟机2加入集群。切换到虚拟主机2,复制虚拟主机类似的这样的一句话,每个集群都不用,是在主机1,创建集群以后生成的一句话,然后在虚拟机2执行

    docker swarm join \
        --token SWMTKN-1-6d3ssjevrb1vzdde6obgw0dz510ksy4lp0gq7ci3kplak6r701-0jkbeujh0uaz4qh8cehuo749r \
        192.168.56.103:2377     #返回成功的结果是this node joined a swarm as a worker
    

    3、创建分布式容器

    docker network create -d overlay --attachable 网络名称 #创建共享网络
    docker run -it --net=上一步创建的共享网络名称 ...  #创建分布式容器 
    

    4、下载安装pxc

    docker pull percona/percona-xtradb-cluster  #拉去pxc镜像
    docker tag percona/percona-xtradb-cluster pxc #复制并重新命名
    docker rmi percona/percona-xtradb-cluster #删除
    

    5、创建主节点(创建以后,稍等以后,才能连接)

    docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=root -e XTPABACKUP_PASSWORD=root -v pnv1:/var/lib/mysql --privileged --name=pn1 --net=swarm_mysql -e CLUSTER_NAME=pxc1  pxc
    # XTPABACKUP_PASSWORD 节点之间同步密码;pnv1 数据存放在宿主机的位置;--net 上面创建的共享网络名称
    出现了一串加密的字符串就代表成功了,稍等几秒,就可以使用navigate等工具连接数据库了,注意是9001端口
    

    6、创建从节点
    必须先创建主节点,才能创建重节点,否则会闪退

    docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=root -e XTPABACKUP_PASSWORD=root -v pnv1:/var/lib/mysql --privileged --name=pn2  -e CLUSTER_JOIN=pn1 --net=swarm_mysql -e CLUSTER_NAME=pxc1  pxc
    和主节点的区别,增加了CLUSTER_JOIN=主节点的名字;--name= 节点名字
    

    五、搭建Replication集群

    1、下载和安装镜像(非官方)
    docker pull mishamx/mysql
    docker tag  mishamx/mysql rep
    docker rmi  mishamx/mysql
    

    2、创建主节点容器

    docker run -d -p 9003:3306 --name rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_REPLICATION_USER=root -e MYSQL_REPLICATION_PASSWORD=root -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep
    
    
    出现了一串加密的字符串就代表成功了,稍等几秒,就可以使用navigate等工具连接数据库了,注意是9003端口
    

    3、创建从节点

    docker run -d -p 9003:3306 --name rn2 -e MYSQL_MASTER_HOST=rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_REPLICATION_USER=root -e MYSQL_REPLICATION_PASSWORD=root -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep
    与主节点不同,--name 修改;增加了MYSQL_MASTER_HOST=主节点的名字
    

    4、搭建Replication集群2(为了使用mycat支持分片,如果不实用mycat,只做读写分离,此步骤可省去)


    截屏2020-04-21 11.14.53.png

    六、使用MyCat分库分表

    1、什么是切分

    为了降低数据库的负载和缩表
    

    2、垂直切分(降低数据库负载)和水平切分(缩表)

    3、安装OpenJDK1.8

    docker pull adoptopenjdk/openjdk8
    docker tag adoptopenjdk/openjdk8 openjdk8
    docker rmi adoptopenjdk/openjdk8
    

    4、创建Java容器,在数据卷放入Mycat

    docker run -d -it --name mycat1 -v mycat1:/root/server --privileged --net=host openjdk8
    

    5、开发端口

    firewall-cmd --permanent --zone=public --add-port=8066/tcp
    firewall-cmd --permanent --zone=public --add-port=9066/tcp
    firewall-cmd --reload
    

    6、下载Mycat,并放入数据卷

    docker volume inspect 容器名字 #查看容器数据卷
    cd 容器数据卷
    wget Mycat的下载地址
    tar -zxvf Mycat的压缩包  #解压
    

    7、部署负载均衡Mycat
    按照【第六】部署虚拟机1Mycat 部署虚拟机2的Mycat


    未命名.png

    8、Mycat的主要配置文件
    server.xml schema.xml rule.xml

    相关文章

      网友评论

          本文标题:Docker 部署集群mysql

          本文链接:https://www.haomeiwen.com/subject/alavbhtx.html