以下教程为Mariadb为例
MariaDB
MariaDB简介
2008年1月16日,MySQL AB 宣布它已经同意被Sun微系统集团以大约10亿美元的价格收购。该项收购已于2008年2月26日完成。而这也意味着,MySQL日后可能会走向完全的商用;为了继续保持在GNU GPL下开源,MariaDB孕育而出,并且MariaDB的首席开发者:Monty(Ulf Michael Widenius),正式MySQL AB的创世成员。
MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持。MariaDB是以Monty的小女儿Maria命名的,就像MySQL是以他另一个女儿My命名的一样。
MariaDB VS MySQL
MariaDB和MySQL区别,其实不是很大,尤其是MySQL5.x和MariaDB,目前MariaDB和MySQL主要区别:
· 许可协议:MariaDB使用的是GPL协议,而MySQL使用的是GPL和Commercial License(商用协议)。MariaDB比MySQL更加开源。
· SQL引擎:MariaDB相比MySQL,除了提供标准的MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE和MERGE引擎外,在MariaDB源码与二进制包中还提供下列存储引擎:Aria、XtraDB (与InnoDB对等替换)、FederatedX (与Federated对等替换)、Cassandra等SQL存储引擎。
· 速度快:据MariaDB称,同等配置条件下,MariaDB检录会比MySQL快
教程说明
网上Linux编译安装MariaDB的方法其实很多,我为什么要写这篇文章呢?主要原因:
冗余严重:现在都已经MariaDB 10.11了,早就没有最开始提供的my.cnf
文件,各大教程还在cp /usr/local/mysql /etc/my.cnf
。
编译说明
编译安装,灵活性很高,但难度也很大;如果小白用户尝试,建议多阅读几遍嗷。
首先,SSH连接我们的服务器
加入我们的服务器安装目录为 /app/mariadb 为了防止后续用到多实例服务器,再次创建三级目录作为单实例目录
mkdir -p /app/mariadb/
为此我们后续要初始化数据库, 存放日志文件等
需要准备好data、log目录
mkdir /app/mariadb/{data,log}
在上述目录中下载Mairadb源码包
需要选择服务器周边的地址,否则无法下载
[root@localhost ~]wget https://mirrors.xtom.com.hk/mariadb//mariadb-10.10.1/source/mariadb-10.10.1.tar.gz [root@localhost ~]ls mariadb-10.10.1.tar.gz [root@localhost ~]tar -zxvf mariadb-10.10.1.tar.gz [root@localhost ~]cd mariadb-10.10.1
接下来安装编译环境,准备编译源码
dnf -y install gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl-devel pcre pcre-devel ncurses-devel cmake
编译命令
cmake . -DCMAKE_INSTALL_PREFIX=/app/mariadb/ \ -DMYSQL_DATADIR=/app/mariadb/data \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_LIBWRAP=0 \ -DMYSQL_UNIX_ADDR=/app/mariadb/mariadb.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
编译完成,并且没有问题,我们继续直接安装到目录即可:
make install
安装好后,到/app/mariadb
文件夹下,即可看到我们的MariaDB:
初始化和配置
接下来,我们需要初始化MariaDB
1. 设置用户
创建mariadb用户并且禁止登录服务器:
useradd mariadb -s/sbin/nologin
将我们的mariadb目录权限转移给mariadb用户
chown -R mariadb:mariadb /app/mariadb
2. 初始化脚本
使用MariaDB自带的脚本,对MariaDB进行初始化(当前在MariaDB安装目录内,即:/app/mariadb
内):
scripts/mysql_install_db --user=mariadb --datadir=/app/mariadb/data
3. 设置参数
vim /app/mariadb/my.cnf #填入如下内容,具体参数可根据自己需要进行修改 [mariadb] [server] [mysqld] port=3306 datadir=/app/mariadb/data socket=/app/mariadb/mariadb.sock log-error=/app/mariadb/log/mariadb.log pid-file=/app/mariadb/mariadb.pid character-set-server = utf8mb4 innodb_large_prefix = on lower_case_table_names = 1
Cent OS 6
最关键的一步,需要启动服务啊,这里有脚本
cd /app/mariadb cp mariadb/support-files/mysql.server ./ vim mysql.server #补充45行以及46行 basedir=/app/mariadb datadir=/app/mariadb/data #并在后面紧跟两个参数 ownsocket=/app/mariadb/mariadb.sock ownconfig=/app/mariadb/my.cnf #加入以后跳转到263行左右,添加上述两个参数 # if $bindir/mysqladmin ping >/dev/null 2>&1; then 替换为下行 if $bindir/mysqladmin --defaults-file="$ownconfig" --socket="$ownsocket" ping >/dev/null 2>&1; then #跳转到312行左右,再次添加上述两个参数 # $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mariadbd_pid_file_path" "$@" & $bindir/mysqld_safe --defaults-file="$ownconfig" --socket="$ownsocket" --datadir="$datadir" --pid-file="$mariadbd_pid_file_path" "$@" &
启动、停止脚本就准备好了
cp mysql.server /etc/init.d/mariadb chkconfig mariadb on service mariadb start
Cent OS 7+
vim /etc/systemd/system/mariadb.service #内容 [Unit] Description=MariaDB 3306 Server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=simple User=mariadb Group=mariadb PIDFile=/app/mariadb/mariadb.pid ExecStart=/app/mariadb/bin/mariadbd-safe --defaults-file=/app/mariadb/my.cnf --datadir=/app/mariadb/data ExecStop=/bin/kill -9 $MAINPID Restart=always RestartSec=5 StartLimitInterval=0 [Install] WantedBy=multi-user.target
保存以后尝试启动即可
systemctl daemon-reload systemctl enable --now mariadb
还要添加MariaDB安装目录下的bin
目录到环境变量内,如:
vim /etc/profile #添加如下 export MARIADB_HOME=/app/mariadb export PATH=$MARIADB_HOME/bin:$PATH #然后重启使环境变量生效 source /etc/profile
至此都安装完毕,可以使用命令行验证连接了