继上一篇,本文将探讨下Redis Cluster更多的原理和特性。本文的内容来自于官方文档和后面的参考文献。 Continue reading
Category Archives: MySQL
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
【译】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
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
MySQL mysqldump
mysqldump是mysql自带的一个基本的逻辑备份工具,用于转存储数据库结构和数据。它主要产生一个SQL脚本,其中包含创建数据库所必需的命令CREATE TABLE INSERT等命令。下面总结一下mysqldump的参数,方便日后查询使用。
mysqldump –help
mysqldump Ver 10.13 Distrib 5.6.19-67.0, for Linux (x86_64)
……
# 通过usage可以看出,可以逻辑导出某个数据库、数据库中的表或者全部数据库。一般后面加重定向将逻辑语句写入文件。
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…] #或-B
OR mysqldump [OPTIONS] –all-databases [OPTIONS] #或-A
# 模式和错误输出
Continue reading
MySQL InnoDB parameter
innoDB是事务型数据库的首选引擎,支持ACID事务,支持行级锁定,也是现在Percona等发型版本的默认引擎。innoDB支持4个事务隔离级,默认为repeatable read,比Oracle支持的两个事务隔离级更加强大。(参考:Innodb事务隔离级别 )
MySQL innodb事务引擎的逻辑框架图和Oracle非常类似,包含一个大的buffer pool,重做日志(redo log),表空间文件ibddata1(等同于Oracle数据文件头+system表空间)。另外,回滚(undo)也不是使用独立的undo表空间来管理undo segment,而是使用主表空间文件。undo相关参考:
概念原理——MySQL数据库InnoDB存储引擎Log漫游
Mysql Innodb的undo redo操作过程
深入分析——InnoDB undo log解析(一)
InnoDB undo log解析(二)
Continue reading