容灾概念介绍

前言

容灾的一些名词、概念介绍

1、介绍

容灾恢复能力的关键指标

RPO(Recovery Point Obejective,恢复点目标)

是指业务系统所允许的在灾难过程中的最大数据丢失量,用来衡量容灾系统的数据冗余备份能力。

RTO(Recovery Time Objective,恢复时间目标)

是指信息系统从灾难状态恢复到可运行状态所需的时间,用来衡量容灾系统的业务恢复能力。 我国的国家标准《GB20988-2007-T 信息安全技术信息系统灾难恢复规范》对灾备数据中心根据RPO与RTO两项指标分成了6个相应的等级,如下所示:

……

阅读全文

手机端调测H5页面神器-vConsole

前言

手机端调测H5页面是比较麻烦的,需要借助腾讯的vConsole神器
下载地址: https://github.com/Tencent/vConsole.git

1、导入引用

1
2
3
4
5
6
<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>
  // 初始化
  var vConsole = new VConsole();
  console.log('VConsole is cool');
</script>

如下图:

2、属性

vConsole.version

当前 vConsole 的版本号。

  • 只读
  • 类型:string

例子:

1
vConsole.version // => "3.11.0"

vConsole.option

配置项。

  • 可写
  • 类型:object
键名 类型 可选 默认值 描述
defaultPlugins Array true [‘system’, ’network’, ’element’, ‘storage’] 需要自动初始化并加载的内置插件。
onReady Function true 回调方法,当 vConsole 完成初始化并加载完内置插件后触发。
onClearLog Function true 回调方法,点击 Log 或 System 面板的 “Clear” 按钮后出发。
maxLogNumber Number true 1000 超出数量上限的日志会被自动清除。
maxNetworkNumber Number true 1000 超出数量上限的请求记录会被自动清除。
disableLogScrolling Boolean true 若为 false,有新日志时面板将不会自动滚动到底部。
theme String true ’light’ 主题颜色,可选值为 ’light'
target String, HTMLElement true document.documentElement 挂载到的节点,可为 HTMLElement 或 CSS selector。

例子:

……

阅读全文

mongodb安装后的初始化操作

前言

mongodb安装成功后的初始化操作,安装步骤比较简单略过不讲

1、启动

1
./mongobd -f /etc/mongodb.conf

2、进入命令行

1
./mongo 

3、创建超级管理账号

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
use admin

db.createUser({user:"adminuser",pwd:"12345678",roles:["userAdminAnyDatabase"]})

## 4、用超级管理账号创建业务账号
db.auth('adminuser', '12345678')

use testdb

db.createUser({user:"testuser",pwd:"12345678",roles: [{role:"readWrite", db:"testdb"}]})

5、conf文件demo,yaml格式,注意空格

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
systemLog:
    destination: file
    logAppend: true
    path: /usr/local/mongodb/logs/mongodb.log

storage:
    dbPath: /usr/local/mongodb/data/db
    journal:
        enabled: true

processManagement:
    fork:        
    pidFilePath: /var/run/mongodb/mongod.pid
    timeZoneInfo: /usr/share/zoneinfo

net:
    port: 27017
    bindIp: 0.0.0.0

security:
    authorization: enabled

6、参数解读:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
systemLog:
  destination: file//指定是一个文件
  path: /data/logs/mongod.log//日志存放位置
  logAppend: true//产生日志内容追加到文件
#  quiet: true//在quite模式下会限制输出信息
#  timeStampFormat: iso8601-utc //默认是iso8601-local,日志信息中还有其他时间戳格式:ctime,iso8601-utc,iso8601-local

processManagement:
  fork: true//以守护进程的方式运行MongoDB,创建服务器进程
  pidFilePath: "/data/mongo-data/mongod.pid"//pid文件路径
net:
# bindIp: 192.168.33.131//绑定ip地址访问mongodb,多个ip逗号分隔
  port: 27017//端口
  maxIncomingConnections:10000//默认65535,mongodb实例接受的最多连接数,如果高于操作系统接受的最大线程数,设置无效。
