关于mongodb的一些特性

关于mongodb的一些特性:

 

 

Which features of relational database management systems were deliberately omitted in MongoDB and help us to obtain horizontal scalability ?  check all the apply.

 

  1. Authentication
  2. Joins
  3. multi-document transactions
  4. multi-statement transactions

 

Authentication

mongodb 支持Authentication 身份认证,一旦启用访问控制,mongodb将要求所有客户端在授权认证后才能访问; mongodb 3.0以后默认使用 challenge and response mechanism (SCRAM-SHA-1),之前的版本默认使用 MongoDB Challenge and Response (MONGODB-CR)。

mongodb也支持x509 certificate authentication, LDAP proxy authentication, and Kerberos authentication等授权认证。

http://docs.mongodb.org/manual/core/authentication/

 

Join

MongoDB wasn’t designed in a lab. We built MongoDB from our own experiences building large scale, high availability, robust systems. We didn’t start from scratch, we really tried to figure out what was broken, and tackle that. So the way I think about MongoDB is that if you take MySql, and change the data model from relational to document based, you get a lot of great features: embedded docs for speed, manageability, agile development with schema-less databases, easier horizontal scalability because joins aren’t as important.

mongodb的开发人员认为水平扩展能力horizontal scalability  要比JOIN来的重要,所以在mongodb 中并不直接支持join。

Significantly, MongoDB supports neither joins nor transactions。

 

 

Multi-ducoment transactions

 

MongoDB does not support multi-document transactions.

http://docs.mongodb.org/manual/faq/fundamentals/

However, MongoDB does provide atomic operations on a single document.

mongodb提供对单个document的原子性操作,但不支持涉及到多个文件的食物multi-document transactions。

 

 

multi-statement transactions

Pattern

Overview

Consider a scenario where you want to transfer funds from account A to account B. In a relational database system, you can subtract the funds from A and add the funds to B in a single multi-statement transaction. In MongoDB, you can emulate a two-phase commit to achieve a comparable result.

MongoDB不支持multi-statement transaction多语句事务,可以通过2段式提交来获得类似效果。

 

MongoDB _id Key的一些信息

关于 mongodb _id key:

  1. _id key可以用户分配,也可以由mongodb自动分配,一般采用自动分配。
  2. 如果未使用_id作为分片key,则应用程序或客户端层要负责保证_id为唯一的,对于collection存在重复_id会有问题。If you do not use _id as the shard key, then your application/client layer must be responsible for keeping the _id field unique. It is problematic for collections to have duplicate _id values.
  3. 更新一个document 不会造成_ID被修改

对于更新一个document 不会造成_ID被修改的证明:

> db.version();
3.0.2

> db.dbdao_student.insert({student_name:"maclean",age:20,sex:"male",score:100});
WriteResult({ "nInserted" : 1 })

> db.dbdao_student.update({student_name:"maclean"},{"student_name" : "maclean", "age" : 20, "sex" : "male", "score" : 100});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.dbdao_student.find();
{ "_id" : ObjectId("5545bcff5714fbdfcb483510"), "student_name" : "maclean", "age" : 20, "sex" : "male", "score" : 100 }
>
> db.dbdao_student.update({student_name:"maclean"},{"student_name" : "maclean", "age" : 21, "sex" : "male", "score" : 100});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.dbdao_student.find();
{ "_id" : ObjectId("5545bcff5714fbdfcb483510"), "student_name" : "maclean", "age" : 21, "sex" : "male", "score" : 100 }
>
> db.dbdao_student.update({student_name:"maclean"},{"student_name" : "maclean", "age" : 25, "sex" : "male", "score" : 100});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.dbdao_student.find();
{ "_id" : ObjectId("5545bcff5714fbdfcb483510"), "student_name" : "maclean", "age" : 25, "sex" : "male", "score" : 100 }
>
> db.dbdao_student.update({student_name:"maclean"},{"student_name" : "maclean", "age" : 25});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.dbdao_student.find();
{ "_id" : ObjectId("5545bcff5714fbdfcb483510"), "student_name" : "maclean", "age" : 25 }

> db.dbdao_student.find(ObjectId("5545bcff5714fbdfcb483510"));
{ "_id" : ObjectId("5545bcff5714fbdfcb483510"), "student_name" : "maclean", "age" : 25 }

去台湾自由行可以试试台湾之星的流量卡

台湾自由行主要三个运营商:中华电信、台湾大哥大、台湾之星。 看了下台湾之星搞的活动还不错,对于内地旅客而言;在机场里也有门店

 

2015-05-01 21.01.50

APOUC 2015台北

User groups:

Screen Shot 2015-04-29 at 3.42.34 PM

 

APOUC台北第一天

 

2015-04-29 09.07.15

 

Tom Kyte

2015-04-29 09.29.26

 

2015-04-29 10.21.51

 

2015-04-29 10.27.16

 

Eugene Chang 《Country Management Welcome》

2015-04-29 09.34.35

 

 

Tom Kyte 《Oracle cloud computing》

2015-04-29 09.39.24

 

 

Alain Floch 《Business  Intelligence and Analytics》

2015-04-29 10.29.31

2015-04-29 10.57.29

 

 

 

《So you want to start a user group 》 FROM NZOUG

2015-04-29 11.37.23

 

 

 

《Oracle license management》Timothy Siu

2015-04-29 13.08.57

 

Sundar Ram ,Vice President 《DB cloud finally here》

 

