【Docker】基于实例项目的集群部署(五)Docker搭建MySQL集群 | PXC集群

PXC 集群搭建 一、PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上。这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据库的官方镜像, 地址:https://hub.docker.com/r/percona/percona-xtradb-cluster/ 如下图所示: 图 安装该镜像有两种方式: - docker pul... 阅读详情

单节点数据库瓶颈

我们知道,单节点数据库通常存在如下弊端:

  • 大型互联网程序用户群体庞大,所以架构必须要特殊设计
  • 单节点的数据库无法满足性能上的需求
  • 单节点数据库没有冗余的设计,无法满足高可用特性

例如,在2016年春节,微信红包的业务量巨大:共有142亿个红包,比平时的业务量增加了75%,且每秒76万个红包。同时,产生了2900万张红包张片,5.16亿人参与,每秒的支付峰值达到20.8万。
如果这是一个单节点的MySQL数据库,则将带来性能上巨大的瓶颈。

那么,你一定会问,有没有MySQL集群方案,来处理这件事呢?
答案是肯定的!

MySQL集群方案

常见的MySQL集群方案有:

在这里插入图片描述

Replication

  • 1、存储速度快;
  • 2、弱一致性:在A节点写入的数据,无法保证把这条数据分发到集群的其他节点上,这就有可能出现在A节点写入的数据,在B节点上查不到这条数据。
    由于弱一致性的特点,我们不能在Replication上保存高价值的数据,而是适合保存低价值的数据,如日志数据、新闻、论坛帖子数据等。

PXC(Percona XtraDB Cluster)

  • 1、存储速度稍慢
  • 2、强一致性:能保证数据同步的强一致性;在集群的A节点写入的数据,PXC方案一定会保证这条数据成功的同步到数据库集群的其他节点上。所以,PXC方案适合保存高价值的数据,如订单、账户、财务数据等等。

PXC原理

PXC 基于Mysql的Galera技术实现的数据库集群方案。在PXC集群中,任何一个数据库的节点都是可读可写的。可以在第一个节点中写入数据,在其他节点中就可以成功的读取这条数据,这体现了强一致性。
另外,在PXC集群中,集群上节点的数据库都是Mysql,我们可以使用Mysql官方的版本或Mysql的衍生版。但是,建议的是,使用的数据库实例可以用PerconaServer,它是Mysql的改进版,性能提升很大。所以,建议使用PerconaServer去搭建Mysql集群。

在这里插入图片描述

PCX方案与Replication方案对比

PXC集群,数据同步是双向的。即,在任何一个Mysql节点上都是能够同时读写数据的。如下图:
在这里插入图片描述

而,Replication方案的数据读写是单向的。例如,在Master节点上写入数据,在Slave节点上能读到这条数据,但是在Slave上写入数据,Master节点上就会读不到这条数据。因为,Replication的方案是单向的。所以,Replication方案导致集群里面的节点不是同时可以进行读写。
在这里插入图片描述

PCX方案的数据强一致性

在这里插入图片描述

由上图可知,PXC采用同步复制机制,即事务在所有集群节点要么同时提交,要么不提交。
而Replication采用异步赋值机制,无法保证数据的一致性。

  • 同步复制机制:同步机制要求必须在其他节点中也要成功的写入数据,才能算是一次写入的成功;

所以,把数据写入到第一个Mysql节点上后,还需要通过同步机制,把这个数据同步到其他节点,并且在其他节点成功的提交事务后,最后才算是写入成功。这个时候,第1个Mysql节点,才会把成功的节点告诉给Mysql 的客户端。如果有一个节点写入失败,那么这次写入就会算失败,不会同步到其他节点,客户端得到的反馈也是写入失败。

Replication数据弱一致性

在这里插入图片描述

Replication的异步复制机制,例如在第一个Mysql节点中写入数据,如果这个节点成功提交事务,就会直接返回写入成功的结果。但是,如果同步失败了,那么第二个节点可能就无法读到数据。这就好比你在淘宝上买东西,下了订单,付了款后,可是你却在订单列表中没有发现你的订单。这事就严重了。
所以,对于高价值数据,采用PXC集群式很有必要的!

PXC 集群实例与Replication集群实例对比

  • Replication 集群实例:

