
1. 安装Mysql5.6.19,安装成功后,端口号:3306
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3306 -p
mysql>select version()
+-----------+
| version() |
+-----------+
| 5.6.19|
+-----------+
1 row in set (0.00 sec)
2.安装MariaDB10.0.12.,安装成功后,口端口号:3307
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3307 -p
mysql>select version()
+---------------------+
| version() |
+---------------------+
| 10.0.12-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)
下面是,在Mysql安装好后,安装MariaDB10.0.12的详细方法
下载最新版本的二进制编译包tar.gz (目前为mariadb-10.0.12-linux-x86_64),并将它解压到你的自定义目录中. 本文档假定安装目录为/opt.
创建数据所在目录及符号链接,如下所示:
[root@centOS7 opt]# mkdir mariadb-data
[root@centOS7 opt]# ln -s mariadb-10.0.12-linux-x86_64 mariadb
[root@centOS7 opt]# ls -al
total 20
drwxr-xr-x. 5 root root 4096 2014-09-26 07:27 .
dr-xr-xr-x. 23 root root 4096 2014-09-26 06:38 ..
lrwxrwxrwx. 1 root root 27 2014-09-26 07:27 mariadb ->mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 13 root root 4096 2014-09-26 07:07 mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 2 root root 4096 2014-09-26 07:26 mariadb-data
创建组mariadb及用户mariadb, 设置文件对应的所属权限:
[root@centOS7 opt]# groupadd --system mariadb
[root@centOS7 opt]# useradd -c "MariaDB Server" -d /opt/mariadb -g mariadb --system mariadb
[root@centOS7 opt]# chown -R mariadb:mariadb mariadb-10.0.12-linux-x86_64/
[root@centOS7 opt]# chown -R mariadb:mariadb mariadb-data/
通过从support-files中拷贝my.cnf, 在/opt/mariadb目录下创建新的my.cnf:
[root@centOS7 opt]# cp mariadb/support-files/my-medium.cnf mariadb-data/my.cnf
[root@centOS7 opt]# chown mariadb:mariadb mariadb-data/my.cnf
编辑文件/opt/mariadb-data/my.cnf, 增加自定义值, socket, port, user及最重要的设置: data目录和base目录. 最后的设置至少是这样的:
[client]
port= 3307
socket = /opt/mariadb-data/mariadb.sock
[mysqld]
datadir= /opt/mariadb-data
basedir= /opt/mariadb
port= 3307
socket = /opt/mariadb-data/mariadb.sock
user= mariadb
从support-files文件中拷贝init.d脚本到对应的位置:
[root@centOS7 opt]# cp mariadb/support-files/mysql.server /etc/init.d/mariadb
[root@centOS7 opt]# chmod +x /etc/init.d/mariadb
编辑/etc/init.d/mariadb,使用 mariadb替换 mysql设置项, 如下所示:
- # Provides: mysql
+ # Provides: mariadb
- basedir=
+ basedir=/opt/mariadb
- datadir=
+ datadir=/opt/mariadb-data
- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"
你需要告诉mariadb读取唯一的cnf文件. 在$bindir/mysqld_safe之后加上--defaults-file=/opt/mariadb-data/my.cnf. 最后参数设置应该是这样的:
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
显式指定 my.cnf作为传入参数,来运行 mysql_install_db:
[root@centOS7 opt]# cd mariadb
[root@centOS7 mariadb]# scripts/mysql_install_db --defaults-file=/opt/mariadb-data/my.cnf
现在你可以这样启动MariaDB:
[root@centOS7 opt]# /etc/init.d/mariadb start
Starting MySQL SUCCESS
把MariaDB启动设置为系统级别启动:
[root@centOS7 opt]# cd /etc/init.d
[root@centOS7 init.d]# chkconfig --add mariadb
[root@centOS7 init.d]# chkconfig --levels 3 mariadb on
最后,测试现在有两个数据库服务实例在运行:
[root@centOS7 ~]# mysql -e "SELECT VERSION()"
+-----------+
| VERSION() |
+-----------+
| 5.6.19 |
+-----------+
[root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION()" --socket=/opt/mariadb-data/mariadb.sock
+--------------------+
| VERSION() |
+--------------------+
|10.0.12-MariaDB-log |
+--------------------+
本来 MariaDB 的描绘初衷之一即是彻底兼容 MySQL,包含 API 和客户端协议,使之能轻松变成 MySQL 的代替品,所以由 MySQL 搬迁到MariaDB 基本上能够称之为“晋级”,就如同软件晋级版别一样。MariaDB 的技能文档上是这样写的:
若是是一样的根底版别(如
5.5),能够直接卸载 MySQL 然后装置
MariaDB,这样就能够用了。乃至不需求备份然后复原数据库。当然,稳妥起见,晋级前将一切的数据库都备份一下仍是十分有必要的,以防万一。
若是
MariaDB 的主版别高,在通过上面的卸载 MySQL 再装置 MariaDB *** 作之后,需求运用 mysql_upgrade
晋级一下。是的,乃至连命令行都与运用 MySQL 的时分一样。
一切原先的客户端和连接器(PHP、Perl、Python、Java
等)都不需求做任何改动就能正常作业,由于 MariaDB 与 MySQL 运用的是一样的客户端协议,而且客户端库文件也是二进制兼容的。
上面用 *
来匹配删去一切 mysql 数据包(包含因包依靠而删去的别的包,如 postfix)。由于直接装置的时分会呈现抵触,例如:
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 也由于依靠联系而被删去了,我没仔细看。
所以最佳不要用通配符 *,而是选择性删去几个首要的,
# yum remove
mysql mysql-server mysql-libs
可是这个我没有再测验,由于后边有非常好的办法。
C. 然后装置 MARIADB 及相应
PHP 拓展。
也是指定几个首要的装置包,剩余的让 yum 自个进行依靠联系查看。
# yum install
MariaDB-server MariaDB-client php-mysql
或许不装置 MariaDB-server
而改为具有同步多主群集特性(synchronous multi-master cluster)的 MariaDB Galera Cluster:
# yum install MariaDB-Galera-server MariaDB-client galera
这里对比搞笑的是,没注意前面把
php-mysql 给卸载了,成果运转数据库之后拜访 WordPress,成果遭受下面的过错:
Your PHP installation appears
to be missing the MySQL extension which is required by WordPress.
D.
完结,修补
不论版别是不是晋级了,履行一下数据库晋级指令总没有害处:
# mysql_upgrade -p
看看数据库版别是不是晋级了:
# mysql -u root -p -e 'show global variables like
"version"'
Enter password:
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| version | 5.5.31-MariaDB |
+---------------+----------------+
将 MariaDB 参加随体系自发动列表,
# chkconfig --levels 345 mysql on
嗯,曾经
MySQL 的时分是 mysqld,现在是 mysql,就差了一个字母 d。
发动它,
# service mysql start
这个时分服务器上的网站大概现已能够正常作业了,拜访数据库没有疑问。
若是有必要,装置完 MariaDB 之后能够重新装置 postfix。若是发现
phpMyAdmin 提示无拜访权限了,那即是被卸载了,需求重新装置和装备 phpMyAdmin。
别的,由于之前进行了卸载 *** 作,所以本来的 MySQL
和 phpMyAdmin 的装备文件都被清除了,也需求重新装备。特别是 MySQL 的装备文件 /etc/my.cnf,由于 MariaDB
尽管创建了一个my.cnf.d 文件夹来存储自个的装备文件,可是它会首要加载 my.cnf,且本来 MySQL 的装备的 [mysqld]
那一节的内容仍是有用的。
3. 较好的晋级办法
仍是在上面介绍的体系装备下,先增加 MariaDB 装置源,然后直接履行体系晋级,
# yum
update --skip-broken
MariaDB 有关装置包会被装置,不需求的 MySQL
包将被卸载,而且晋级之后不需求对体系进行修补了。看看输出的前面一部分:
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
MariaDB-Galera-server i686 5.5.29-1 mariadb 19 M
replacing mysql.i686 5.5.21-1.el6.remi
replacing
mysql-server.i686 5.5.21-1.el6.remi
MariaDB-server i686 5.5.31-1 mariadb
32 M
replacing mysql-server.i686 5.5.21-1.el6.remi
MariaDB-shared i686 5.5.31-1 mariadb 1.0 M
replacing
mysql-libs.i686 5.5.21-1.el6.remi
kernel i686 2.6.32-358.11.1.el6
updates 24 M
libjpeg-turbo i686 1.2.1-1.el6 base 176 k
replacing
libjpeg.i686 6b-46.el6
Updating:
.........
到这里才感觉到 MariaDB
的描绘思维那个无缝代替 MySQL 不是噱头,而是实实在在的技能。所以我也就不急着给 VPS 晋级到 MariaDB 了,横竖过不了多久 CentOS
就会选用 MariaDB,到时分再自然而然地搬迁吧。转载
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)