2015-04-29 13.40.40

 

 

Michael Wang 《Oracle cloud:Modernize to Thrive》

 

2015-04-29 14.26.03

 

 

Patrick Chien 《Oracle Support Update》

 

2015-04-29 15.20.13

 

 

APOUC 2015合影:

17309901362_60ec0cca14_k

 

在DIGITALOCEAN DROPLETS上部署HADOOP CLUSTER

随着DigitalOcean上专用网络来临,我想用一个基于droplet的集群取代我的本地物理Cloudera Hadoop集群。其中关于使用DigitalOcean droplet最好的就是,你可以快照任何图像和破坏VM,当他们不在使用和你无需他们。不好的方面是,专用网络上DigitalOcean droplet实施并不能保证任何安全,只要其他主机在同一专用网络上,你应该在使用专用网络时考虑到这一点;因频宽是自由的,它不是真正的私有。

 

这里我们概述了4主机群集耗资0.15美元 /小时(1X0.06美元+ 3X0.03美元/小时),使之成为一个连接率很高的平台。

 

如果你不熟悉DigitalOcean – 它们提供了非常简单,便宜的虚拟服务器(droplets在DigitalOcean说法)。

 

我将使用Cloudera Manager自动化安装程序指南,我发现这是管理群集一个很好的工具。

[Read more…]

MySQL Replication 复制高可用配置方案

【诗檀软件汪伟华】 MySQL Replication 复制高可用配置方案

 

MySQL Replication 复制高可用配置方案:

 

本文目的

对MySQL高可用架构原理进行学习总结。

 

相关参考

  • MySQL Replication:

http://dev.mysql.com/doc/refman/5.6/en/replication.html

  • MySQL Replication Pausing:

http://dev.mysql.com/doc/refman/5.6/en/replication-administration-pausing.html

 

架构原理

 

MySQL Replication

MySQL Replication可以使得数据从一个MySQL数据库服务器(主库)被复制到一个或其他更多MySQL数据库服务器(备库)上。复制默认是异步模式。

 

mysql-replication-1

mysql-replication-2

FAQ

问题1:

我该如何强制阻止主库更新,直到备库的同步作业赶上主库呢?

回答:

可使用以下步骤:

  1. 在主库上,执行以下命令:
mysql> flush tables with read lock;

mysql> show master status;

查看show命令输出,并记录下replication坐标(当前主库binary日志文件名和其位置)。

  1. 在备库上,执行以下语句,其中master_pos_wait()函数参数值为之前所获取的replication坐标值。
mysql> select master_pos_wait(‘log_name’, log_pos)

此语句会一直处于运行状态直至备库同步到其指定的日志文件和位置时才结束。这时,语句返回且表明备库和主库同步完成。

  1. 在主库中,执行以下命令重新允许主库开始处理更新操作。
mysql> unlock tables;

 

问题2:

我应该如何使用Replication来提升系统性能?

回答:

将一个服务器作为主库并使其负载有的写操作。同时按你的预算和机架空间配置尽可能多地的备库, 将读操作分布到主库和备库上。你也可以在备库上启用–low-priority-updates(仅对myISAM)和–delay-key-write=ALL等参数项来提升备库速度。在这种情况下,备库上使用非事务型MyISAM表以替代InnoDB表,减少了事务开销,从而获得更快的速度。

 

问题3:

如何量化MySQL replication对系统的性能提升?

回答:

MySQL replication对于那些需要处理频繁读和非频繁写的系统非常有益。理论上,通过在进行单主库多备库建设时,你可以增加更多备库来扩展你的系统,直到用完所有网络带宽,或直到你的更新负载已经达到主库所能达到的最大值时为止。

为了在建设前评估需备库数量和性能提高比率,你必须了解你的查询模式,并以主库和备库的读写关系为基准进行判断。下面用了一个简单计算模型来显示你从replication中可以获得的系统提升:

首先统计每秒相对的读(read)和写(write)次数。

假设当前系统负载中包含10%写和90%读,而我们已经确定读写基准关系为读的次数为1200减去写次数的两倍。换言之,系统可以在无写操作的情况下达到每秒1200次读,其平均写时间比平均读时间慢2倍, 两者的关系是线性的。假设主库和备库性能相同,且我们使用1主N备。那么,对每个服务器(主库或备库),我们得出以下模型:

reads = 1200 – 2 * writes

reads = 9 * writes / (N + 1) (读被分布在各个服务器上, 写则被replicate到多个备库上)

9 * writes / (N + 1) + 2 * writes = 1200

writes = 1200 / (2 + 9/(N + 1))

最后的等式表明在N个备库的情况下和写之间的关系,通过分析可得出以下结论:

  • 如果N=0(意味着无replication),系统每秒可处理约1200/11=109次写。
  • 如果N=1,可得到每秒为184次写。
  • 如果N=8,每秒写提升至400次。
  • 如果N=17,每秒写为480次。
  • 最终N趋于无穷大,我们可获得约600次写每秒。系统性能提升约5倍。然而,仅8台备库的情况下,我们就能获得大约4倍的性能提升了。

以上这些计算都是在假设有无限带宽且没有其他巨大负面因素的基础下。在许多情况下,你可能并不能使用类似此模型来如此精确地预估增加N台replication备库后的性能效果。然而,通过回答以下问题应该能帮助你判断大致增加多少replication会对你的系统性能有一定的提高:

  • 系统的读/写比率是多少?
  • 如果你降低读负载,服务器可更多承贷多少写负载?
  • 你的网络带宽足够多少台备库使用?

 

