MySQL 5.7.3的Semi-Synchronous Replication持久化数据到多个Slave上

在MySQL5.7.3上, 我们发布了一个新的semi-synchronous功能。使用这个功能,可以更好的保障数据一致性和持久性。下面,请允许我为大家介绍一下这个功能。

在读这篇文章之前,你需要知道什么是semi-synchronous replication. 如果你以前没有了解过semi-synchronous replication,你可以阅读MySQL手册的 Seim-Synchronous Replication 章节。 MySQL 手册介绍的很详细,这里我就不再赘述了。

持久化数据到多个Slave

这个新功能允许用户设置:在事物成功提交之前,它的数据应该被复制到多少个slave上。换句话说,semisync master的事物需要等待多少个slave给它应答。简化的处理过程如下图所示:

2013年11月16日中华架构师大会演讲嘉宾和演讲主题等信息

自2009年于上海举办技术会议以来,一直坚持公益性且技术干货为主的特点,在2009年至2011年底之间的三年期间一直是IT168坚持真诚奉献,后因公司被收购等因素不得不放弃华东地区的免费技术活动,自接手技术会议以来,得到很多朋友和企业的支持,使我们华东地区的技术会议得以继续举办,并且一届比一届更好。 鉴于会议经费和组织者的时间关系,中华数据库技术大会和中华运维大会每2年举办一届。2013年11月16日,我们将在上海举办2013中华架构师大会,精彩内容请勿错过。

Continue reading

MySQL数据库InnoDB存储引擎在线加字段实现原理详解

腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL。该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理。
1. GCS行格式

需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展。为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在线加字段功能是通过新增一种innodb行格式GCS(Game Cloud Storage)来实现,从而避免对其他格式造成影响。

mysqlops-innodb-one

MySQL数据库的例外处理测试

针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常或称 例外的捕捉,然后作出相应的处理,简单地做了相关的测试,详细信息如下:

 

USE TEST;

CREATE TABLE `eugene` (
`ID` int(11) NOT NULL,
PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;

delimiter $$
DROP PROCEDURE IF EXISTS `test`.`handlerdemo`$$
CREATE PROCEDURE handlerdemo ()
BEGIN
DECLARE X2 INT;
DECLARE CONTINUE HANDLER FOR SQLWARNING       SET X2= 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND             SET X2 = 2;
DECLARE CONTINUE HANDLER FOR SQLSTATE ’23000′    SET X2= 3;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION     SET X2 = 4;

MySQL5.6 OnlineDDL对二级索引变更的影响

导读:本文是测试online DDL对表的二级索引的增删的影响。测试目的有以下几点:
(1):online DDL和旧机制的DDL 在二级索引变更方面的效率如何
(2):onlineDDL是否支持DML,查询并发

mysql> show create table small_table G
*************************** 1. row ***************************
Table: small_table
Create Table: CREATE TABLE `small_table` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT ”,
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT ”,
`TABLE_NAME` varchar(64) NOT NULL DEFAULT ”,
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT ”,
`ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT ’0′,
`COLUMN_DEFAULT` longtext,
`IS_NULLABLE` varchar(3) NOT NULL DEFAULT ”,
`DATA_TYPE` varchar(64) NOT NULL DEFAULT ”,
`CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
`DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
`COLLATION_NAME` varchar(32) DEFAULT NULL,
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT ”,
`EXTRA` varchar(30) NOT NULL DEFAULT ‘www’,
`PRIVILEGES` varchar(80) NOT NULL DEFAULT ”,
`COLUMN_COMMENT` varchar(1024) NOT NULL DEFAULT ”,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1710 DEFAULT CHARSET=utf8
1 row in set (0.04 sec)

MySQL5.6 Online DDL对全文索引变更

导读:


本文是onlineDDL 对Innodb全文索引的变更测试的。MySQL5.6手册中有这样的解释: (除非用户提供FTS_DOC_ID列,否则创建第一个全文索引的过程包含表的复制。

后续在该表可以就地(inplace)创建全文索引)。

下面对此进行相应的测试,测试目的有以下几点:

(1):FTS_DOC_ID对全文索引创建的影响
(2):onlineDDL 对全文索引的变更是否并发DML

MySQL5.6 OnLine DDL 对外键变更测试

导读:
本文是MySQL5.6 OnLine DDL 对外键变更操作的测试,测试目的: foreign_key_checks系统变量开启对增删外键约束的影响。

mysql> show variables like ‘%foreign_key_check%’;
+——————–+——-+
| Variable_name      | Value |
+——————–+——-+
| foreign_key_checks | ON    |
+——————–+——-+
1 row in set (0.00 sec)

测试1

MariaDB中文手册

MariaDB

这是MariaDB主要的知识库

按照下面的链接找到您感兴趣的的信息。如果您在文档上没有找到您想要的任何特别的信息,您可以在这里提问,我们将尽力提供最佳答案!

MariaDB简介

MariaDB是一个增强的MySQL替代品,并且在GPL v2许可证可用
它主要是由MariaDB community开发的,由MariaDB Foundation主管。

安全性

今天的世界,安全是非常重要的, 这也是MariaDB开发人员特别关注的。该项目在MySQL的基础上维护自己的一套安全补丁。对于每个MariaDB的发布版本,开发人员将合并所有MySQL的安全补丁,如果有必要,我们还会增强它们。当发现有严重安全问题,开发人员立即准备和分发一个新版本的MariaDB,尽快修复此问题。

MariaDB团队发现并报告了许多在MySQL和MariaDB中存在的安全问题。MariaDB团队与http://cve.mitre.org/紧密合作,以确保所有的安全问题及时报告和足够解释其中的细节。安全细节通常在修复MariaDB和MySQL版本后才公开。

兼容性