腾讯云服务器创建swap空间

腾讯云服务器(学生优惠版)安装系统的时候,并没有挂载swap分区。但是我想对数据盘进行分区的时候,发现默认把整个磁盘都用上了,并没用预留空间。swap分区是行不通了,只能试试swap文件。 1.建立一个有连续空间的空白文件 root@VM-40-223-ubuntu:/# mkdir swap(注意,我第一次将SWAPFILE文件建立在/dev文件夹下会发生错误,所以我们在根目录下新建一个文件夹) 2.服务器的物理内存是1024MB,按照1~2倍原则,我将swap文件设置为1GB。 root@VM-40-223-ubuntu:/swap# dd if=/dev/zero of=SWAPFILE bs=1024 count=1048576 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 16.5022 s, 65.1 MB/s 3.必须先使用 mkswap 将文件格式化成swap格式,类似于fdisk中的82号ID(拉格朗日懵逼为什么会少了4KB?):…

小红书在容器环境的CD实践

2017-10-12 孙国清 Go中国 前言 容器推出以来,给软件开发带来了极具传染性的振奋和创新,并获得了来自各个行业、各个领域的巨大的支持——从大企业到初创公司,从研发到各类IT人员等等。跨境知名电商小红书随着业务的铺开,线上部署单元的数量急剧增加,以 Jenkins 调用脚本进行文件推送的部署模式已经不能适应需求。这一期实践日,小红书运维团队负责人孙国清将为大家带来小红书如何以最小的投入,最低的开发量快速的实现容器化镜像部署,以及由此带来的收益。以下是此次演讲的整理。 作者介绍 孙国清 小红书运维团队负责人 浙大计算机系毕业,曾在传统企业 IT 部门工作多年, 最近几年开始在互联网行业从事技术及技术管理工作,曾就职于携程基础架构,负责 Linux 系统标准化及分布式存储的研究和落地,目前在小红书带领运维团队,负责业务应用,基础架构以及IT支持。个人接触的技术比较杂,从开发到运维的一些领域都有兴趣,是 Scala 语言的爱好者,曾翻译了”The Neophyte’s Guide to Scala”,有上千 Scala 开发者从中受益,到小红书后开始负责系统化落地 DevOps 和提高运维效率。 小红书 图 1 小红书本身是一个社区做起来的。一开始是大家在平台上发帖子,分享一些生活中的好东西,健身什么的。目前我们已经有有…

MyCat:开源分布式数据库中间件

摘要:MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域、互联网项目,大部分是交易和管理系统,少量是信息系统。比较大的系统中,数据规模单表单月30亿。本文带你全面了解MyCat。 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。2014年MyCat首次在上海的《中华架构师》大会上对外宣讲引发围观,更多的人参与进来,随后越来越多的项目采用了MyCat。 MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域、互联网项目,大部分是交易和管理系统,少量是信息系统。比较大的系统中,数据规模单表单月30亿。 MyCat是什么? 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。 MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度 图1 MyCat架构设计图 MyCat解决了哪些问题 1. 连接过多问题,可以通过MyCat统一管理所有的数据源,后端数据库集群对前端应用程序透明。使用MyCat之前系统结构如图2。 图2 MyCat早前系统架构 MyCat引入连接复用解决多应用竞争问题,通过MyCat改造后,如图3所示。 图3 改造后的MyCat 2. 独创的ER关系分片,解决E-R分片难处理问题,存在关联关系的父子表在数据插入的过程中,子表会被MyCat路由到其相关父表记录的节点上,从而父子表的Join查询可以下推到各个数据库节点上完成,这是最高效的跨节点Join处理技术,也是MyCat首创。 图4 独创的ER关系分片,是MyCat首创 3. 采用全局分片技术,每个节点同时并发插入和更新数据,每个节点都可以读取数据,提升读性能的同时,也解决跨节点Join的效率。 图5 采用全局分片技术 4. 通过人工智能的catlet支持跨分片复杂SQL实现以及存储过程支持等。使用方式主要通过MyCat注释的方式来执行,如下: (1)跨分片联合查询注解支持:…

Mycat高级进阶—Mycat注解

