大家好!这是一篇介绍如何在服务器或个人电脑上从mysql迁移到mariadb的教程。也许你会问为什么我们要将数据库管理从mysql迁移到mariadb。往下看我们告诉你为什么这样做。
<a target="_blank"></a>
mariadb是mysql社区开发的分支,也是一个增强型的替代品。它由mysql前开发者们带头组织的基金会开发,使用起来和mysql完全一样。自从oracle买下了mysql,它就不再自由开源了,但是 mariadb仍然自由开源。一些如谷歌、维基、linkedin、mozilla等的顶级的网站已经迁移到mariadb了。它的优势在哪里:
向后兼容mysql
永远开源
由mysql缔造者的维护
更尖端的功能
更多的存储引擎
大型的网站已经转向mariadb
现在,让我们迁移到mariadb吧!

让我们创建一个叫linoxidedb的用于测试的示例数据库。
使用以下命令用root账户登陆mysql:
<code>$ mysql -u root -p</code>
输入mysql 的 root 用户密码后,你将进入mysql的命令行
创建测试数据库:
在mysql命令行输入以下命令以创建测试数据库。
<code>mysql> create database linoxidedb;</code>
查看可用的数据库,输入以下命令:
<code>mysql> show databases;</code>
creating test databases
如你所见,算上刚刚新建的linoxidedb我们一共有5个数据库。
<code>mysql> quit</code>
现在,我们就将刚创建的数据库从mysql迁移到mariadb。
注:使用centos这类基于fedora的linux发行版没有必要参考这篇教程,因为它们在安装mariadb时会自动代替mysql,无需备份现有的数据库,你只需要更新mysql就可以得到mariadb。
我们第一个重要的步骤就是备份现有的数据库。我们在终端(不是mysql命令行)里输入如下命令来完成备份。
<code>$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql</code>
哇哦!我们遇到了点麻烦。别担心我们可以搞定。
<code>$ mysqldump: error: binlogging on server not active</code>
mysqldump error
为了修复这个错误,我们需要对my.cnf文件做一些小改动。
编辑my.cnf文件:
<code>$ sudo nano /etc/mysql/my.cnf</code>
在[mysqld]部分添加如下参数。
log-bin=mysql-bin
configuring my.cnf
好了,在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启:
<code>$ sudo /etc/init.d/mysql restart</code>
现在,重新运行mysqldump命令来备份所有的数据库。
dumping databases
上面的命令将会备份所有的数据库,把它们存储在当前目录下的backupdatabase.sql文件中。
首先,我们得把my.cnf文件挪到安全的地方去。
注:在你卸载mysql包的时候不会自动删除my.cnf文件,我们这样做只是以防万一。在mariadb安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。
在shell或终端中输入如下命令来备份my.cnf文件:
<code>$ sudo cp /etc/mysql/my.cnf my.cnf.bak</code>
运行命令来终止mysql服务:
<code>$ sudo /etc/init.d/mysql stop</code>
然后移除mysql包:
<code>$ sudo apt-get remove mysql-server mysql-client</code>
uninstalling mysql
这是在ubuntu系统中安装mariadb的命令:
<code>$ sudo apt-get install software-properties-common</code>
<code>$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db</code>
<code># sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main'</code>
adding mariadb repo
键值导入并且添加完仓库后,你就可以用以下命令安装mariadb了:
<code>$ sudo apt-get update</code>
<code>$ sudo apt-get install mariadb-server</code>
installing mariadb
my.conf configuration prompt
想要将my.cnf.bak中的内容恢复到my.cnf,在终端中输入以下命令。由于my.cnf.bak文件在当前目录下,所以我们只要简单的执行以下命令即可:
<code>$ sudo cp my.cnf.bak /etc/mysql/my.cnf</code>
最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。
<code>$ mysql -u root -p < backupdatabase.sql</code>
就这样,我们已成功将之前的数据库导入了进来。
来,让我们登录一下mysql命令行,检查一下数据库是否真的已经导入了:
importing database
为了检查数据库是否被迁移到mariadb,请在mariadb命令行中输入“show databases;”不用输入(“”),如下:
<code>mariadb> show databases;</code>
mysql to mariadb database migrated
如你所见,linoxidedb及所有的数据库都已经成功的被迁移了。
最后,我们已经成功地从mysql迁移到了mariadb数据库管理系统。mariadb比mysql好,虽然在性能方面mysql还是比它更快,但是mariadb的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(foss),并永久自由开源,相比之下mysql还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望你能喜欢mariadb。
原文发布时间:2015-04-02
本文来自云栖合作伙伴“linux中国”