#  http:
#    enabled: true//http端口最好关闭
#RESTInterfaceEnabled: false//即使http接口选项关闭,如果这个选项打开后会有更多的不安全因素

storage:
  dbPath: "/data/mongo-data"//数据文件存放路径
  engine: wiredTiger//数据引擎
  wiredTiger:
    engineConfig://wt引擎配置
      cacheSizeGB: 1//看服务器情况来进行设置
      directoryForIndexes: true//索引是否按数据库名进行单独存储
    collectionConfig:
      blockCompressor: zlib//压缩配置
    indexConfig:
      prefixCompression: true//索引配置
  journal:
    enabled: true//记录操作日志,防止数据丢失。
  directoryPerDB: true//指定存储每个数据库文件到单独的数据目录。如果在一个已存在的系统使用该选项,需要事先把存在的数据文件移动到目录。
operationProfiling:
  slowOpThresholdMs: 100 //指定慢查询时间,单位毫秒,如果打开功能,则向system.profile集合写入数据
  mode: "slowOp"//off、slowOp、all,分别对应关闭,仅打开慢查询,记录所有操作。
security:
  keyFile: "/data/mongodb-keyfile"//指定分片集或副本集成员之间身份验证的key文件存储位置
  clusterAuthMode: "keyFile"//集群认证模式,默认是keyFile
  authorization: "disabled"//访问数据库和进行操作的用户角色认证

7、常见操作

命令 含义
show dbs 显示数据库列表
show collections 显示当前数据库中的集合(类似关系数据库中的表)
show users 显示用户
use dbname 切换当前数据库,这和MS-SQL里面的意思一样
db.help() 显示数据库操作命令,里面有很多的命令

8、聚集集合操作

8.1、查询所有记录

1
2
db.userInfo.find();
相当于:select* from userInfo;

8.2、查询去掉后的当前聚集集合中的某列的重复数据

1
2
3
db.userInfo.distinct("name");
会过滤掉name中的相同数据
相当于:select distinct name from userInfo;

8.3、查询age = 22的记录

1
2
db.userInfo.find({"age": 22});
相当于: select * from userInfo where age = 22;

8.4、查询age > 22的记录

1
2
db.userInfo.find({age: {$gt: 22}});
相当于:select * from userInfo where age >22;

8.5、查询age < 22的记录

1
2
db.userInfo.find({age: {$lt: 22}});
相当于:select * from userInfo where age <22;

8.6、查询age >= 25的记录

1
2
db.userInfo.find({age: {$gte: 25}});
相当于:select * from userInfo where age >= 25;

8.7、查询age <= 25的记录

1
db.userInfo.find({age: {$lte: 25}});

8.8、查询age >= 23 并且 age <= 26

1
db.userInfo.find({age: {$gte: 23, $lte: 26}});

8.9、查询name中包含 mongo的数据

1
2
3
db.userInfo.find({name: /mongo/});
//相当于%%
select * from userInfo where name like ‘%mongo%';

8.10、查询name中以mongo开头的

1
2
db.userInfo.find({name: /^mongo/});
select * from userInfo where name like ‘mongo%';

8.11、查询指定列name、age数据

1
2
db.userInfo.find({}, {name: 1, age: 1});
相当于:select name, age from userInfo;

当然name也可以用true或false,当用true的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。

……

阅读全文

mydumper第三方备份还原工具

前言

Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。性能比自带的mysqldump强劲
github: https://github.com/mydumper/mydumper

1、安装

redhat、centos举例

1.1 安装依赖

1.1.1 安装编译库

1
yum install -y cmake gcc gcc-c++ git make

1.1.2 安装开发库

1
yum install -y glib2-devel mysql-devel openssl-devel pcre-devel zlib-devel libzstd-devel

1.1.3 安装mysql开发版库

1
2
3
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel

1.2 mydumper安装

1
2
3
4
5
6
wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
tar zxvf mydumper-0.9.1.tar.gz
cd mydumper-0.9.1
cmake .
make
make install

2、常用备份、还原命令

2.1 备份

1
mydumper -u root -p XXX -h localhost -B XXX -o /data/backup/20180916

