本文首发于我的个人网站: https://hewanyue.com/
本文作者: Hechao
本文链接: https://hewanyue.com/blog/b124800c.html
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:
1、数据和表定义文件(.frm)是二进制兼容的
2、所有客户端API、协议和结构都是完全一致的
3、所有文件名、二进制、路径、端口等都是一致的
4、所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
5、mysql-client包在MariaDB服务器中也能够正常运行
6、共享的客户端库与MySQL也是二进制兼容的
也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。(以上摘自百度百科)
作为目前比较热门的开源数据库软件,一般常见有三种安装方式:yum或rpm包安装、二进制安装以及源码包安装,包安装过于简单,也很难符合一般企业定制需要,故不做叙述,本文详细讲述后两种安装方式。
二进制安装
1.先创建mysql用户及mysql组,并制定家目录为/data/mysql
groupadd -r -g 306 mysql #指定属组gid为306
useradd -r -g 306 -u 306 -d /data/mysql mysql #指定属主uid为306,家目录为/data/mysql
2.准备数据目录(mysq用户家目录),并修正权限
mkdir /data/mysql;chown mysql:mysql /data/mysql
3.去官网下载mariadb 二进制tar包(链接是CentOS7X86_64的10.4.8稳定版)
http://ftp.igh.cnrs.fr/pub/mariadb//mariadb-10.4.8/bintar-linux-systemd-x86_64/mariadb-10.4.8-linux-systemd-x86_64.tar.gz
4.解压tar包指/usr/local目录下,递归改属主为root、属组为mysql,并在/usr/local目录下创建一个名为mysql的软链接指向解压好的mariadb目录
tar xzf mariadb-10.4.8-linux-systemd-x86_64.tar.gz -c /usr/local
cd /usr/local
ln -sv mariadb-10.4.8-linux-systemd-x86_64 mysql
chown -R root:mysql /usr/local/mysql/
5.创建配置文件,并修改
mkdir /etc/mysql/
cp /etc/my.cnf /etc/mysql/my.cnf
sed -ri '/datadir=\//s@(.*=).*@\1\/data\/mysql@' /etc/mysql/my.cnf #修改配置文件,指定数据库储存路径
sed -ri '/datadir/a\innodb_file_per-table=on\nskip_name_resolve=on' /etc/mysql/my.cnf #设置每个表独立文件 和 禁用主机名解析
6.创建数据库文件
/usr/local/scripts/mysql_install_db --datadir=/data/mysql --user=mysql
7.创建服务脚本并启动服务
cp /usr/local/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
service mysqld start
8.增加PATH环境变量路径,并生效。
echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
9.运行安全初始化脚本,设置root口令、禁用匿名登陆、禁用远程主机登陆、删除test数据库,并立即生效(根据提示操作)。
ln -s /var/lib/mysql/mysql.sock /tmp
/usr/local/mysql/bin/mysql_secure_installation
至此,二进制安装mariadb数据库就完成了~
源码编译安装
1.先创建mysql用户及mysql组,并制定家目录为/data/mysql
groupadd -r -g 306 mysql #指定属组gid为306
useradd -r -g 306 -u 306 -d /data/mysql mysql #指定属主uid为306,家目录为/data/mysql
2.准备数据目录(mysq用户家目录),并修正权限
mkdir /data/mysql;chown mysql:mysql /data/mysql
3.去官网下载mariadb 源码tar包(链接是CentOS7X86_64的10.4.8稳定版)
http://ftp.igh.cnrs.fr/pub/mariadb//mariadb-10.4.8/source/mariadb-10.4.8.tar.gz
4.解压源码包,并进入源码包目录
tar xvf mariadb-10.4.8.tar.gz
cd mariadb-10.4.8/l
5.CMAKE编译源码包
需要的依赖包有cmake openssldevel ncurses-devel bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ gnutls-devel libxml2-devel libevent-devel libaio-devel ,一口气yum装上。
yum install cmake openssldevel ncurses-devel bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ gnutls-devel libxml2-devel libevent-devel libaio-devel
然后编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/data/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
6.安装
make -j 4 && make install
7.创建配置文件,并修改
mkdir /etc/mysql/
cp /etc/my.cnf /etc/mysql/my.cnf
sed -ri '/datadir=\//s@(.*=).*@\1\/data\/mysql@' /etc/mysql/my.cnf #修改配置文件,指定数据库储存路径
sed -ri '/datadir/a\innodb_file_per-table=on\nskip_name_resolve=on' /etc/mysql/my.cnf #设置每个表独立文件 和 禁用主机名解析
8.创建数据库文件
chown -R root:mysql /data/apps/mysql/
/usr/local/scripts/mysql_install_db --datadir=/data/mysql --user=mysql
9.创建服务脚本并启动服务
cp /data/apps/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
service mysqld start
10.增加PATH环境变量路径,并生效。
echo 'PATH=/data/apps/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
11.运行安全初始化脚本,设置root口令、禁用匿名登陆、禁用远程主机登陆、删除test数据库,并立即生效(根据提示操作)。
/data/apps/mysql/bin/mysql_secure_installation
报错:Can’t connect to local MySQL server through socket ‘/data/mysql/mysql.sock’ (2)
用ll看了下/data/mysql/mysql.sock确实不存在,而我记得我配置文件/etc/mysql/my.cnf中定义的sosck是在 下
那就把/var/lib/mysql/mysql.sock文件创建一个软链接至/data/mysql/目录
/ln -s /var/lib/mysql/mysql.sock /data/mysql/
再次尝试安全初始化脚本。
/data/apps/mysql/bin/mysql_secure_installation
果然成功了。
至此,源码编译安装mariadb数据库就完成了~