在这里插入图片描述

  • PXC集群实例:
    在这里插入图片描述

把第二个节点的同步机制关闭,那么就会造成写入失败。这验证了PXC的强一致性原则。
在这里插入图片描述

PXC集群安装

首先,下载PXC集群,下载地址:
https://hub.docker.com/r/percona/percona-xtradb-cluster

在这里插入图片描述

安装PXC镜像

下载:docker pull percona/percona-xtradb-cluster
导入:docker load < /home/soft/pxc.tar.gz>

下载完成后:
在这里插入图片描述

由于percona-xtradb-cluster名字较长,所以,可以进行修改:

docker tag docker.io/percona/percona-xtradb-cluster pxc

在这里插入图片描述

我们可以把原来的删除:
docker rmi docker.io/percona/percona-xtradb-cluster

在这里插入图片描述

现在假设我们要创建5个节点的PXC集群,那么我们就需要创建5个PXC容器:
创建出来的PXC容器,不要对接Docker以外的网络,否则不安全。
出于安全考虑,我们要先给PXC集群在Docker虚拟机内部单独划分一个网段,这个网段外部是无法直接访问的,可以通过Docker开放的端口供外部访问。

创建内部网络

出于安全考虑,需要给PXC集群实例创建Docker内部网络:

docker network create net1//net1表示创建的网段名字
docker network inspect net1//查看net1网段的信息
docker network rm net1//删除net1网段

docker虚拟机自带的网段是172.17.0.xx,那么net1的ip 就是172.18.0.xx ,以此类推,当你创建第二个网段的时候,第二个网段的Ip就是172.19.0.xx 。。。

如果你想创建的网段不是172.18.0.xx,那么你可以自己规定:
docker network create --subnet=172.18.0.0/24 net1 //创建了一个地址为172.18.0.0 ,端口为24的,名称为net1的网段。

在这里插入图片描述

Docker容器的使用原则:

一旦创建容器,不要把业务数据保存在容器中,而要保存在宿主机中。
那,怎么做呢?——> 使用的技术就是“目录映射”!
可以把宿主机上的一个目录映射到容器内。在运行容器的时候,把业务数据保存到这个映射目录里面,即存储到了宿主机的目录里面。
这样,一旦容器发生故障,只需要把这个容器停掉或删除掉,然后重新启动一个新的容器,然后把宿主机的目录映射给新的容器,那么新的容器启动后,就自带了这些业务数据。

但是,PXC这种方案,无法直接使用映射目录的方式,那么就需要采用另外一种目录映射的技术:“Docker卷”。

创建Docker卷

docker volume create --name v1 //创建一个名称为v1的Docker卷

创建的这个Docker卷,在宿主机中能够看得见。因为这是在宿主机上的Docker创建的一个卷,而这个卷在宿主机上是能看到目录的。然后,把这个卷映射给容器,这样,当PXC容器启动后,就可以把数据映射到卷的目录中。我们通过宿主机可以看到通过映射出来的数据。

在这里插入图片描述

现在我们创建的这个卷在宿主机上的真实路径是:/var/lib/docker/volumes/v1/_data
有了这个路径,那么,当创建PXC容容器时,我们就可以把这个数据卷v1 映射到容器的Mysql目录中。

同时,你可以删除这个数据卷: docker volume rm v1

创建PXC容器

  • 只需要向PXC镜像传入运行参数就能创建出PXC容器
[root @ localhost / ] docker run -d -p 3306:3306
-v v1:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=abc123456
-e CLUSTER_NAME=PXC
-e XTRABACKUP_PASSWORD=abc123456
--privileged --name=node1 --net=net1 --ip 172.18.0.2
pxc

