在MySQL和MariaDB上进行实验

MySQL 和 MariaDB

注意:我对MySQL和MariaDB一无所知。

MariaDB被认为与MySQL兼容。
可以使用mysql命令连接,并参考/etc/mysql/my.cnf。

我怀疑里面的东西可能是一样的,所以我进行了以下实验。

实验内容 (” “)

    1. 使用Docker创建MySQL数据库,将数据文件(/var/lib/mysql)保存在卷中。

 

    1. 使用MySQL命令创建数据库、表和记录。

 

    1. 删除MySQL容器。

 

    1. 创建MariaDB容器,并指定先前的卷作为数据文件。

 

    使用MySQL命令确认是否可以执行SELECT。

实验步骤

#!/bin/bash

mkdir db
docker run -d -p "3306:3306" -v "$(readlink -f ./db):/var/lib/mysql:rw" -e MYSQL_ROOT_PASSWORD=password --name db mysql

sleep 20

mysql -u root -ppassword -h 127.0.0.1 << EOF
create database test1;
use test1;
create table test_table(name varchar(255));
insert into test_table(name) values ('fooo');
EOF

docker stop db
docker rm db

docker run -d -p "3306:3306" -v "$(readlink -f ./db):/var/lib/mysql:rw" -e MYSQL_ROOT_PASSWORD=password --name db mariadb

sleep 20


mysql -u root -ppassword -h 127.0.0.1 << EOF
select * from test1.test_table;
EOF

这个环境是Ubuntu Server 14.04 + docker 1.7.0。

结果

发生了这样的事情

ubuntu@ubuntu:~$ bash -x test.sh
+ mkdir db
++ readlink -f ./db
+ docker run -d -p 3306:3306 -v /home/fujioka/db:/var/lib/mysql:rw -e MYSQL_ROOT_PASSWORD=password --name db mysql
e64ce620ae9b849dde62338e63bd35375f36221ed989142bda40dfe31b8582b3
+ sleep 20
+ mysql -u root -ppassword -h 127.0.0.1
+ docker stop db
db
+ docker rm db
db
++ readlink -f ./db
+ docker run -d -p 3306:3306 -v /home/fujioka/db:/var/lib/mysql:rw -e MYSQL_ROOT_PASSWORD=password --name db mariadb
475af5ed11ce71d37075b87ce6aae7482d304bfde95bc9cb00d31613336ed3e2
+ sleep 20
+ mysql -u root -ppassword -h 127.0.0.1
name
fooo
ubuntu@ubuntu:~$

暂时看起来好像能够正确选择。(最后的fooo是插入到test1.test_table中的东西)

总结

MySQL和MariaDB在文件存储方式上基本相同,看起来并没有明显的区别。
但是,是不是因为使用了InnoDB引擎?或者说,MariaDB的Docker镜像是不是进行了迁移等操作?光凭这些信息我们还无法确定。
因此,虽然不敢断言它们完全相同,但至少从Docker的MySQL镜像切换到MariaDB镜像应该是相对简单的。