首页 文章 精选 留言 我的

精选列表

搜索[腾讯云 WAND],共10000篇文章
优秀的个人博客,低调大师

云数据库RDS中的MySQL数据库备份

背景 RDS使用mysqldump对 MySQL 数据库进行逻辑全量备份,使用开源软件Xtrabackup进行物理全量备份,是实例级别的备份。本文主要从原理的角度来介绍MySQL数据库的备份和恢复,让用户更加了解RDS的备份恢复机制。 一、使用Mysqldump进行逻辑备份 mysqldump作为重要的MySQL备份工具,功能相当强大。备份参数、恢复策略,需要仔细研究。 备份数据库: 备份单个数据库或单个数据库中的指定表: mysqldump [OPTIONS] database [tb1] [tb2]… 备份多个数据库: mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3...] 备份所有数据库: mysqldump [OPTIONS] –all-databases [OPTIONS] 二、使用Xtrabackup进行物理备份恢复 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。 备份数据库: 如果在程序启动阶段未指定模式,innobackupex将会默认以备份模式启动。 默认情况下,此脚本以–suspend-at-end选项启动xtrabackup,然后xtrabackup程序开始拷贝InnoDB数据文件。当xtrabackup程序执行结束,innobackupex将会发现xtrabackup创建了xtrabackupsuspended2文件,然后执行FLUSH TABLES WITH READ LOCK,此语句对所有的数据库表加读锁,然后开始拷贝其他类型的文件。 如果–ibbackup未指定,innobackupex将会自行尝试确定使用的xtrabackup的binary。其确定binary的逻辑如下:首先判断备份目录中xtrabackup_binary文件是否存在,如果存在,此脚本将会依据此文件确定使用的xtrabackup binary。否则,脚本将会尝试连接database server,通过server版本确定binary。如果连接无法建立,xtrabackup将会失败,需要自行指定binary文件。 在binary被确定后,将会检查到数据库server的连接是否可以建立。其执行逻辑是:建立连接、执行query、关闭连接。若一切正常,xtrabackup将以子进程的方式启动。 FLUSH TABLES WITH READ LOCK是为了备份MyISAM和其他非InnoDB类型的表,此语句在xtrabackup已经备份InnoDB数据和日志文件后执行。在这之后,将会备份 .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, and .opt 类型的文件。 当所有上述文件备份完成后,innobackupex脚本将会恢复xtrabackup的执行,等待其备份上述逻辑执行过程中生成的事务日志文件。接下来,表被解锁,slave被启动,到server的连接被关闭。接下来,脚本会删掉xtrabackupsuspended2文件,允许xtrabackup进程退出。 三、使用innobackupex备份数据库 完全备份: innobackupex –user=root -p /home/backup/ 备份后的文件:在备份的同时,备份数据会在备份目录下创建一个以当前日期时间为名字的目录存放备份文件。 各文件说明: (1) backup-my.cnf —— 备份命令用到的配置选项信息; (2) ibdata —— 备份的表空间文件; (3) xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件; (4) xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置; (5) xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息; (6) xtrabackup_logfile —— 备份的重做日志文件。 在使用innobackupex进行备份时,还可以使用–no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。 准备(prepare)一个完全备份 一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。 innobakupex命令的–apply-log选项可用于实现上述功能。 innobackupex –apply-log /home/backup/2014-05-03_17-21-11/ 执行成功,显示如下: 在实现“准备”的过程中,innobackupex通常还可以使用–use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。 参考 RDS中的MYSQL备份恢复

优秀的个人博客,低调大师

Spark-ML-基于云平台和用户日志的推荐系统