解释:

  • docker run -d -p 3306:3306//-d:创建出的PXC容器,需要在后台运行; -p 端口映射,把容器的3306端口映射到宿主机的3306端口上;
  • 路径映射:-v v1:/var/lib/mysql//v1数据卷映射到容器中的Mysql的数据目录
  • 启动参数:-e MySQL_ROOT_PASSWORD=abc123456 创建出的数据库实例,对应的密码(这里是abc123456)
  • 创建出来的PXC集群名字 : -e CLUSTER_NAME=PXC (这里是PXC)
  • 数据库节点之间同步时要用到的密码: -e XTRABACKUP_PASSWORD=abc123456(这里是abc123456)
  • 权限:--privileged (最高权限,可读可写可执行)
  • 给创建出来的容器起名字:--name=node1
  • 使用的内部网段:--net=net1
  • 使用的内部网段的IP地址: --ip 172.18.0.2
  • 镜像的指令:pxc 执行指令后一个PXC的容器就会创建出来
    在这里插入图片描述
    端口参数需要错开
    在这里插入图片描述
    CLUSTER_JOIN=node1 : 与node1节点进行同步
    在这里插入图片描述
    分配ip地址,需要错开

实际操作:
在这里插入图片描述

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

注意:虽然上面语句一下子就执行了,但是实际上Mysql数据库的初始化不会这么快就完成,至少需要2分钟才能完成。所以,你需要等待。因为,如果第一个容器的Mysql没有初始化成功,就创建第二个PXC容器时,这第二个PXC容器启动时,会发生闪退。因为,第二个容器的MYSQL与第一个容器的MYsql做同步的时候,它会发现第一个容器的Mysql没有成功启动,那么第二个容器就会发生故障,导致第二个容器闪退。 所以,请你耐心等待第一个容器里的Mysql成功初始化,并且你通过客户端能连接到这个Mysql实例,你再去创建第二个、第三个.....PXC实例。

接着,我们创建数据库的连接:

这里我们使用在navicat Mysql上创建:
新建一个连接,取名为DB1,IP地址填宿主机的IP,端口号也是填宿主机的端口号,用户名是root,密码我这里填abc123456。
注意:在这之前,你的centOs7上先要安装mysql。具体安装过程请参考:
https://www.cnblogs.com/starof/p/4680083.html
https://blog.youkuaiyun.com/paullinjie/article/details/80340145
https://blog.youkuaiyun.com/wzhedward/article/details/71036689

安装完成后,请在centos7上开放防火墙的3306端口。命令:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

在这里插入图片描述
在这里插入图片描述
同样,创建DB1节点成功后,我们可以陆续创建其他4个节点:DB2、DB3、DB4。

创建完成后,先启动docker: service docker restart

然后,创建五个volume:

docker volume create v1
docker volume create v2
docker volume create v3
docker volume create v4
docker volume create v5

创建PXC容器

我们就可以接在在centos7上创建PXC容器:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v2:/var/lib/mysql --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v2:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v5:/var/lib/mysql --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

然后我们在,DB1上新建一个数据库test:

在这里插入图片描述
创建成功后,我们去创新DB2、DB3、DB4、DB5,可以看到这几个节点也同步了test数据库:
在这里插入图片描述
OK,接着我们在test数据库上创建一张数据表,命名为student:执行之后,表结构如下:
在这里插入图片描述
我们再刷新一下其他节点,可以看到其他节点的test数据库,也进行了同步:
在这里插入图片描述
同样,当你在其他节点上更新,也会进行同步。
这样,我们的PXC集群就成功的搭建了!

云原生时代必须具备的核心技能之Docker高级篇(Docker实战之MySQL高可用集群搭建) docker volume create --name v1 # 创建 volumedocker volume rm v1 # 删除volumedocker volume inspect v1 # 查看详情6> 搭建pxc集群准备三个数据卷运行3个PXC容器[CLUSTER_NAME PXC集群名字][XTRABACKUP_PASSWORD数据库同步需要用到的密码]创建第一个节点创建第二个和第三个节点: 注意2.负载均衡服务搭建。 阅读详情

相关推荐

重塑计算的五层蛋糕:解读黄仁勋CES2026演讲背后的AI新秩序与物理世界

2026年CES演讲揭示AI新纪元:从语言模型到物理智能 NVIDIA CEO黄仁勋在2026年CES演讲中描绘了计算产业的根本性变革。核心突破包括: 计算范式转移:从指令执行转向意图理解,智能体系统崛起 物理AI突破:发布Cosmos世界模型,通过合成数据训练AI理解物理定律 全新VeraRubin计算平台:6芯片协同设计,解决摩尔定律放缓与AI需求增长的矛盾 自动驾驶革命:推出具备推理能力的Alpamayo模型,实现L4级自动驾驶 演讲标志着AI正从数字世界迈向物理世界,NVIDIA通过全栈布局,正在重

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1272