注解原理 概念: MyCat对自身不支持的Sql语句提供了一种解决方案——在要执行的SQL语句前添加额外的一段由注解SQL组织的代码,这样Sql就能正确执行,这段代码称之为“注解”。注解的使用相当于对mycat不支持的sql语句做了一层透明代理转发,直接交给目标的数据节点进行sql语句执行,其中注解SQL用于确定最终执行SQL的数据节点。注解的形式是: /*!mycat: sql=注解Sql语句*/ 1 注解的使用方式是: /*!mycat: sql=注解Sql语句*/真正执行Sql 1 使用时将=号后的“注解Sql语句”替换为需要的Sql语句即可,后面会提到具体的用法。 原理: MyCat执行SQL语句的流程是先进行SQL解析处理,解析出分片信息(路由信息)后,然后到该分片对应的物理库上去执行;若传入的SQL语句MyCat无法解析,则MyCat不会去执行;而注解则是告诉MyCat按照注解内的SQL(称之为注解SQL)去进行解析处理,解析出分片信息后,将注解后真正要执行的SQL语句(称之为原始SQL)发送到该分片对应的物理库上去执行。 从上面的原理可以看到,注解只是告诉MyCat到何处去执行原始SQL;因而使用注解前,要清楚的知道该原始SQL去哪个分片执行,然后在注解SQL中也指向该分片,这样才能使用!例子中的sharding_id=10010 即是指明分片信息的。 需要说明的是,若注解SQL没有能明确到具体某个分片,譬如例子中的注解SQL没有添加sharding_id=10010这个条件,则MyCat会将原始SQL发送到persons表所在的所有分片上去执行去,这样造成的后果若是插入语句,则在多个分片上都存在重复记录,同样查询、更新、删除操作也会得到错误的结果! 解决问题: MySql不支持的语法结构,如insert …select… 同一个实例内的跨库关联查询,如用户库和平台库内的表关联 存储过程调用。 表,存储过程创建。 注解规范 注解SQL使用select语句,不允许使用delete/update/insert等语句;虽然delete/update/insert 等语句也能用在注解中,但这些语句在Sql处理中有额外的逻辑判断,从性能考虑,请使用select语句 注解SQL禁用表关联语句 注解SQL尽量用最简单的SQL语句,如select id from tab_a…

MyCat不支持的SQL语句

已知的MyCat不支持的SQL语句类型如下(不完全统计,后续会更新): SELECT: Ø 跨分片(实体库)的交叉查询 Ø 跨节点的联合查询 (如用户库的表和平台库的表做联合查询) INSERT: Ø 插入的字段不包含分片字段 (如插入tbl_user_base_info表,没有提供user_id列) Ø 插入的分片字段找不到对应分片 Ø 复制插入Insert into…select… Ø 多行插入 insert into tab_a(c1,c2) values(v1,v2),(v11,v21)… UPDATE: Ø 更新的列包含分片列 Ø 多表更新 update a, b…

vue-cli怎么根据后端接口服务器不同 build不同接口代码?

琢磨了几天vue-cli生成的代码,vue觉得你只需要三种配置:开发(npm run dev)、生产(npm run build)和单元测试(npm run test)。。。 吐槽完。 1.打开config/index.js,修改build里面的env文件名为根据环境变量获取, 修改完大概是下面这样子: module.exports = { build: { env: require('./'+(process.env.VUE_CONFIG||'prod')+'.env'), //...... 2.在config目录里面把prod.env.js复制两份,分别是uat.env.js、testing.env.js 3.修改dev.env.js、uat.env.js、testing.env.js、prod.env.js这四个文件,在大括号里面添加API: '"/api或uat或其他什么"',如下: module.exports = { NODE_ENV: '"production"', API: '"/api"' } 4.然后就可以在任何地方通过process.env.API访问到这个变量了。…

chpasswd -e

对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用 passwd user 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不能很方便的批量修改,除非使用expect 这样的软件来实现,难道修改一下密码还需要单独安装一个软件包吗? 不,我们其实还有其他很多方法可以让我们避开交互的,下面具体写一下具体的实现方式: 第一种: echo “123456” | passwd –stdin root 优点:方便快捷 缺点:如果你输入的指令能被别人通过history或者其他方式捕获,那么这样的方式是很不安全的,更重要的是如果密码同时含有单引号和双引号,那么则无法通过这种方法修改。 说明: 批量修改linux密码 passwd –stdin user 从标准输入中读取密码,所以用户可以在脚本中使用如 echo NewPasswd | passwd –stdin username 这种方式来批量更改密码 但在其它的一些发行版(如Debian/Suse)所提供的passwd并不支持–stdin这个参数 第二种:…

pinpoint 安装部署

阅读目录 1. 环境配置 1.1 获取需要的依赖包 1.2 配置jdk1.7 2. 安装Hbase 2.1 解压Hbase 2.2 修改Hbase的配置 2.3 启动Hbase 3. 安装pinpoint-collector 3.1 部署war包 3.2 配置快速启动 4. 安装pinpoint-web 4.1 部署war包 4.2 配置快速启动 5. 安装pinpoint-agent 5.1…