Mongoose提供了一个直观的、基于模式(schema)的解决方案,可以为你的应用数据使用内置的类型转换、验证、查询和业务逻辑来建模。本文简述在Node.js中使用Mongoose连接MongoDB的方法。 Continue reading
Category Archives: Database
keepalived+MySQL双主实现高可用性
使用MySQL主主复制技术+Keepalived是一种简单、便捷的解决方案,在高可用集群环境中,keepalived使用虚拟VIP,使用Keepalived自带的服务监控功能和自定义脚本来实现MySQL故障时自动切换,非常灵活。如果有一台MySQL服务器死机,或工作出现故障,keepalived将检测到,并将有故障的MySQL服务器从系统中去除。当MySQL服务器工作正常时,则自动将MySQL服务器加入到服务器集群中,无需人工干预。下面环境为debugo01、debugo02两个节点,使用CentOS 6.6系统。MySQL server的版本是Percona Server 5.6.21,已经配置好了两边的MySQL实例。 Continue reading
添加磁盘导致的ASM实例crash
今天核心系统将一块磁盘(EMC DMX4)添加到了ASM dg中,然后数据库RAC两个节点双双crash掉了,顿时吓了一身冷汗。 Continue reading
【译】mysql-master-ha Architecture
原文地址:https://code.google.com/p/mysql-master-ha/wiki/Architecture
其他整理过的MHA文档: mysql-master-ha Overview
香打同学的mysql-master-HA other solutions
当master崩溃后,MHA以下面的方式恢复其他的slave。
图:恢复的步骤
Continue reading
【译】mysql-master-ha Overview
MHA是一个日本大牛故障切换工具(项目主页:http://code.google.com/p/mysql-master-ha/),本文为项目wiki中Overview这篇文章(Overview)。 Continue reading
MySQL Semisync
默认情况下,MySQL的复制功能是异步的。master把binlog发送给slave时,这个复制动作就已经完成,master不会验证slave是否接收完毕(类似于Oracle DataGuard Maximum Performance)。异步复制同时意味着在把数据从一个mysqld实例拷贝到另一个mysqld时有一个延时,即master当前提交的事务不会在同一时刻拷贝到slave。这也带来了一定的风险,当master或slave发生故障时,slave有可能会没有接收到master发送过来的binlog,这样就会造成了master/slave的数据不一直,甚至在恢复时也会造成数据的损失。
为了解决这个问题,MySQL 在5.5以后引入了一种半同步模式,slave在接收binlog并写入relay log后会给服务器发送一个反馈,告诉master接收完成,当出现超时情况时,master会暂时切换到异步复制模式,和Oracle DataGuard Maximum Available的处理方式比较相似。半同步复制模式必须在master和slave端同时启用,否则master会使用默认的异步模式。
Continue reading
node.js连接Oracle数据库
接触了Node.js大概有一周时间了。异步的非阻塞编程很适合服务器端大量数据库/IO等信息的获取,减少了服务器线程的数量和负载。
第一步是配置Oracle的连接,Oracle的node.js driver基本都依赖于OCCI(Oracle C++ Call Interface),一共有两三个实现。其中node-oracle应该是比较稳定的一个。通过npm编译安装连接Oracle有些麻烦,下面是安装配置的方法。 Continue reading
MySQL Percona xtrabackup
Percona XtraBackup是一个MySQL中完全免费开源的热备工具,而备份时并不会锁定数据库(innodb和xtradb)。xtrabackup的下载地址可以在Percona XtraBackup 找到,percona提供了rpm和deb的发行包来进行快速安装。
Percona支持增量、加密、并行和压缩流(compressed Stream)等功能,并具有较快的恢复速度。并适用于MySQL,MariaDB和Percona Server等主流版本,可以完全取代商业产品MySQL Enterprise Backup。二者功能的对比可以参考:About Percona Xtrabackup
XtraBackup由下面4个工具组成:
innobackupex 提供MyISAM,InnoDB和XtraDB表的MySQL数据库实例备份的封装脚本。
xtrabackup 使用C语言开发的热备工具,只能备份InnoDB和XtraDB数据。
xbcrypt 用于对备份文件加密和解密。
xbstream 提供streaming和从xbstream格式中写入/提取数据等功能。
Percona建议使用innobackupex来代替使用xtrabackup这个二进制工具来完成备份的功能。
1. 全量备份
innobackupex/xtrabackup使用非常简单,指定连接参数–host, –user, –password, -socket, –port等参数和备份目录就可以完成全量备份。另外可以使用并行–parallel=n来提高备份速度。
innobackupex –user=root –password=” –no-timestamp /root/backup
……
innobackupex: Backup created in directory ‘/root/backup0′
140724 08:36:51 innobackupex: Connection to database server closed
140724 08:36:51 innobackupex: completed OK!
当指定了–no-timestamp选项时,就会直接将文件备份到/root/backup下。否则就会在/root/backup目录下建立一个带timestamp标记的目录名,例如:/root/backup/2014-07-25_08-38-33.
被备份目录下,可以找到备份的详细信息。由于是全量备份,innodb_from_lsn =0。
1 2 3 4 5 6 7 8 9 10 11 12 |
# cat xtrabackup_info uuid = c1f0940a-1393-11e4-95cf-441ea172901c name = tool_name = innobackupex tool_command = --user=root --password=... --no-timestamp /root/backup ...... end_time = 2014-07-25 08:36:46 lock_time = 2 binlog_pos = innodb_from_lsn = 0 innodb_to_lsn = 9594065461 ...... |
MySQL event
MySQL事件调度器(Event Scheduler)类似于Oracle的scheduled job,可以在某一个时间点或者或者每隔固定间隔重复执行执行SQL语句、存储过程或过程体(BEGIN … END)。 Continue reading
MySQL mysqladmin
mysqladmin是mysqld后台进程的管理工具,非常方便。一定程度取代了使用mysql客户端工具登录命令行执行一些管理命令。该命令行工具中,和登录、验证、连接相关的参数和其他mysql*工具是一样的(-u,-p,-h,-P,-s,–ssl*,-C/–compress, –protocol, –secure-auth, –default-character-set等)。其他常用的参数如下:
-f, –force Don’t ask for confirmation on drop database; with multiple commands, continue even if an error occurs.
# 输出信息
–debug-check Check memory and open file usage at exit.
–debug-info Print some debug info at exit.
-v, –verbose Write more information.
# 定期执行一次,间隔为-i秒,一共执行-c次。对比输出。
-c, –count=# Number of iterations to make. This works with -i (–sleep) only.
-i, –sleep=# Execute commands again and again with a sleep between.
-r, –relative Show difference between current and previous values when used with -i. Currently only works with extended-status.
-E, –vertical Print output vertically. Is similar to –relative, but prints output vertically.
#连接错误则静默退出,超时选项
-s, –silent Silently exit if one can’t connect to server.
–connect-timeout=#
–shutdown-timeout=#
-w, –wait[=#] Wait and retry if connection is down.
mysqladmin主要提供了下面命令功能:
Continue reading