首页 > 代码库 > MariaDB..

MariaDB..


一 与 MySQL 相比较,MariaDB 的优势:

Maria 存储引擎

PBXT 存储引擎

XtraDB 存储引擎

FederatedX 存储引擎

更快的复制查询处理

线程池

更少的警告和bug

运行速度更快

更多的 Extensions

更好的功能测试

慢查询日志的扩展统计

支持对 Unicode 的排序

二 mariadb 安装

官方强烈推荐使用yum方式安装

https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.2

选择合适的操作系统版本,生成yum仓库资源

在服务器上添加生成的yum仓库资源

 [root@localhost ~]# cd /etc/yum.repos.d

 [root@localhost yum.repos.d]# vi MariaDB.repo 

[mariadb]

name = MariaDB 

baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 

gpgcheck=1

yum install -y MariaDB-server MariaDB-client

systemctl start mysql   启动数据库

mysql -uroot -p   默认没有密码

MariaDB [(none)]> set password=password(‘mysql‘);

MariaDB [(none)]> flush privileges;

三 引擎的支持

MariaDB除了标准的MySQL支持的存储引擎之外,还有自己特有的存储引擎:

Aria(原名Maria) 存储引擎 Aria 存储引擎是默认被编译进MariaDB 5.1里的,并且在mysqld启动的时候就要求同时启动. Aria是MariaDB的一个全新的存储引擎,它是作为MyISAM存储引擎的替代者而开发的。 它的特点: 1. 拥有自动恢复功能 2. 比MyISAM更好的缓存系统,相对于MyISAM有一定提升。 3. 未来版本可能会支持事务。 另外,内部的磁盘表是Aria表格式而不是MyISAM表格式.这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓冲机制

ColumnStore存储引擎是专门为数据仓库设计的存储引擎

TokuDB存储引擎是专门为提升写操作性能而设计的存储引擎,可以在open-source版本中获得,也可以通过安装插件的方式安装

四 mariadb 优点

MariaDB中的线程池技术可以允许20万个以上的数据库链接,并在多链接的情况下数据库性能依然不受影响,mysql支持10万链接

针对二进制日志的组提交技术,使得复制变得更快和更安全(MySQL5.6版本开始也支持),组提交(group commit)是MYSQL处理日志的一种优化方式,主要为了解决写日志时频繁刷磁盘的问题。binlog组提交的基本思想是,引入队列机制保证innodb commit顺序与binlog落盘顺序一致,并将事务分组,组内的binlog刷盘动作交给一个事务进行,实现组提交目的

并行复制技术:通过slave-parallel-threads=N参数设置,可以使得从库的SQL线程在应用二进制日志的时候,可以多线程并行处理,从而加快复制的速度, mysql也支持

Kill命令KILL QUERY可以停止当前执行的query,而不会把当前数据库链接给杀掉

支持delete … returning语句,返回的是当前被删除的数据

五 备份恢复

mysqldump

Percona XtraBackup

MariaDB Backup

物理文件拷贝:执行FLUSH TABLES WITH READ LOCK命令将数据库变成只读,然后拷贝数据文件

yum install -y MariaDB-backup

mariabackup --backup --target-dir=/root/backups/ -u root -p mysql --host=127.0.0.1

六 MariaDB的复制手段

支持标准的MySQL复制建立办法,包括基于binlog日志位置的复制和GTID模式的复制

支持半同步复制,和MySQL的配置方法一样

支持延迟复制,和MySQL的配置方法一样

基于MariaDB Galera Cluster的多主复制

MariaDB Galera Cluster提供了并行的复制机制,能实现同步的,多主的复制方式。因此具有很多实用特性:(1)可以在任意节点上进行读写(2)自动剔除故障节点(3)自动加入新节点(4)真正行级别的并发复制(5)客户端连接跟操作单数据库的体验一致。 在数据复制方面有同步和异步两种方式,而同步方式的优势十分明显:(1)高可用(当节点宕机时数据不会丢失,数据复制一致性高,实现不复杂);(2)具有较高的性能;(3)跨集群。但是缺点是随着节点数量的增加,其事务的响应时间,冲突的概率和死锁率会呈指数增长。

为克服同步复制的的缺点,现在主要的技术包括:Group Communication,Write-sets,Database State Machine和Transaction Reordering。Galera Cluster使用一种称为Certification-based Replication的策略实现集群同步制,Certification-based Replication综合使用了Group Communication和Transaction Reordering技术。具体来说:事务可以在任意单节点上执行或者复制,但是在事务在提交时,会运行一个协调认证程序来保证事务的全局一致性,它借助广播服务,建立一个全局的并发事务。 Certification-based Replication的主要思想是数据库中的任何事务在未到达提交点(commit point)时,会假设没有任何冲突。在事务commit发生之前,这个事务将会引起的所有数据库变化和所变行的主键都会被收集到一个write-set中。然后会把这个write-set发送到集群中的其它节点上。有了write-set,此时集群中所有的节点会使用主键执行一个certification test,如果失败则丢弃write-set并且回滚事务,如果成功则事务会被提交并将write-set应用到集群中其余的节点。而Galera Cluster中使用Certification-based Replication策略则依赖于一个全局的事务序列。

主要功能

同步复制

真正的multi-master,即所有节点可以同时

读写数据库

自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制

真正的并行复制,行级

用户可以直接连接集群,使用感受上与MySQL 完全一致

优势

因为是多主,所以不存在Slavelag(延迟)

不存在丢失事务的情况

同时具有读和写的扩展能力

更小的客户端延迟

节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

 MariaDB Galera Cluster 使用

1 在每个服务器的/etc/hosts中增加主机名解析

192.168.237.133 mariadb1 

192.168.237.134 mariadb2

2 在每个服务器节点的/etc/my.cnf.d/server.cnf中增加配置: 

[galera] 

Mandatory settings wsrep_on=ON 

wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://mariadb1,mariadb2" 

default_storage_engine=InnoDB 

binlog_format=ROW 

innodb_autoinc_lock_mode=2

3 mysqld --wsrep-new-cluster --user=mysql &

4 查看Galera集群的状态:

查看show status like ‘wsrep_%‘;

wsrep_cluster_size:表示当前有多少个节点

wsrep_cluster_state_uuid:集群状态UUID,如果该值和当前的wsrep_local_state_uuid值相同,则说明数据是同步的

wsrep_last_committed:表示最近一次提交的事务ID

wsrep_local_commits:表示在本节点上提交的事务个数

MariaDB [(none)]> show variables like ‘%wsrep_sst%‘;

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| wsrep_sst_auth                  |       |

| wsrep_sst_donor                 |       |

| wsrep_sst_donor_rejects_queries | OFF   |

| wsrep_sst_method                | rsync |    复制方式

| wsrep_sst_receive_address       | AUTO  |

+---------------------------------+-------+

无论在那个节点操作数据都能同步到另一个节点,重新启动一个新的节点可以同时同步数据。

本文出自 “12062356” 博客,请务必保留此出处http://12072356.blog.51cto.com/12062356/1953834

MariaDB..