MySQL管理之道:性能调优、高可用与监控(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 如何将MySQL迁移至MariaDB

以MySQL 5.1版本为例,若要升级到MySQL 5.6,需要进行一次全库mysqldump导出再导入,当数据库很大时,比如为100GB,那么升级起来会非常困难。但如果升级为MariaDB 10版本,则会非常轻松,按照官方文档阐述,只需把MySQL卸载掉,并用MariaDB启动,然后通过mysql_upgrade命令升级即可完成,如图1-13所示。

图1-13 升级步骤

当处理内部的临时表时,MariaDB 5.5/10.0用Aria引擎代替MyISAM引擎,MariaDB 10.1可以通过设置参数default_tmp_storage_engine = InnoDB作为内部临时表存储引擎,这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓存机制。如果临时表很多,则要增加aria_pagecache_buffer_size参数的值(缓存数据和索引),默认为128MB(而不是tmp_table_size参数)。如果没有MyISAM表,那么建议把key_buffer_size调低,而且要调得非常低,例如64KB,仅提供给MySQL库中的系统表使用,如图1-14所示。

图1-14 内部临时表存储引擎

什么是Aria呢?Aria是早期MariaDB版本的默认存储引擎,自2007年以来它一直在开发,当前版本是Aria 1.5,下一个版本是Aria 2.0。Aria引擎前身为Maria,后来怕和MariaDB数据库搞混淆,又重新命名,是增强版的MyISAM,解决了MyISAM崩溃安全恢复问题,也就是说,mysqld的进程崩溃后,Aria将恢复所有表。

1.Aria引擎的宕机恢复

数据和索引支持崩溃安全恢复,在崩溃后,表数据的变化将回滚语句的开始状态或最后一个LOCK TABLES的命令状态(见图1-15)。

图1-15 崩溃恢复

2.Aria引擎的未来和发展

官方在未来会让Aria全面支持事务,但现在只是加入计划当中,并不在它们内部开发的优先级列表中。目前这个引擎官方都已暂停开发,现在重点都放在了改善MariaDB上。当前的目标是保持稳定和修复所有发现的bug并进行修复。

3.实验验证当前版本不支持事务

下面做个实验验证当前版本是否支持事务,启用关键字TRANSACTIONAL=1。

        MariaDB[test]>create table t5(id INT)ENGINE=ARIA TRANSACTIONAL=1;
        Query OK, 0 rows affected (0.99 sec)

        MariaDB [test]> begin;
        Query OK, 0 rows affected (0.07 sec)

        MariaDB [test]> insert into t5 values(1);
        Query OK, 1 row affected (0.94 sec)

        MariaDB [test]> rollback;
        Query OK, 0 rows affected, 1 warning (0.00 sec)

        MariaDB [test]> select * from t5;
        +------+
        | id |
        +------+
        | 1 |
        +------+
        1 row in set (0.00 sec)

从以上代码中可以看到并没有进行回滚。