问题4:

如何分辨主库正使用statement-based还是row-based binary 日志格式。

回答:

mysql> show variable like ‘binlog_format’;

值显示模式为STATEMENT, ROW或 MIXED。对于MIXED模式,默认在replication时使用statement-based,在某些情况,如非安全语句,则会自动切换使用row-based日志模式。

 

问题5:

在replication复制到备库时,该如何避免GRANT和REVOKE语句也被备库复制?

回答:

启用备库时, 使用 –replicate-wild-ignore-table=mysql.%参数项以忽略从主库mysql数据库中复制表。

 

 

 

 

环境准备

 

软件准备

  1. vbox虚拟软件:

https://www.virtualbox.org/

  1. RedHat Enterprise Linux 6.6 64bit介质:

rhel-server-6.6-x86_64-dvd.iso

  1. SecureCRT
  2. FlashFXP或其他FTP软件

 

节点安装

MySQL Replication要求至少2个节点,用于主备(Master-Slave)。

这里我们先装1个节点,安装Linux系统和Mysql 5.6. 然后进行虚拟机clone,克隆出2节点。

 

mysql-replication-3

 

建立时选桥接网卡即可。

 

Linux安装

使用vbox新建一个虚拟机,根据你的介质初步选择你的虚拟机系统。之后启动虚拟机,并将介质iso文件加载至虚拟机光驱, 之后的Linux安装设置大致都默认即可。

 

mysql-replication-4

mysql-replication-5

mysql-replication-6

mysql-replication-7

这里的主机名hostname按情况填写即可(ex1.dbdao)

 

mysql-replication-8

 

mysql-replication-9

 

mysql-replication-10

密码如果偏弱,可能会有警告,Use Anyway即可。

mysql-replication-11

勾选Review and modify partitioning layout, 这样就在后一页中提供磁盘分区的详细信息。

mysql-replication-12

mysql-replication-13

Format

mysql-replication-14

Write Changes to disk.

mysql-replication-15

mysql-replication-16

这里选Customize now,将Desktop相关的组件都先装上,以便可以提供Window X桌面支持。

 

mysql-replication-17

mysql-replication-18

mysql-replication-19

 

mysql-replication-29

 

安装好后重启。

 

装好后第一次启动会进入设置界面:

 

mysql-replication-30

mysql-replication-31

mysql-replication-33

选No.

mysql-replication-32

mysql-replication-34

mysql-replication-35

mysql-replication-36

mysql-replication-37

因为这里虚拟机设置了1G内存,不足以开启此功能,但是我们这里仅是做实验,因此不必关心此警告。即便内存够,也不用开启。

mysql-replication-38

 

mysql-replication-39

使用root登陆成功

Username: root

Password: <passowrd>.

 

安装vbox guest additions:

 

mysql-replication-40

mysql-replication-41

mysql-replication-42

检查网络

mysql-replication-43

检查Yum

如果Yum不存在,使用rpm找到rhel6.6 iso中的yum安装包进行安装。

 

shell> rpm -qa|grep yum

shell> cd /media

shell> touch cdrom

shell> mount /dev/cdrom ./cdrom

shell> cd /etc/yum.repos.d

shell> touch rhel6.6-self.repo

shell> vi rhel6.6-self.repo

 

mysql-replication-44

检查Firefox(可选)

shell> yum search firefox

shell> yum install firefox

mysql-replication-45

调整网卡IP,DNS设置,vbox虚拟机网卡使用Bridged桥接网卡模式。检查是否可上网(MySQL yum安装需要网络可访问)。

 

检查SSH

shell> rpm -qa|grep openssh

shell> service sshd status

 

mysql-replication-46

检查FTP

shell> rpm -qa|grep vsftp

shell> yum search vsftp

shell> yum install vsftpd

shell> service vsftpd status

 

安装完后还未启动,需要设置。

shell> cd /etc/vsftpd

shell> vi /etc/vsftpd/vsftpd.conf

shell> vi user_list

以下为要更改的选项:

anonymous_enable=NO

ascii_upload_enable=YES

ascii_download_enable=YES

新增 userlist_deny 选项, user_list 文件中的用户才允许访问:

userlist_deny=NO

 

 

关于MongoDB认证DBA Associate考试

From Mongo University,

mongo_university

下次开考时间:
Start: 2015年4月2日17:00
End: 2015年4月28日17:00

关于此考试

MongoDB认证DBA Associate级考试是为了具有MongoDB管理知识和技术的相关人员设立的。我们那些了解MongoDB相关基础知识并且具有一定专业管理经验的操作专家来进行认证。下面我们会详细说明对于此认证所需要具备的知识和技能:

考试细节

  • 考试将基于MongoDB 2.6版本进行。
  • 考试没有前提条件。任何人可以参与此认证考试,不过我们仍推荐大家进行一下自我学习或者参加M102和M202课程。考生也可以使用其他推荐学习准备材料
  • MongoDB认证考试提供在线网页监考解决方案。
  • 完成计算机设备检查以保证你的系统满足必要的硬件软件需要以完成考试。
  • 为了完成考试,你必须和你的监考方预约考试期。当然,一旦你注册了此考试,你就会收到相关的时间安排指导信息。
  • 你可以在考试期内的任何时间完成考试,早晚都行。
  • 一旦开考,考生将有90分钟来完成考试。
  • 对于不正确的回答不会倒扣分数。
  • 考试成绩将基于回答正确的题目的数量以及有专业评估作出的整体考试难度评判决定。
  • 考题类型为多选题,请将你认为正确的答案进行选择即可。
  • 在考试结束后,考试结果会在之后3周内得出。我们需要时间回顾考试时给出的问题并计算考试成绩。
  • 请注意考试费用中不会包括免费重考费用。