Percona XtraDB Cluster高可用架构集群

本课程由目前是国内完整和系统讲授PXC集群架构的第一人黄老师主讲,课程整体以精通PXC集群为课程体系,通过丰富操作经验为主,结合PXC集群和架构原理,融合运维实践和丰富经验。

Dify整合FireCrawl与百度搜索实战:手把手教你打造全能研究助手

本文手把手教你基于Dify平台,整合FireCrawl网页爬虫与百度搜索能力,构建一个能同时处理本地文档与实时网络信息的全能研究助手。通过部署核心环境、配置模型、接入两大工具并设计自动化工作流,实现从问题提出到深度分析报告生成的一站式解决方案,极大提升信息调研与整合效率。

weixin_29062963的博客 499

docker搭建pxc集群

Percona XtraDB Cluster(PXC集群),提供了MySQL高可用,多节点同时读写的解决方案。PXC是基于Galera协议的高可用方案。Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。PXC集群是由节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。每个节点都包含完整的数据副本。PXC最大的优势:强一致性、无同步延迟PXC的优点1)服务高可用;

hepeike001的博客 1265

Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置)

本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。

weixin_29200741的博客 328

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

docker pxc5.7.21集群搭建

docker pxc集群搭建

Meng_kiss的博客 1210

飞腾平台(FT2000/4 D2000/8)配置GPIO引脚

飞腾平台配置CPU的引脚为GPIO工作模式的方式有永久型和暂时型: - 永久型是通过UEFI中的MmioWrite32函数来实现的,该方法可以在UEFI阶段就对复用引脚的工作模式配置为GPIO,并且在进入操作系统后仍然不会发生便会; - 临时型是通过rw工具,在系统下手动修改复用引脚的工作模式,该方法在系统重启后会失效,所以是暂时型的。

qq_30135687的博客 5612

docker搭建mysql的集群(双主双从)

文章目录docker搭建mysql的集群(双主双从)主机创建用户并授权:链接Master(主)和Slave(从)链接两个主机 docker搭建mysql的集群(双主双从) 首先在docker上拉取mysql的镜像,以及运行起来四个mysql,不会的话大家可以去看我之前搭建一主一从的文章,在这里细节就不多演示了,直接从4台配置开始: 我这里直接开过了:master,master01,slave,slave01四台 进入master容器内部: docker exec -it mysql-master /bi

世上哪有什么岁月静好,不过是有人替你负重前行 4908

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1853

利用Python爬虫采集京东商品评论情感分析案例(含完整代码)

在电商蓬勃发展的今天,商品评论蕴含着巨大的商业价值。本文以京东商品评论为研究对象,系统介绍如何使用Python构建一个完整的评论采集与情感分析系统。文章涵盖京东反爬机制分析、动态请求模拟、评论数据解析、中文文本预处理、基于SnowNLP和深度学习的情感极性分类、以及可视化展示等完整技术链路。所有代码均基于2025-2026年最新可用接口编写,并提供可直接运行的完整源码。全文力求详实,总字数逾八千字,适合Python数据分析从业者、电商运营人员及自然语言处理初学者参考实践。目录摘要第一章 引言。

2201_76125261的博客 86

搭建PXC集群

PXC集群介绍 Pecona XtraDB Cluster 是业界主流的MySQL集群方案 PXC集群的数据同步具有强一致性的特点 PXC集群只支持InnoDB引擎 PXC集群保存的是高价值的数据 数据库运行在Docker MySQL放在容器中运行会不会有性能损耗? Docker是轻量级的虚拟机,Docker既没有虚拟硬件,又没有安装独立的操作系统,只不过是给Docker线程绑定上了CPU跟内存,然后Docker内部再去划分每个容器占有多少硬件资源,Docker直接使..

Hubbert_Xu的博客 1066

FPGA发展趋势:异构计算、AI加速、可重构计算

