• docker (五) (搭建MySQL数据库集群)


    MySQL集群搭建我们通过PXC【Percona XtraDB Cluster】来实现强一致性数据库集群搭建。

    一 Percona XtraDB Cluster (理论)

    1 简介

    Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下:

    1).同步复制,事务要么在所有节点提交或不提交。

    2).多主复制,可以在任意节点进行写操作。

    3).在从服务器上并行应用事件,真正意义上的并行复制。

    4).节点自动配置。

    5).数据一致性,不再是异步复制。

    Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:

    1).数据的兼容性

    2).应用程序的兼容性:无需更改应用程序

    1).集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上

    2).每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。

    3).每个节点都包含完整的数据副本

    2 优缺点:

    优点:
    ).当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需 远程访问

    2).无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作, 不受影响

    3).良好的读负载扩展,任意节点都可以查询

    缺点:
    1).加入新节点,开销大。需要复制完整的数据

    2).不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上

    3).有多少个节点就有多少重复的数据

    二 docker 搭建

    1> 拉取镜像

    docker pull percona/percona-xtradb-cluster:5.7.21

    2> 复制镜像(重命名,方便后面的命令)

    docker tag percona/percona-xtradb-cluster:5.7.21 pxc

    3> 创建单独的网段,给MySQL数据库集群使用

    docker network create --subnet=172.20.0.0/24 pxc-net
    docker network inpsect pxc-net # 查看详情

    4>创建三个数据卷volume,用于跟mysql集群映射 (数据卷:用来虚拟机和镜像数据一致,持久化)

    docker volume create --name v1
    docker volume create --name v2
    docker volume create --name v3 # 创建 volume
    docker volume inspect v1 # 查看详情

    5> 运行三个 PXC容器

    • 创建第一个节点:
      • -d 表示: 守护线程
      • -p 表示:端口映射
      • -v 表示:宿主机地址绝对路径:容器相对路径 (数据存储位置)
      • -e 表示:后面跟的的参数
        • MYSQL_ROOT_PASSWORD:登录密码
        • CLUSTER_NAME 节点名称
        • EXTRABACKUP_PASSWROD:额外支持密码 (不明白)
        • privileged :有特权的(不明白)
        • net :对应新建的网段
        • ip:单独的一个ip地址

    docker run -d -p 3301:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 --privileged --name=node1 --net=pxc-net --ip 172.22.0.2 pxc

    • 创建第二个和第三个节点:
      • 注意 -e CLUSTER_JOIN=node1 表示:该节点跟哪个节点关联

    docker run -d -p 3302:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=pxc-net --ip 172.22.0.3 pxc

    docker run -d -p 3303:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=pxc-net --ip 172.22.0.4 pxc

    三 测试集群:

    • 三个节点都为启动状态
      在这里插入图片描述
    • 测试连接通过
      在这里插入图片描述
    • 操作三个数据库,发现数据保持一致性
      在这里插入图片描述
  • 相关阅读:
    taro 支付宝/微信小程序的chooseImage真机和开发工具上的区别
    KT148A语音芯片的下载板子导入F1A声音下载操作多次只成功一次都没有声音
    5G专网技术研究及其行业应用
    华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二)
    03 基础配置webpack3打包vue文件
    什么是PUP?什么是PUP程序?
    BetterZip for Mac2024最新mac解压缩软件
    8月4日第壹简报,星期四,农历七月初七,七夕节
    逆向通达信 x 逆向微信 x 逆向Qt
    TCP特性的滑动窗口,流量控制
  • 原文地址:https://blog.csdn.net/weixin_40869022/article/details/128037770