MySQL 5.7和MariaDB 10提供了Multi-Master复制的功能,并在复制性能上有所改善。对比上一篇Master-Standy的配置,本文将测试一下Multi-Master的配置。
Multi-Master 复制通常是环形复制,可以在任意主机上将数据复制给其他主机。
Continue reading
Category Archives: Ops
MariaDB 10 Multi-Master Replication 测试
Percona Server 5.6 Master-Slave Replication测试
MySQL的Master-Slave Replication是一个异步的复制过程,从一个 MySQL instance(Master)复制到另一个 instance(Slave)。在Master与Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和IO线程)在 Slave 端,另外一个线程(IO线程)在Master端。 在MySQL Multi-Master兴起的今天,Master-Slave依然有着不少应用场景。
MySQL 复制的基本过程如下(http://machael.blog.51cto.com/829462/239112/):
1. Slave上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2. Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的 Binary Log 文件的名称以及在 Binary Log 中的位置;
3. Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-
info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”
4. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的。
下面就在CentOS 6.5 两节点的环境中配置一个简单的Percona Server 5.6.16 Master-Slave复制:
OStack01 192.168.46.132
OStack02 192.168.46.133
Continue reading
Linux常用的性能监控工具
有效地使用操作系统实用工具来进行性能诊断是目前作为数据库管理员和系统管理员最重要的工作之一。常见的性能问题无异于是由CPU使用、内存和磁盘I/O问题来导致的。对于Linux而言,使用系统自带的ps,sysstat,top等包就能很好的找到问题的所在(这些包主要也是读/proc的信息来解析)。下面来一一查看这些性能诊断问题。
Continue reading
Spark 0.91集群部署
继上一篇 CentOS 6.5 + HDP 2.0.6(Hadoop 2.2)的环境,测试一下Spark的local和standalone集群模式。
1. 安装scala
当前scala的最新版本是2.10.4,从scala的官方网站将scala-2.10.4.rpm发行包下载下来。
Continue reading
在CentOS 6上编译3.13内核
3.13内核无疑是一个里程碑式的内核,包括了几项I/O子系统队列调整、nftables等几项关键的更新。
Continue reading
Linux Note – 通过ulimit和PAM来限制资源
ulimit是Shell内建指令,可用来控制shell进程或者shell子进程使用的系统资源。限制分为硬限制和软限制两种:
-H 设置硬资源限制,硬资源限制用于控制软限制。限定一旦设置只有root用户可以增加硬限制,普通用户只能减少自己的硬限制大小。
-S 设置弹性资源限制,弹性限制用于限制具体的用户或者进程。设置后普通用户可以增加,但是不能超过硬限制大小。
如果不指定-S或者-H,那么弹性资源限制和硬限制将同时设置。
Continue reading
Linux Note – cgroup
cgroups(control groups)是Linux内核2.6.24引入的一个新特性 ,用来限制、分离和报告一个进程组的资源(CPU、内存、磁盘输入输出等)。常用的ulimit只能基于用户或者用户组来进行资源限制,不能够针对某一进程作出详细限制,缺乏灵活度。
cgroups的一个设计目标是为不同的应用情况提供资源限制的统一接口:
内存资源限制:可以对于一个组设置内存上限;
CPU和I/O的优先级:可以使一些组得到更高的CPU或磁盘I/O使用权;
报告:可以用来衡量系统确实把多少资源用到合适的目标;
分离:分离组的命名空间,这样一个组内不会看到另一个组的进程、网络连接和文件。
控制:冻结组或检查点和重启动
Continue reading
Linux Note – auditd
Linux的审计系统包括内核审计子系统和一些进程,auditd服务则是Linux审计子系统的用户空间进程。内核的审计模块将收集的审计消息发送给用户空间的后台进程auditd进行处理。在默认的情况下,审计结果会发送到/var/log/audit/audit.log文件中。如果auditd没有运行,审计消息会发送给rsyslog。
(图片来源:http://doc.opensuse.org)
审计消息的来源主要有两方面:
a).内核、应用程序(audit-libs-devel提供的API)。
b).系统管理员添加的审计规则,匹配规则的事件都将被记录下来。
Continue reading
为HDFS添加新的存储
继续上一篇的配置,由于PC Server自带了6块600G的磁盘,可以加入集群中。首先检查磁盘:
Continue reading
Hadoop 2.3 集群配置
Hadoop 2.3.0版在2014年2月20日正式发布了,新增了很多不错的新特性。(董大神对这些特性的介绍:http://dongxicheng.org/mapreduce-nextgen/hadoop-2-3-0-new-features )。下面是Hadoop 2.3版搭建分布式集群的全部过程。
Continue reading