Category Archives: Database

mysqld的启停和配置文件

1. mysqld的启动参数

mysqld是MySQL服务器的守护进程。在使用mysqld启动MySQL服务器时,先保证hostname和/etc/hosts的配置正确。一般需要指定下面几个参数:
MySQL的参数文件(–defaults-file参数):这个参数非常重要,当一个主机存在多个实例时,每个实例要指定不同的参数文件(指定不同的port等参数),其他参数都可以写入这个配置文件中。如果没有指定这个参数,那么mysqld会根据下面的参数搜索参数文件:/etc/my.cnf ->/etc/mysql/my.cnf -> $MYSQL_HOME/my.cnf -> defaults-extra-file(The file specified with –defaults-extra-file=path) -> ./my.cnf -> ~/.my.cnf(User-specific options)
启动用户(–user),即mysqld进程的属主。如果没有配置这个参数,默认的用户是mysql。
该实例的pid文件(–pid-file),如果没有配置这个参数,默认的pid文件为/var/lib/mysql/..pid
该实例的socket文件(–socket),如果没有配置这个参数,默认的pid文件为/var/lib/mysql/mysql.sock
Continue reading

Posted in Linux, MySQL.

使用Python操作Redis

1. 安装pyredis

首先安装pip

也可以使用easy_install的方式来安装:

或者直接编译安装:

Continue reading

Posted in NoSQL, Python|R.

Redis – First Class

Redis是一个开源、支持网络、基于内存、键值对存储数据库,其灵感来源于Amazon Dynamo,使用ANSI C编写。其开发由VMware主持,并遵循BSD许可证。
几个重要特点:
主从复制
内存+磁盘持久化
丰富的数据类型,尤其擅长数组、链表、集合、有序集合和散列表等数据的高速处理。所以说,redis不是简单的key-value服务器,而是一个数据结构服务器。
Continue reading

Posted in Linux, NoSQL.

MariaDB 10 Multi-Master Replication 测试

MySQL 5.7和MariaDB 10提供了Multi-Master复制的功能,并在复制性能上有所改善。对比上一篇Master-Standy的配置,本文将测试一下Multi-Master的配置。
Multi-Master 复制通常是环形复制,可以在任意主机上将数据复制给其他主机。
03083656_z81R
Continue reading

Posted in Linux, MySQL.

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

Posted in Linux, MySQL.

常见的Oracle索引抑制场景

索引的抑制是在WHERE语句涉及到索引列的访问时却进行了table full scan等高I/O的方式扫描表。这是编写SQL的过程中经常遇到的问题,很多trap会导致索引无法使用。下面将一一列举常见的索引抑制场景。
Continue reading

Posted in Oracle.

Oracle 11g Health Monitor

Oracle 11g中引入了Health Monitor,用于多数据库进行全方面的诊断性检查,并生成报告。检查的内容包括:
Continue reading

Posted in Oracle.

Oracle Database 12c DBMS_STATS详解(三)

ALTER_STATS_HISTORY_RETENTION

该过程可以用来修改历史统计信息的保留时间。保留的历史统计信息既可以被自动清理,也可以使用PURGE_STATS手工清理。
语法
DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (retention IN NUMBER);
Continue reading

Posted in Oracle.

Oracle Database 12c DBMS_STATS详解(二)

设置或者获取统计信息
可以使用如下的子程序来存储或者取回单独的与列相关的、与索引相关的以及与表相关的统计信息:

PREPARE_COLUME_VALUES
PREPARE_COLUMN_VALUES_NVARCHAR
PREPARE_COLUMN_VALUES_ROWID

SEED_COL_USAGE
SET_INDEX_STATS
SET_SYSTEM_STATS
SET_TABLE_STATS

GET_COLUMN_STATS
GET_INDEX_STATS
GET_SYSTEM_STATS
GET_TABLE_STATS

Continue reading

Posted in Oracle.

Oracle Database 12c DBMS_STATS详解(一)

作为一个dba,性能优化是少不了的事情,而这其中,dbms_stats这个包,则更是绕不过去的东西。
因此我就打算把12c官方文档Oracle® Database PL/SQL Packages and Types Reference 12c Release 1 (12.1)中的第153章的内容翻译一下,并加一些说明和例子进去,以便日后参考。
原文链接:
http://docs.oracle.com/cd/E16655_01/appdev.121/e17602/d_stats.htm#ARPLS059153章 DBMS_STATS

利用DBMS_STATS这个包,你可以查看或者修改优化器为数据库对象收集的统计信息。
你也可以参考oracle 数据库sql优化指南: http://docs.oracle.com/cd/E16655_01/server.121/e15858/toc.htm
Continue reading

Posted in Oracle.