MongoDB所需知识:

  • 原理及特性:性能,JSON, BSON, 容错(fault tolerance),灾难恢复,水平缩放(horizontal scaling)以及Mongo shell
  • CRUD: 新建,读,更新和删除操作
  • 索引: 单键, 复合, 多键索引, 构成及性能
  • 聚合(Aggregation): 管道符, 操作符, 内存使用,排序(sort)、跳过(skip)和限制(limit)
  • 复制(Replication): 相关设置,oplog概念,写相关,枚举,故障转移及多个数据中心的部署
  • 分片(sharding):组件,何时分片,平衡,分片key,和哈希分片key
  • 应用管理: 数据文件,日志,认证及授权
  • 服务器管理:性能分析,诊断调试,运维,备份和恢复

所需通用IT知识
数据库概念基础
系统编程基础
基本的JavaScript编程能力

考试规则

  • 为了通过考试认证,测试者必须了解一下规则。视频,语音和计算机屏幕活动将会在考试时被记录获取并被考官回放检查。
  • 在认证过程中,测试者必须按提示提供以下信息:
  1. 一个清晰的头像照
  2. 一个官方出具并认可的照片,如驾照或护照
  3. 一份测试环境的视屏扫描
  • 考生必须独立在一个安静环境中进行考试。不允许和任何其他人进行交谈。
  • 在考试时,不会用到耳机,录音机,电视或其他计算机屏幕。
  • 考生仅被允许阅览考题,如果必要,可以使用如Google Translate这样的一个简单翻译工具。 其他的参考资料或软件都不可使用。

考试系统需求

  • Mac OS 10.6或以上,或Windows 7以上版本操作系统。Linux现在还不受支持。
  • 你需要一个摄像头和一个麦克风。

完成考试设备检查以保证你的系统满足考试的软硬件需要。

Exadata一体机使用的50个小技巧

Exadata数据库一体机已经经过多年的风雨磨砺修炼为X5版本;在中国Exadata也有着众多的成功案例,基于Oracle原厂和众多服务商的努力,我们对Exadata的使用也越来越成熟。 这里Maclean有幸能接受Oracle的邀请,参与到Oracle Exadata原厂团队的热烈技术讨论中。

通过实践或与同事/同行交流汇聚了50条Exadata使用中的小技巧,不吝抛砖引玉:

 

Exadata真机在装配流水线上

 


 

Exadata管理


Exadata性能优化

让表使用flash cache

ALTER TABLE <object name> storage (CELL_FLASH_CACHE KEEP);

 

可以使用如下公式计算Exadata特性对IO的优化

[ 1 – {(cell physical IO interconnect bytes returned by smart scan)

/ (cell IO uncompressed bytes + cell physical IO bytes saved by storage index)} ] * 100

 

可以使用如下公式计算Exadata Storage Index对Disk IO减少的共享

(cell physical IO bytes saved by storage index / physical read total bytes) * 100

 

可以使用如下计算Flash Cache的使用率

(cell flash cache read hit / physical read total IO requests) * 100

 

收集cell级别的表缓存统计信息的方法

SQL> SELECT data_object_id FROM DBA_OBJECTS WHERE object_name=’EMP’;
OBJECT_ID
———
57435
CellCLI> LIST FLASHCACHECONTENT –
WHERE objectNumber=57435 DETAIL cachedSize: 495438874
dbID: 70052
hitCount: 415483
missCount: 2059
objectNumber: 57435
tableSpaceNumber: 1

确认在使用write back flash cache

#dcli -g ~/cell_group -l root cellcli -e “list cell attributes flashcachemode”

Results:

flashCacheMode: WriteBack -> write back flash cache is enabled
flashCacheMode: WriteThrough -> write back flash cache is not enabled

 

确认所有的griddisk均为正常online状态

# dcli -g cell_group -l root cellcli -e list griddisk attributes asmdeactivationoutcome, asmmodestatus

确认所有的flashdisk均为正常online状态

# dcli -g cell_group -l root cellcli -e list flashcache detail

启用write back flash cache的方法

A. Enable Write Back Flash Cache using a ROLLING method

(RDBMS & ASM instance is up – enabling write-back flashcache one cell at a time)

Log onto the first cell that you wish to enable write-back FlashCache

1. Drop the flash cache on that cell
# cellcli -e drop flashcache

2. Check if ASM will be OK if the grid disks go OFFLINE. The following command should return ‘Yes’ for the grid disks being listed:
# cellcli -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome

3. Inactivate the griddisk on the cell
# cellcli –e alter griddisk all inactive

4. Shut down cellsrv service
# cellcli -e alter cell shutdown services cellsrv

5. Set the cell flashcache mode to writeback
# cellcli -e “alter cell flashCacheMode=writeback”

6. Restart the cellsrv service
# cellcli -e alter cell startup services cellsrv

7. Reactivate the griddisks on the cell
# cellcli –e alter griddisk all active