架构: 数据收集:spark stareming从Azure Queue收集数据,通过自定义的spark stareming receiver,源源不断的消费流式数据。 数据处理: spark stareming分析用户行为日志数据,通过实时的聚集,统计报表现有的应用的运营信息,,也可以通过离线的训练模型,对实现数据进行预测和标注。 结果输出:hdfs 数据收集用到了这个东西,miner是个js可以收集用户的行为日志,前端收集和回传用户行为日志。 静态数据 动态数据 代码见:https://github.com/jinhang/jquery-behavior-miner 前台收集发送给Azure spark streaming 分析日志 spark 训练ALS spark使用ALS进行推荐 协同过滤 协同过滤(Collaborative Filtering, 简称CF),wiki上的定义是:简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。 以上定义太拗口,举个简单的例子:我现在多年不看日本anime的新番了,最近突然又想看几部新番,但又不知道这么多新番中看哪些比较好,于是我就找几个同样喜欢日本动漫的朋友来咨询。我第一个想咨询的朋友是和我口味最像的,我们都特别喜欢看《虫师》、《黑之契约者》、《寒蝉》这样的小众动画;我问的第二个朋友和我口味差不多,他特别喜欢看《钢炼》《无头骑士异闻录》这样的动画,我虽然喜欢,但不像他那么喜欢;由于身边喜欢日本动画的朋友不多,剩下第三个可以咨询的是一个宅女,平常经常看腐、宅、基的动漫,完全跟我不是一路人,于是问了下她推荐的片子,并将这些片子打上的黑名单的标签。然后我就开始看第一个朋友推荐的片子了,要是时间特别多又很无聊我可能会看第二个朋友推荐的,但打死我也不会看第三个朋友推荐的。这就是协同过滤的一个简化、小众版。 如何进行相似度度量 接着上面的例子,我可以通过我和其它朋友共同喜欢某个或某类动漫来确定我们的口味是否一样,那么如何以数学或者机器的形式来表示这个“口味一样”呢?通常,是通过“距离”来表示,例如:欧几里得距离、皮尔逊相关度、曼哈顿距离、Jaccard系数等等。 欧几里得距离 欧几里德距离(Euclidean Distance),最初用于计算欧几里得空间中两个点的距离,在二维空间中,就是我们熟悉的两点间的距离,x、y表示两点,维度为n: [Math Processing Error]d(x,y)=(∑in(xi−yi)2) 相似度: [Math Processing Error]sim(x,y)=11+d(x,y) 皮尔逊相关度 皮尔逊相关度(Pearson Correlation Coefficient),用于判断两组数据与某一直线拟合程度的一种度量,取值在[-1,1]之间。当数据不是很规范的时候(如偏差较大),皮尔逊相关度会给出较好的结果。 [Math Processing Error]p(x,y)=∑xiyi−nxy¯(n−1)SxSy=n∑xiyi−∑xi∑yin∑xi2−(∑xi)2n∑yi2−(∑yi)2 曼哈顿距离 曼哈顿距离(Manhattan distance),就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。 [Math Processing Error]d(x,y)=∑∥xi−yi∥ Jaccard系数 Jaccard系数,也称为Tanimoto系数,是Cosine相似度的扩展,也多用于计算文档数据的相似度。通常应用于x为布尔向量,即各分量只取0或1的时候。此时,表示的是x,y的公共特征的占x,y所占有的特征的比例: [Math Processing Error]T(x,y)=x∙y∥x∥2+∥y∥2−x∙y=∑xiyi∑xi2+∑yi2−∑xiyi 计算推荐 根据上述“距离”的算法,我们可以找出与自己“口味一样”的人了,但这并不是目的,目的是找出推荐的物品。一种常用的做法是选出与你兴趣相同的N个人,然后根据这N个人的记录来进行加权推荐。具体如下,假设已经计算出欧几里得相似度: 朋友 相似度 A SA B SB C SC A 0.95 10.0 9.5 9.0 8.55 - - B 0.80 8.5 6.8 7.5 6 5.0 4 C 0.25 - - 6.5 1.625 9.0 2.25 *总计 16.3 16.175 6.25 Sim.Sum 1.75 2 1.05 总计 Sim.Sum 9.31 8.09 5.95* 其中,s.x开头的表示相似度与评分的乘积,Sim.Sum表示打过分的朋友的相似度之和。可以看出根据三位友人的推荐,我从这三个东西中A来看。 Item CF与User CF 基于用户的协同过滤(User CF),其基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。上述过程就属于User CF。 基于物品的CF(Item CF)的原理和基于用户的CF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。两者的计算复杂度和适用场景皆不同。 public class UserSideCF implements Serializable { private static final Pattern TAB = Pattern.compile("\t"); public MatrixFactorizationModel buildModel(RDD<Rating> rdd) { //训练模型 int rank = 10; int numIterations = 20; MatrixFactorizationModel model = ALS.train(rdd, rank, numIterations, 0.01); return model; } public RDD<Rating>[] splitData() { //分割数据,一部分用于训练,一部分用于测试 SparkConf sparkConf = new SparkConf().setAppName("JavaALS").setMaster("local[2]"); JavaSparkContext sc = new JavaSparkContext(sparkConf); JavaRDD<String> lines = sc.textFile("/home/nodin/ml-100k/u.data"); JavaRDD<Rating> ratings = lines.map(line -> { String[] tok = TAB.split(line); int x = Integer.parseInt(tok[0]); int y = Integer.parseInt(tok[1]); double rating = Double.parseDouble(tok[2]); return new Rating(x, y, rating); }); RDD<Rating>[] splits = ratings.rdd().randomSplit(new double[]{0.6,0.4}, 11L); return splits; } public static void main(String[] args) { UserSideCF cf = new UserSideCF(); RDD<Rating>[] splits = cf.splitData(); MatrixFactorizationModel model = cf.buildModel(splits[0]); Double MSE = cf.getMSE(splits[0].toJavaRDD(), model); System.out.println("Mean Squared Error = " + MSE); //训练数据的MSE Double MSE1 = cf.getMSE(splits[1].toJavaRDD(), model); System.out.println("Mean Squared Error1 = " + MSE1); //测试数据的MSE } public Double getMSE(JavaRDD<Rating> ratings, MatrixFactorizationModel model) { //计算MSE JavaPairRDD usersProducts = ratings.mapToPair(rating -> new Tuple2<>(rating.user(), rating.product())); JavaPairRDD<Tuple2<Integer, Integer>, Double> predictions = model.predict(usersProducts.rdd()) .toJavaRDD() .mapToPair(new PairFunction<Rating, Tuple2<Integer, Integer>, Double>() { @Override public Tuple2<Tuple2<Integer, Integer>, Double> call(Rating rating) throws Exception { return new Tuple2<>(new Tuple2<>(rating.user(), rating.product()), rating.rating()); } }); JavaPairRDD<Tuple2<Integer, Integer>, Double> ratesAndPreds = ratings .mapToPair(new PairFunction<Rating, Tuple2<Integer, Integer>, Double>() { @Override public Tuple2<Tuple2<Integer, Integer>, Double> call(Rating rating) throws Exception { return new Tuple2<>(new Tuple2<>(rating.user(), rating.product()), rating.rating()); } }); JavaPairRDD joins = ratesAndPreds.join(predictions); return joins.mapToDouble(new DoubleFunction<Tuple2<Tuple2<Integer, Integer>, Tuple2<Double, Double>>>() { @Override public double call(Tuple2<Tuple2<Integer, Integer>, Tuple2<Double, Double>> o) throws Exception { double err = o._2()._1() - o._2()._2(); return err * err; } }).mean(); } }

