美文网首页
docker下的集群搭建部署(一)Mysql集群

docker下的集群搭建部署(一)Mysql集群

作者: 是takiku啊 | 来源:发表于2019-12-27 16:13 被阅读0次

    1、安装mysql集群(PXC)

    docker pull percona/percona-xtradb-cluster
    

    2、创建docker内部网络

    docker network create --subnet=172.18.0.0/16 net1
    

    查看刚才创建的网络

    docker network inspect net1
    

    3、创建docker卷

    docker volume create --name v1
    docker volume create --name v2
    ...
    

    创建备份数据卷(用于热备份数据)

    docker volume create --name backup
    

    查看刚才创建好的卷

    docker inspect v1
    

    4、创建节点

    docker run -di -p 3306:3306 \
    -v v1:/var/lib/mysql \
    -v backup:/data \
    -e MYSQL_ROOT_PASSWORD=960930 \
    -e CLUSTER_NAME=PXC \
    -e XTRABACKUP_PASSWORD=960930 \
    --privileged=true --name=node1 --net=net1 --ip 172.18.0.2 \
    pxc
     
    docker run -di -p 3307:3306 \
    -v v2:/var/lib/mysql \
    -v backup:/data \
    -e MYSQL_ROOT_PASSWORD=960930 \
    -e CLUSTER_NAME=PXC \
    -e XTRABACKUP_PASSWORD=960930 \
    -e CLUSTER_JOIN=node1 \
    --privileged=true --name=node2 --net=net1 --ip 172.18.0.3 \
    pxc
    
    docker run -di -p 3308:3306 \
    -v v3:/var/lib/mysql \
    -v backup:/data \
    -e MYSQL_ROOT_PASSWORD=960930 \
    -e CLUSTER_NAME=PXC \
    -e XTRABACKUP_PASSWORD=960930 \
    -e CLUSTER_JOIN=node1 \
    --privileged=true --name=node3 --net=net1 --ip 172.18.0.4 \
    pxc
     
    docker run -di -p 3309:3306 \
    -v v4:/var/lib/mysql \
    -v backup:/data \
    -e MYSQL_ROOT_PASSWORD=960930 \
    -e CLUSTER_NAME=PXC \
    -e XTRABACKUP_PASSWORD=960930 \
    -e CLUSTER_JOIN=node1 \
    --privileged=true --name=node4 --net=net1 --ip 172.18.0.5 \
    pxc
     
    docker run -di -p 3310:3306 \
    -v v5:/var/lib/mysql \
    -v backup:/data \
    -e MYSQL_ROOT_PASSWORD=960930 \
    -e CLUSTER_NAME=PXC \
    -e XTRABACKUP_PASSWORD=960930 \
    -e CLUSTER_JOIN=node1 \
    --privileged=true --name=node5 --net=net1 --ip 172.18.0.6 \
    pxc
    

    第一个节点创建比较慢需要几分钟,如遇到以下几个错误:

    • 1. 连接出错,查看mysql所在的主机端口是否打开,例如阿里云服务器的安全组端口是否开放,例如3306端口
    image.png
    • 2.远程连接被拒绝, 查看mysql是否允许被远程连接

    查询用户表命令:select User,authentication_string,Host from user;(如果默认都是localhost访问权限)。 则可以创建可以访问的用户名即密码

    GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码';
    

    %代表所有主机,也可以具体到你的主机IP地址
    注:用户名处,填写自己的用户名, 密码处,填写自己访问的密码

    • 3.依赖节点1的节点都闪退,启动不起来

    docker exec -it node1 bash 进入第一个节点容器
    如果进入容器后使用mysql指令出现异常 unknown option --ck;需要先修改容器内mysql配置文件node.cnf , 打开配置文件vi /etc /mysql/node.cnf 将[client]下的‘ck’删除即可。

    more /var/lib/mysql/innobackup.backup.log 查看日志
    cat /etc/mysql/node.cnf 查看配置 连接密码
    发现是用户的问题:没有xtrabackup用户
    进入第一个节点,连接mysql 创建xtrabackup用户,授权远程访问,刷新

    create user xtrabackup identified by 'password'; //这里的password即上面查看的连接密码
    mysql -u root
    grant all on *.* to 'xtrabackup'@'%' identified by 'password'; 
    flush privileges; //刷新授权
    

    相关文章

      网友评论

          本文标题:docker下的集群搭建部署(一)Mysql集群

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