8. Verify all grid disks have been successfully put online using the following command:
# cellcli -e list griddisk attributes name, asmmodestatus

9. Recreate the flash cache
# cellcli -e create flashcache all

10. Check the status of the cell to confirm that it’s now in WriteBack mode:
# cellcli -e list cell detail | grep flashCacheMode

11. Repeat these same steps again on the next cell. However, before taking another storage server offline, execute the following making sure ‘asmdeactivationoutcome’ displays YES:
# cellcli -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome

 

B . Enable Write Back Flash Cache using a NON-ROLLING method

(RDBMS & ASM instances are down while enabling write-back flashcache)

1. Drop the flash cache on that cell
# cellcli -e drop flashcache

2. Shut down cellsrv service
# cellcli -e alter cell shutdown services cellsrv

3. Set the cell flashcache mode to writeback
# cellcli -e “alter cell flashCacheMode=writeback”

4. Restart the cellsrv service
# cellcli -e alter cell startup services cellsrv

5. Recreate the flash cache
# cellcli -e create flashcache all

 

确认Exadata 计算节点间的网络带宽

可以采用nc nc-1.84-10.fc6.x86_64.rpm获得

 

检测多个ORACLE_HOME是否RDS可用?

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l oracle md5sum ${ORACLE_HOME}/lib/libskgxp11.so

 

relink ORACLE_HOME的RDS

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l oracle “export ORACLE_HOME=$ORACLE_HOME;;cd `pwd`;;make – f i*mk ipc_rds”

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l oracle “export ORACLE_HOME=$ORACLE_HOME;;cd `pwd`;;make – f i*mk ioracle” | egrep ‘rm|mv.*oracle’

不同配置Exadata的推荐最大并行度

 

配置 CPU个数 推荐最大Parallelism
Full Rack 64 core DOP=256
Half Rack 32 core DOP=128
Quarter Rack 16 core DOP=64

 

Exadata EHCC支持

Exadata的EHCC支持宽表 最大支持1000个字段的表,而不像11.1中的压缩仅支持最多255列的表

 

Exadata 压缩信息

通过dbms_compression.get_compression_ratio 可以获得表的压缩信息

 

针对写日志redo特别多的应用建议启用Smart Flash logging特性

CREATE FLASHLOG ALL
CREATE FLASHLOG ALL SIZE=1G
CREATE FLASHLOG CELLDISK=’fd1,fd2′
CREATE FLASHLOG CELLDISK=’fd1,fd2′ SIZE=1G

 

 

Exadata DB管理

Exadata存储空间计算

FreeMB(最大可用空间) =
GridDisk*12*Num of Cells/Redundancy

UsableMB (支持1个CELL故障的最大可用空间) =
GridDisk*12*(Num of Cells – 1) /Redundancy

查看cell软件版本

imagehistory

imageinfo

了解cell的温度

dcli -g cell_group -l root “ipmitool sensor | grep ‘Inlet Amb Temp'”

 

cell存储节点的日志存放位置