优秀的个人博客,低调大师

容器服务之快速搭建使用阿里云rds的wordpress网站

登录容器服务控制台,创建好集群,如果用户已有ECS机器,可以创建0节点的集群,然后将已有机器加入集群。 登录容器服务控制台,选择侧边栏的应用,在下拉框选择相应的集群,选择创建应用 填写应用名称,本例为wordpress-rds, 选择使用编排模板创建 在编辑框中输入以下编排模板请注意将WORDPRESS_DB_USER修改为您数据库用户名,将WORDPRESS_DB_PASSWORD修改为您数据库的密码,将WORDPRESS_DB_NAME修改为您数据库的名称,同时将db服务下面的host修改为您要连接的数据库的域名,将ports修改为您要连接的数据库的端口。 web: image: wordpress ports: - '80' restart: always li

优秀的个人博客,低调大师

阿里云ECS服务器IIS和WampServer同时运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/41777943 网上下载WampServer安装包 安装完成之后默认的端口是80 但是由于此端口被IIS占用了 点击WampServer的图标->Apache->Service->测试80端口 出现如下图 这时候访问http://localhost肯定是报错的 解决方法:修改Apache默认的端口 点击WampServer图标->Apache->httpd.conf 找到 #Listen 12.34.56.78:80 Listen 0.0.0.0:80 Listen [::0]:80 把80全部改成8888(或者其他没有使用的端口,一定确定这个端口没程序使用!8080有时候也会被IIS的网站占用掉) 找到WampServer的安装路径 找到wampmanager.tpl ctrl+f 找localhost 在http://localhost后面加上:8888 完成之后重启WampServer 点击图标,localhost或者phpMyAdmin都可以访问了 服务正常开启的时候WampServer的图标是绿色的 

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册