在 CentOS 6.4 上从 MySQL 5.5.31 迁移至 MariaDB 5.5.31 的操作记录。
0. 先备份数据库
数据库包含了自己的几乎所有重要内容,不管进行的操作是否有风险,先备份总是很必要的。
可以通过 phpMyAdmin 导出数据库。
也可以直接在系统里将所有数据库文件备份一份:
1 |
cp -R /var/lib/mysql /var/lib/mysql.bak |
A. 先配置 MARIADB 的安装源。
MariaDB 官方提供了一个自动生成安装源配置文件的工具:https://downloads.mariadb.org/mariadb/repositories/。依次选择 Linux 发行版(Distro)、版本(Release),然后选择 MariaDB 版本号(目前只有 10.0 和 5.5)即可。(注意,MariaDB 10 是开发版本。)
MariaDB YUM 安装源的位置:http://yum.mariadb.org/。打开后看到的是 MariaDB 版本列表,按照需要的版本号点击进入下一层文件夹。
然后根据自己的 Linux 发行版,如 CentOS、Fedora、rhel(Red Hat Enterprise Linux)以及系统架构如 x86(表示 32 位操作系统) 或 amd64(表示 64 位操作系统)选择对应的文件夹。
例如,目前 MariaDB 的主版本是 5.5,我的 CentOS 是第 6 版(6.4)、 32 位的,就选择文件夹 centos6-x86/ 。现在浏览器中的地址显示为 http://yum.mariadb.org/5.5/centos6-x86/,这就是下面配置文件中的 baseurl。
对于本例,将下面的安装源配置保存为 MariaDB.repo,上传到服务器的 /etc/yum.repos.d 文件夹:
1 2 3 4 5 6 7 |
# MariaDB 5.5 CentOS repository list - created 2014-11-15 08:38 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 |
B. 卸载原来的 MYSQL 及相关包
1 |
# yum remove mysql* |
上面用 * 来匹配删除所有 mysql 数据包(包括因包依赖而删除的别的包,如 postfix)。因为直接安装的时候会出现冲突,例如:
1 |
file /usr/share/mysql/ukrainian/errmsg.sys from install of MariaDB-server-5.5.31-1.i686 conflicts with file from package mysql-libs-5.5.32-1.el6.remi.i686 |
好像因为将 php-mysql 也给删除了(实际上这个不该删除的),所以 phpMyAdmin 也因为依赖关系而被删除了
所以最好不要用通配符 *,而是选择性删除几个主要的,
1 |
# yum remove mysql mysql-server mysql-libs |
C. 然后安装 MARIADB 及相应 PHP 扩展
也是指定几个主要的安装包,剩下的让 yum 自己进行依赖关系检查。
1 |
# yum install MariaDB-server MariaDB-client php-mysql |
或者不安装 MariaDB-server 而改为具有同步多主群集特性(synchronous multi-master cluster)的 MariaDB Galera Cluster:
1 |
# yum install MariaDB-Galera-server MariaDB-client galera |
这里比较搞笑的是,没注意前面把 php-mysql 给卸载了,结果运行数据库之后访问 WordPress,结果遭遇下面的错误:
1 |
Your PHP installation appears to be missing the MySQL extension which is required by WordPress. |
D. 完成,修补
不管版本是否升级了,执行一下数据库升级指令总没有坏处:
1 |
# mysql_upgrade -p |
看看数据库版本是不是升级了:
1 2 3 4 5 6 7 |
# mysql -u root -p -e ’show global variables like "version";’ Enter password: +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | version | 5.5.31-MariaDB | +---------------+----------------+ |
将 MariaDB 加入随系统自启动列表,
以前 MySQL 的时候是 mysqld,现在是 mysql,就差了一个字母 d。
1 |
# service mysql start |
这个时候服务器上的网站应该已经可以正常工作了,访问数据库没有问题。
如果有必要,安装完 MariaDB 之后可以重新安装 postfix。如果发现 phpMyAdmin 提示无访问权限了,那就是被卸载了,需要重新安装和配置 phpMyAdmin。phpMyAdmin 之所以也会被删除,是因为之前安装的是针对 MySQL 的,不兼容 MariaDB,所以需要重新安装。
E. 配置文件
因为之前进行了卸载操作,所以原来的 phpMyAdmin 的配置文件都被清除了,需要重新配置。
而对于 MySQL 的配置文件 /etc/my.cnf,因为 MariaDB 虽然创建了一个 my.cnf.d 文件夹来存储自己的配置文件,但是它会首先加载 my.cnf,且原来 MySQL 的配置对 MariaDB 而言还是有效的。
但是也有些例外:
MariaDB 默认使用 Aria 存储引擎存储内部临时文件,而不是 MySQL 默认使用的 MyISAM。如果你有很多临时文件,最好增加参数 aria-pagecache-buffer-size 并设置为与 key-buffer-size 相同的数值。
如果没有使用 MyISAM,则可以将 key-buffer-size 设置为一个极小的值,如 64K。
转载自:水景一页
文章评论