2.2 恢复

1
myloader -u root -p XXX -h localhost -B XXX -d /data/backup/20180916

3、参数说明

3.1 mydumper 的常用参数

参数 说明
-B –database 要导出的dbname
-T –tables-list 需要导出的表名,导出多个表需要逗号分隔,t1[,t2,t3 ….]
-o –outputdir 导出数据文件存放的目录,mydumper会自动创建
-s –statement-size 生成插入语句的字节数, 默认1000000字节
-r –rows Try to split tables into chunks of this many rows. This option turns off –chunk-filesize
-F –chunk-filesize 切割表文件的大小,默认单位是 MB ,如果表大于
-c –compress 压缩导出的文件
-e –build-empty-files 即使是空表也为表创建文件
-x –regex 使用正则表达式匹配 db.table
-i –ignore-engines 忽略的存储引擎,多个值使用逗号分隔
-m –no-schemas 只导出数据,不导出建库建表语句
-d –no-data 仅仅导出建表结构,创建db的语句
-G –triggers 导出触发器
-E –events 导出events
-R –routines 导出存储过程和函数
-k –no-locks 不执行临时的只读锁,会导致备份不一致 。
WARNING: This will cause inconsistent backups
–less-locking 最小化在innodb表上的锁表时间
–butai
-l –long-query-guard 设置长时间执行的sql 的时间标准
-K –kill-long-queries 将长时间执行的sql kill
-D –daemon 以守护进程的方式执行
-I –snapshot-interval 创建导出快照的时间间隔,默认是 60s ,该参数只有在守护进程执行的时候有用。
-L –logfile指定mydumper输出的日志文件,默认使用控制台输出。
–tz-utc SET TIME_ZONE=’+00:00’ at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use –skip-tz-utc to disable.
–skip-tz-utc
–use-savepoints 使用savepoints 减少MDL 锁事件 需要 SUPER 权限
–success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn

3.2 myloader使用参数

参数 说明
-d –directory 备份文件的文件夹
-q –queries-per-transaction 每次事物执行的查询数量,默认是1000
-o –overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B –database 需要还原的数据库
-e –enable-binlog 启用还原数据的二进制日志
-h –host The host to connect to
-u –user Username with privileges to run the dump
-p –password User password
-P –port TCP/IP port to connect to
-S –socket UNIX domain socket file to use for connection
-t –threads 还原所使用的线程数,默认是4
-C –compress-protocol 压缩协议
-V –version 显示版本
-v –verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

4、metadata文件

metadata文件存储了binlog位置点和备份开始结束的时间

……

阅读全文

mysql低版本源代码安装

前言

如果不使用最新版本的mysql,但是低版本的mysql官方不提供编译好的安装包,只能自己编译安装了。以下步骤和参数针对5.6、5.7生效,新版本有变动请阅读官方文档介绍。

版本停更提示:5.6 已于 2021-02、5.7 已于 2023-10 结束官方支持(EOL),两者均不再有安全补丁,新项目请直接上 8.0/8.4 LTS。老库升级前注意 8.0 的行为差异:

……

阅读全文

java OOM的种类整理

前言

java OOM的种类整理

1、分类

1.1【情况一】

1
java.lang.OutOfMemoryError: Java heap space:

这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环
如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:

-Xms3062m
-Xmx3062m

  

1.2【情况二】

1
java.lang.OutOfMemoryError: GC overhead limit exceeded

【解释】

JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。

……

阅读全文

OrangePi

前言

朋友弄了一批香橙派的板子,给我做测试,拿了板子、CF卡、电源后开启了试玩,通过配置查看,香橙派比草莓派配置还强劲一些,国产的还不错,不过生态没草莓派完善,对新手可能没健全的指导,稍显不友好,但是对于我这种职业开发人员来说,小case,所以这里个人觉得香橙派还是很不错的

1、准备工作