FPGA技术正朝着异构计算、AI加速和可重构计算三大方向发展。作为高效能计算平台,FPGA在异构架构中与CPU/GPU协同工作,发挥低延迟、高能效优势;在AI领域通过定制化架构实现边缘推理加速;其硬件可重构特性支持动态适应多样化计算需求。最新进展包括部分可重构技术、智能网卡和边缘AI应用。未来,FPGA将在自适应计算、量子接口和软件定义硬件等领域持续突破,成为异构计算架构的核心组件,推动硬件与软件的深度融合。性能对比显示FPGA在能效比(5-20TOPS/W)和灵活性方面具有显著优势。

2301_79143213的博客 967

Docker搭建MySQL的PXC集群

一、简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galera cluster最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。本身galera cluster也是一种多主架构。galera cluster最关注的是数据的一致性,对待事物...

飘蓝 5658

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

PXC集群原理与搭建

pxc数据库集群与docker部署

weixin_42222903的博客 3019

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

云平台服务器环境用docker部署PXC MySQL集群

如果想要了解docker单机版集群的请看docker安装mysql(PXC)集群 如果你不想用docker部署,想用源码安装 并且搭建集群请借鉴 (安装过程略)VMware利用3台Ubuntu搭建MySQL集群服务器 在当前的IT 环境下 docker部署成为了一种潮流 在正式进入docker安装PXC集群前的小故事 源码 或者 二进制包安装 在搭建MySQL集群的时候,我思...

诗水人间 13万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Docker搭建MySQL的PXC方案集群

安装Docker环境 搭建5个MySQL节点 拉取镜像到本地 docker pull percona/percona‐xtradb‐cluster 镜像名称太长不方便使用,进行一下改名,改名后删除原来的镜像 docker tag percona/percona‐xtradb‐cluster pxc docker rmi percona/percona‐xtradb‐cluster 创建内网网段net1 创建网段:docker network create --subnet=172.18.0.

clonechen 1180

CentOS7 下 MySQL 之 PXC 集群部署【Docker+多机多节点】

最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 … 【注】:Percona XtraDB Cluster(简称 PXC 集群) —— 业界主流的 MySQL 集群方案 PXC 最大的优势:强一致性、无同步延迟 (牺牲性能)

u011415782的专栏 3077

mysql高可用-基于docker容器下的pxc集群方案

mysql单机性能测试 mysqlslap -h192.168.1.16 -uroot -p123456 -P3306 --concurrency=5000 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=in...

欢迎来到>热爱生活<的博客 4712

MySQL 之 PXC 集群部署

使用pxc搭建mysql集群

niwoaa的博客 1304

基于Docker的MYSQL PXC集群搭建

pxc集群是Percona XtraDB Cluster的缩写,其官方网页可以看这里https://www.percona.com/software/mysql-database/percona-xtradb-cluster。是基于percona数据库和galera中间件一种特殊MYSQL数据库,而且据说percona数据库的性能要比mysql还要好一些,并且是基于mysql,可以使用mysql的...

lvshaorong的博客 5098

docker部署mysql8之PXC8.0分布式集群

docker部署mysql8之PXC8.0分布式集群

weixin_43053507的博客 2409

【详细学习Docker部署搭建高可用的MySQL集群环境】

MySQL集群搭建在实际项目中是非常必须的,接下来我们来学习通过PXC【Percona XtraDB Cluster】来实现强一致性数据库集群搭建。好了,到这里【详细学习Docker部署搭建MySQL集群环境】结束了,更多内容持续创作中。还有更多的命令进行测试,同理,感兴趣的同学可以自行尝试。

Coder_ljw的博客 4701

docker搭建PXC集群

前言 随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以考虑mysql集群,另一方面可以考虑读写分离,这两种方案的出发点不同,集群更多是从单节点可容纳的并发连接数考虑,比如单节点的mysql服务器支持的最大连接数是有限的;而读写分离可以提升mysql服务总体的读写性能,避免读请求和写请求都打到同一个节点上,分摊压力 总结来说,可以归纳为单节点的mysql服务始终是

weixin_43345365的博客 517
上一篇: 【Docker】基于实例项目的集群部署(四)Docker虚拟机 | Docker 指令 | Docker容器与镜像
下一篇: 【Docker】基于实例项目的集群部署(六)数据库负载均衡 | Haproxy分发机制 | 监控负载状况
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值