$ADR_BASE/diag/asm/cell/`hostname`/trace/alert.log $ADR_BASE/diag/asm/cell/`hostname`/trace/ms-odl.* $ADR_BASE/diag/asm/cell/`hostname`/trace/svtrc__0.trc — ps -ef | grep “cellsrv 100” $ADR_BASE/diag/asm/cell/`hostname`/incident/*

/var/log/messages*, dmesg /var/log/sa/*

/var/log/cellos/*

列出cell中的alert history

list alerthistory where notificationState like ‘[023]’ and severity like ‘[warning|critical]’ and examinedBy = NULL;

为cell创建一个告警阈值

cellcli

create threshold CD_IO_ERRS_MIN warning=1, comparison=’>=’, occurrences=1, observation=1;

cell可用性监控

一般建议使用 EMGC Oracle Exadata Storage Server Management Plug-In 监控

 

如何禁用Smart Scan?

设置 Cell_offload_processing=false

如何禁用storage index?

设置 _kcfis_storageidx_disabled=true

如何禁用flash cache?

11.2.0.2 以后 设置_kcfis_keep_in_cellfc_enabled=false

11.2.0.1中设置_kcfis_control1=1

cell相关的数据库视图有以下这些视图

select * from sys.GV_$CELL_STATE;

select * from sys.GV_$CELL;

select * from sys.GV_$CELL_THREAD_HISTORY;

select * from sys.GV_$CELL_REQUEST_TOTALS;

select * from sys.GV_$CELL_CONFIG;

配置Inter-Database IORM

CellCLI> alter iormplan –
dbplan = ((name = production, level = 1, allocation = 100), –
(name = test, level = 2, allocation = 80), –
(name = other, level = 2, allocation = 20))
IORMPLAN successfully altered

CellCLI> alter iormplan active
IORMPLAN successfully altered

CellCLI> list iormplan detail
name: cell4_IORMPLAN
catPlan:
dbPlan: name=production,level=1,allocation=100
name=test,level=2,allocation=80
name=other,level=2,allocation=20
status: active

 

如何禁用布隆过滤Bloom Fliter

设置_bloom_pruning_enabled=false

 

 

Exadata数据备份

backup备份速率

Exadata下rman备份的速率从1通道到8通道 大约为1003MB/s 到 2081MB/s,视乎配置不同也略微有区别

recovery应用日志恢复速率

exadata recovery的速率大约为每秒600~1000MB/s的归档日志

standby database搭建

对于50TB的standby database搭建,若使用infiniband + 4rman通道大约耗费5.5小时,若使用GigE则在18个小时左右

 

Exadata恢复

 

cell 救护

可以通过 /opt/oracle.SupportTools/make_cellboot_usb脚本创建内部USB cellboot_usb_in_rescure_mode

 

 

Exadata部署

onecommand下载

可以下载patch (9935478) ONECOMMAND FOR Exadata 11gR2

 

Exadata安装前准备工作

1. 下载安装介质包括Grid, Database,Patches等
2. 硬件设备到货验收并安装就绪
3. 规划DBM用的管理网,生产网,ILOM等用的网段和IP地址
4. 配置DNS服务器
5. 将IP地址和域名注册到DNS服务器
6. 配置NTP服务器
7. 网络连线

环境检查

1. 检查DBM主机的eth0网卡是否可以通过cisco交换机被访问
2. 检查hardware and firmware profile是否正确
3. 验证InfiniBand Network

 

验证网络连通性

  1. 登陆第一台数据库服务器使用sh脚本验证网络连通性
  2. 验证DNS是否正常
  3. 验证NTP 服务器是否正常

安装Exadata Storage Server Image Patch (root user)
1. 在db server和cell server上为root用户配置SSH
# /opt/oracle.SupportTools/onecommand/setssh.sh -s -u root -p password -n N -h dbs_group

2. 检查当前Cell storage server的Exadata Image 版本
3. 安装最新的Patch具体步骤详见Readme
4. 验证当前Exadata Image version
#cd /opt/oracle.SupportTools/firstconf
#dcli -l root -g quarter ‘imagehistory | grep –i Version

使用OneCommand工具完成DBM的配置安装
1. #cd /opt/oracle.SupportTools/onecommand
2. Display the onecommand steps
# ./deploy112.sh -i –l
3. The steps in order are…
Step 0 = ValidateThisNodeSetup
Step 1 = SetupSSHForRoot
Step 2 = ValidateAllNodes
Step 3 = UnzipFiles
Step 4 = UpdateEtcHosts
Step 5 = CreateCellipnitora
Step 6 = ValidateHW
Step 7 = ValidateIB
Step 8 = ValidateCell
Step 9 = PingRdsCheck
Step 10 = RunCalibrate
Step 11 = ValidateTimeDate
Step 12 = UpdateConfig
Step 13 = CreateUserAccounts
Step 14 = SetupSSHForUsers
Step 15 = CreateOraHomes
Step 16 = CreateGridDisks
Step 17 = InstallGridSoftware
Step 18 = RunGridRootScripts
Step 19 = Install112DBSoftware
Step 20 = Create112Listener
Step 21 = RunAsmCa
Step 22 = UnlockGIHome
Step 23 = UpdateOPatch
Step 24 = ApplyBP
Step 25 = RelinkRDS
Step 26 = LockUpGI
Step 27 = SetupCellEmailAlerts
Step 28 = RunDbca
Step 29 = SetupEMDbControl
Step 30 = ApplySecurityFixes
Step 31 = ResecureMachine
To run a command
#./deploy112.sh –i –s N
Where N corresponds to a step number
Example to run step 0

Exadata监控

 

exachk健康检查脚本

exachk脚本可以以daemon形式后台运行

./exachk –d start

以daemon形式cluster support运行

./exachk –clusternodes [node1,[node N]] –d start!

 

Exadata文档信息

Exadata的官方文档 http://docs.oracle.com/cd/E50790_01/welcome.html

另外文档还保存在您cell 的 /opt/oracle/cell/doc/ 目录下。


 

Exadata硬件篇

 


 

 

常规

默认密码,以下是Exadata中cell/db node IB等的默认密码:

组件 登陆 默认密码
Storage Cells root nm2user welcome1
Infiniband Switch root nm2user welcome1 changeme
DB节点 root welcome1
CELL CLI celladmin welcome
ILOM root welcome1
KVM Switch Admin or none <none>
GigE switch <none> <none>

初始安装后asmsnmp的账号一般也是welcome1

硬件常规巡检:

在机房例行检查时,需要从Exadata机箱后方查看Exadata中是否有黄灯报警,如果有,记录位
置,即时登录OEM/ILOM/集成的第三方监控工具查明原因,定位部件,即时维护。

Exadata一体机健康检查脚本exachk,参考document 1070954.1

检测Exadata数据库机器上的硬件和固件版本是否匹配?

/opt/oracle.SupportTools/CheckHWnFWProfile
返回如下结果说明版本匹配:
[SUCCESS] The hardware and firmware profile matches one of the supported profile

 

检测软件版本与平台是否匹配?

/opt/oracle.SupportTools/CheckSWProfile.sh -c

 

为cell启用邮件告警

ALTER CELL smtpServer=’mailserver.maildomain.com’, – smtpFromAddr=’firstname.lastname@maildomain.com’, –

smtpToAddr=’firstname.lastname@maildomain.com’, –
smtpFrom=’Exadata cell’, –
smtpPort='<port for mail server>’, – smtpUseSSL=’TRUE’, – notificationPolicy=’critical,warning,clear’, – notificationMethod=’mail’;

alter cell validate mail;

 

监控 磁盘故障

当通过机房例行检查发现硬件黄灯警告或通过监控工具(命令行/ILOM/第三方工具)发现故

障并确定位置后,可进行更换操作。

更换Storage Cell硬盘

命令行登录Cell,判断故障硬盘,例如:
CellCLI> LIST PHYSICALDISK WHERE diskType=HardDisk AND status=critical DETAIL

 

观察Database Server 磁盘状态

[root@dm01db01 ~]# cd /opt/MegaRAID/MegaCli/
[root@dm01db01 MegaCli]# ./MegaCli64 -Pdlist -aAll | grep “Slot\|Firmware”

观察Database Server RAID状态

[root@dm01db01 MegaCli]# ./MegaCli64 -LdInfo -lAll –aAll

 

 

Storage Cell加电启动

远程登陆Storage Cell控制器ILOM,执行Power On,其它为系统的自动启动过程,知道Storage  Cell就绪

CellCLI> LIST GRIDDISK

若没有Active,需:

CellCLI> ALTER GRIDDISK ALL ACTIVE
等grid disk Active后,ASM会自动同步,使grid disk Online,查看状态: CellCLI> LIST GRIDDISK ATTRIBUTES name, asmmodestatus

 

确认ASM数据自动重新分布是否已经开始或完成。 Grid用户登录+ASM实例执行:

select * from v$asm_operation; 通过EM、SYSLOG、Cellcli、ILOM查看是否有告警解除信息

 

 

检测memory ECC错误

ipmitool sel list | grep ECC | cut -f1 -d : | sort -u

 

 

 

 

若发现Exadata上存在磁盘损毁则:

使用/opt/oracle.SupportTools/sundiag.sh 收集详细信息 并发给oracle support

 

检测 cell server Cache Policy

 

 
cell08#  MegaCli64 -LDInfo -Lall -aALL | grep 'Current Cache Policy'
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU

cell09#  MegaCli64 -LDInfo -Lall -aALL | grep 'Current Cache Policy'
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU

Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
Cache policy is in WB
Would recommend proactive  battery repalcement.

Example :
a. /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp  -Cache -LALL -aALL ####( Will list the cache policy)

b. /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp  -WB  -LALL -aALL ####( Will try to change teh policy from xx to WB)
     So policy Change to WB will not come into effect immediately
     Set Write Policy to WriteBack on Adapter 0, VD 0 (target id: 0) success
     Battery capacity is below the threshold value
 
检测cell BBU备用电池状态:
cell08# /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -a0

BBU status for Adapter: 0

BatteryType: iBBU
Voltage: 4061 mV
Current: 0 mA
Temperature: 36 C

BBU Firmware Status:

Charging Status : None
Voltage : OK
Temperature : OK
Learn Cycle Requested : No
Learn Cycle Active : No
Learn Cycle Status : OK
Learn Cycle Timeout : No
I2c Errors Detected : No
Battery Pack Missing : No
Battery Replacement required : No
Remaining Capacity Low : Yes
Periodic Learn Required : No

Battery state:

GasGuageStatus:
Fully Discharged : No
Fully Charged : Yes
Discharging : Yes
Initialized : Yes
Remaining Time Alarm : No
Remaining Capacity Alarm: No
Discharge Terminated : No
Over Temperature : No
Charging Terminated : No
Over Charged : No

Relative State of Charge: 99 %
Charger System State: 49168
Charger System Ctrl: 0
Charging current: 0 mA
Absolute state of charge: 21 %
Max Error: 2 %

Exit Code: 0x00
 
批量检测BBU 信息:
 
dcli -g ~/cell_group -l root -t '{
uname -srm ; head -1 /etc/*release ; uptime | cut -d, -f1 ; imagehistory ;
ipmitool sunoem cli "show /SP system_description system_identifier" | grep = ;
ipmitool sunoem cli "show /SP/policy FLASH_ACCELERATOR_CARD_INSTALLED
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -a0 | egrep -i
'BBU|Battery|Charge:|Fully|Low|Learn' ;
}' | tee /tmp/ExaInfo.log

 

Exadata 停机:

1. 确认无业务访问,以root 用户登录第1 个数据库服务器节点
2. 停止数据库(详见RAC/ASM 维护之RAC 启停章节)
3. 停止Cluster
# GRID_HOME/grid/bin/crsctl stop cluster -all
4. 停除本机以外的数据库节点

# dcli -l root -c dm01db02,dm01db03,dm01db04 shutdown -h -y now

5. 停存储服务器
cell_group 可自编辑,执行时并可由root 用户读取该文件(askmac.cn)
另需参考Storage Cell 存储维护Storage Cell 停机章节信息后方可执行下述命令
# dcli -l root -g cell_group shutdown -h -y now

6. 停本机
# shutdown -h -y now

7. 此时可通过ILOM 远程关机
8. 整机下电(关PDU)

 

Exadata 启动

1、为机柜加电(SWITCH 自然加电)
打开PDU开关进行加电,服务器指示灯都变绿,慢闪
若需手工开机数据库服务器、存储服务器需要按住其开关5秒。
也可在ILOM中点击Cell的Poweron开关进行开机,服务器指示灯为绿色长亮,再点击DB Server
的Poweron开关进行开机,服务器指示灯为绿色长亮。
2、检查是否有黄灯报警。
3、启动数据库、应用等。

 

 

 


 

Infiniband篇

 

启停IBSwitch

1. InfiniBand Switch电源的开启或关闭
InfiniBand Switch提供冗余电源,分别插在Exadata的2个冗余PDU电源上,并随PDU机柜电源

开启或关闭,若关闭InfiniBand Switch需断掉InfiniBand Switch的的冗余电源。 2. 查看OEM等是否有相关报警。

ILOM无法报警
从cell1的cellcli中查看list alerthistory可以看到

3. 从db01查看网络拓扑状态
[root@dm01db01 ~]# cd /opt/oracle.SupportTools/ibdiagtools

[root@dm01db01 ibdiagtools]# ./verify-topology -t halfrack

4. 插入InfiniBand电源线,查看InfiniBand Switch正常启动

 

检查IB链路状态

# /opt/oracle.SupportTools/ibdiagtools/infinicheck -z
# /opt/oracle.SupportTools/ibdiagtools/infinicheck

 

查看IB网络拓扑状态

登陆任意Database Server,采用Exadata工具命令:
[root@dm01db01 ~]# cd /opt/oracle.SupportTools/ibdiagtools
[root@dm01db01 ibdiagtools]# ./verify-topology -t halfrack

 

诊断IB链路没有错误

# ibdiagnet -c 1000 -r

 

查看IB网络连线

以root用户登陆InfiniBand Switch ILOM,采用listlinkup命令显示:
# listlinkup
Connector 0A Present <-> I4 Port 31 is ip
….

 

查看IB健康状态

# showunhealthy
OK – No unhealthy sensors.

 

IB健康检查

env_test

 

IB故障处理

1. 确认已经备份IB SWITCH
2. 确认所有的cable已经label,之后从IB switch上拔下cable
3. 拔下两根电源线poweroff
4. 取出IB switch
5. 安装新IB switch
6. 恢复IB switch设置
7. Disable the Subnet Manager
Disablesm
8. 连接cable
9. 确认cable连接的正确性
/opt/oracle.SupportTools/ibdiagtools/verify-topology
10. 从任何主机上运行如下命令确认 任何link没有错误
ibdiagnet -c 1000 –r
11. Enable the Subnet Manager using
Enablesm

 

IB硬件监控

showunhealthy & checkpower

Switch端口错误

ibqueryerrors.pl -s RcvSwRelayErrors,RcvRemotePhysE rrors,XmtDiscards,XmtConstraint Errors,RcvConstraintErrors,ExcB ufOverrunErrors,VL15Dropped

 

Link状态

/usr/sbin/iblinkinfo.pl -Rl

Subnet manager

/usr/sbin/sminfo

 

CISCO交换机

例行维护操作

采用Cisco IOS系统命令行方式,启动终端登陆管理网口IP:telnet xxx.xxx.xxx.xxx

输入用户名(root)/口令(welcome1),进入enable模式:

查看交换机的配置 通过show命令查看:

dm01sw-ip#show running-config Building configuration…
……

显示信息包括交换机主机名称、IP地址、网关地址、IOS系统版本、时区信息、DNS配置、 NTP配置、各网络端口配置、VLAN划分(全交换机一个VLAN)配置信息等。

运行监控
通过目前 Cisco 交换机监控的规范进行监控。

由于Cisco主要用于管理网使用,当完全不能访问时,只影响管理网的相关功能,不影响业务 网的正常运行。

当出现故障后,可采用目前Cisco交换机故障处理流程进行处理,并注意交换机主机名称、IP 地址、网关地址、IOS系统版本、时区信息、DNS配置、NTP配置、各网络端口配置、VLAN 划分(全交换机一个VLAN)等信息是否正确配置。

 

KVM

可通过 OEM GC 插件进行监控。

PDU

故障处理

单路故障不影响Exadata的连续性运行,但需要即时报修更换(包括管理IP等),以避免另外

备份PDU也出现故障,导致Exadata非正常停机。

MySQL Central @ OpenWorld 2015年大会意见征询开始!

作为Oracle OpenWorld 2015年大会的一部分,Mysql Central @ OpenWorld将在10月25~29日的San Francisco举行。

mysql_openworld

我们鼓励并热切期待MySQL客户,合作商和社区成员提交建议并参与展现:

  • 最佳实践
  • 实例研究
  • 使用世界上最流行的开源数据库进行工作所获得的价值
  • 新特性讨论及使用
  • 课题教程

MySQL Central @ OpenWorld将会围绕6个主题进行开展:

  • 性能及可扩展性
  • 高可用性
  • NoSQL和大数据
  • 云技术及操作开发
  • 数据库管理
  • 架构和应用开发

更多细节和请求提交指导可以在这里找到。相关会议建议及参与的提交截止日为2015年4月29日。

快来提交您的想法并积极参与吧!

对那些还未完成Oracle数据库10g OCP认证申请者的重要通知

如果你已经通过了所有关于Oracle数据库10g管理员认证专家(OCP)考试,但还没有提交你所需的课程培训细节,你需要在201591日前完成此路径并获取证书。

Oracle数据库10g考试及认证路径已经在2015年3月1日下线。如果你还没有完成它,你就需要在9月1日前完成培训任务以获取证书。

你需要提交表格来获取证书。

为了提供你完成了培训的证明,你需要:

  1. 登陆Pearson VUE网站。
  2. 点选Submit Course Form。
  3. 你需要提供你的培训课程内容如课程名,培训日期,城市和注册ID等信息。

在2015年9月1日后,Oracle将不再颁发Oracle 10g DBA OCP认证了。

沪ICP备14014813号-2

沪公网安备 31010802001379号