烧录系统镜像
1、准备一个CF读卡器
2、安装Win32DiskImager,给CF卡格式化,其实可以免了直接进入下一步,最初以为跟U盘一样要格式化所以多安装了这个@_@,其实下面ethcher更好用
3、安装ethcher,给CF卡烧录系统的软件
4、准备网线和hub一个,或者用hdmi网线连显示器,作为输出端,烧录后需要登录板子系统进行一些操作,我选择的是ssh方式登录,所以准备网线和hub,如果路由器网口多不用hub也可以,不过朋友测试的是8套香橙派集群,必须要hub

……

阅读全文

springmvc的参数校验注解整理

1、JSR303注解字段校验

注解 说明 功能
@AssertFalse Boolean,boolean 验证注解的元素值是false
@AssertTrue Boolean,boolean 验证注解的元素值是true
@NotNull 任意类型 验证注解的元素值不是null
@Null 任意类型 验证注解的元素值是null
@Min(value=值) BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 验证注解的元素值大于等于@Min指定的value值
@Max(value=值) 和@Min要求一样 验证注解的元素值小于等于@Max指定的value值
@DecimalMin(value=值) 和@Min要求一样 验证注解的元素值大于等于@ DecimalMin指定的value值
@DecimalMax(value=值) 和@Min要求一样 验证注解的元素值小于等于@ DecimalMax指定的value值
@Digits(integer=整数位数, fraction=小数位数) 和@Min要求一样 验证注解的元素值的整数位数和小数位数上限
@Size(min=下限, max=上限) 字符串、Collection、Map、数组等 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小
@Past java.util.Date,java.util.Calendar;Joda Time类库的日期类型 验证注解的元素值(日期类型)比当前时间早
@Future 与@Past要求一样 验证注解的元素值(日期类型)比当前时间晚
@NotBlank CharSequence子类型 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@Length(min=下限, max=上限) CharSequence子类型 验证注解的元素值长度在min和max区间内
@NotEmpty CharSequence子类型、Collection、Map、数组 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@Range(min=最小值, max=最大值) BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 验证注解的元素值在最小值和最大值之间
@Email(regexp=正则表达式,flag=标志的模式) CharSequence子类型(如String) 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式
@Pattern(regexp=正则表达式,flag=标志的模式) String,任何CharSequence的子类型 验证注解的元素值与指定的正则表达式匹配
@Valid 任何非原子类型 指定递归验证关联的对象;如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证
……

阅读全文

Cygwin安装

前言

cygwin是windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。

cygwin

cygwin相对安装虚拟机、vps是轻量级的,因此在条件不足情况下,练习、学习shell等都是很好的选择。

……

阅读全文

oracle知识梳理-执行计划分析

前言

分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。常用的两种方法查看SQL执行计划。

1、autotrace生成执行计划

这种方式执行方便,但是当遇到执行时间长的SQL就变得不太现实,它是先产生结果再生成执行计划的。关于Autotrace几个常用选项的说明:

1
2
3
4
5
SET  AUTOTRACE  OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET  AUTOTRACE  ON  EXPLAIN --------- AUTOTRACE只显示优化器执行路径报告
SET  AUTOTRACE  ON  STATISTICS ------ 只显示执行统计信息
SET  AUTOTRACE  ON ----------------- 包含执行计划和统计信息
SET  AUTOTRACE  TRACEONLY -----------同set autotrace on,但是不显示查询输出

步骤1 sqlplus登录数据库

步骤2 打开autotrace

1
SQL> set autotrace on explain

步骤3 输入要查看的SQL

1
2
3
4
5
6
7
SQL> select po.charge, po.new_charge, po.avg_charge
         from lbi_ls_basic.t_l_acct_sum_po_sum_d  po,
             lbi_dim_basic.t_d_dyn_pkgname     pkg,
             lbi_dim_basic.t_d_dyn_tenant_def     def
 where po.subcosid = pkg.productkey(+)
         and po.tenantid = def.tenantid(+); 
返回执行计划结果

步骤4 关闭autotrace

1
2
SQL> set autotrace off
----结束

2、explain plan for 生成执行计划

这种方式是直接产生执行计划,不会产生SQL结果。

……

阅读全文

最近文章

分类

标签

其它