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
centos(或者其余发行版)都在本身的官方源内包含了相应的版本能够直接经过本身的包管理器安装linux
#centos 7 yum install mariadb-server -y #centos 6 yum install mysql-server -y
一般状况下发行版内置库的maraidb的版本都比较老。为了照顾用户渴望使用新版本而又想方便管理,mariadb官方提供了一个新版本的更新源。用户能够根据提示去配置本身的更新源去使用新版的mariadb,官方连接以下
https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.2c++
示例:这里以centos7为例。
在 /etc/yum.repos.d/下建立maraidb.reposql
vim /etc/yum.repos.d/mariadb.repo
在文件内写入以下字段数据库
# MariaDB 10.2 CentOS repository list - created 2018-06-05 07:06 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
保存后清除yum缓存,并从新构建缓存vim
yum clean all yum makecache
等待缓存构建完成后就能够经过yum直接安装管理新版的mariadb了。centos
#查看mariadb的版本信息 yum info mariadb-server #安装新版mariadb,默认优先安装新版 yum install mariadb-server -y
关闭selinux ,清除iptables规则缓存
setenforce 0 iptables -F iptables -X
在官方下载页https://downloads.mariadb.org/mariadb/10.2.15/#
下找到以下包(这里是64位包)下载到本地
安全
建立用户和组bash
useradd -r -d /data/mysqldb -s /sbin/nologin mysql
建立目录
mkdir -pv /data/mysqldb chown mysql:mysql /data/mysqldb chmod 770 /data/mysqldb
解压压缩包并指定目录
tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
建立软链接方便往后升级,修改文件权限
cd /usr/local ln -s mariadb-10.2.15-linux-x86_64/ mysql chown -R root:root mysql/
配置环境变量
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh #重读环境信息,使变量生效 . /etc/profile.d/mysql.sh
准备配置文件而且修改成合适的参数
cd /usr/local/mysql cp support-files/my-huge.cnf /etc/my.cnf #修改配置文件 vim /etc/my.cnf [mysqld] datadir=/data/mysqldb 加此行
初始化数据库
cd /usr/local/mysql scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
准备启动脚本并启动服务
cd /usr/local/mysql cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start
作安全初始化
mysql_secure_installation
配置完成后登录数据库验证
mysql -u用户 -p密码
安装开发环境工具包
yum groupinstall "Development Tools" -y
安装须要的其余包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel
建立目录和用户
mkdir /data useradd -r –s /bin/false -m –d /data/mysqldb/ mysql #ps: # /bin/false是最严格的禁止login选项,一切服务都不能用,而/sbin/nologin只是不容许系统login,可使用其余ftp等服务
获源码包,官方连接https://downloads.mariadb.org/mariadb/10.2.15/#
#参考文档mysql,真心吐槽mariadb何时也来个正式的文档
https://dev.mysql.com/doc/
解压源码包
tar xvf mariadb-10.2.12.tar.gz
进入目录并指定编译参数
cd mariadb-10.2.15 #mariadb使用的cmake进行编辑安装 cmake . \ -DCMAKE_INSTALL_PREFIX=/app/mysql \ -DMYSQL_DATADIR=/data/mysqldb/ \ -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=/app/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci #安装 make &&make install
参数详解
cmake . \ #安装目录,各人按喜爱设置 -DCMAKE_INSTALL_PREFIX=/app/mysql \ #数据库目录,各人按喜爱设置 -DMYSQL_DATADIR=/data/mysqldb/ \ #数据库配置文件目录 -DSYSCONFDIR=/etc \ #指定运行用户 -DMYSQL_USER=mysql \ #WITH_xxx_STORAGE_ENGINE将xxx存储引擎静态编译到服务器中 -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 \ #是否使用readline捆绑在发行版中的库。MySQL 5.6.5中删除了这个选项,由于readline它再也不被捆绑。 #这里能够再也不指定 -DWITH_READLINE=1 \ #SSL的支持类型 #ssl_type 能够是如下值之一: #yes:使用系统SSL库(若是存在),不然使用与发行版捆绑的库。 #bundled:使用捆绑在发行版中的SSL库。这是默认设置。 #system:使用系统SSL库。 -DWITH_SSL=system \ #某些功能要求服务器与压缩库支持来构建,如 COMPRESS()与 UNCOMPRESS()功能,并在客户端/服务器协议的压缩。该 WITH_ZLIB指示的源zlib支持: #bundled:使用zlib与发行版捆绑在一块儿的库。这是默认设置。 #system:使用系统 zlib库。 -DWITH_ZLIB=system \ #是否包含libwrap(TCP封装)支持 -DWITH_LIBWRAP=0 \ #该选项控制LOCALMySQL客户端库的编译默认 功能。所以,没有明确安排的客户端会LOCAL根据ENABLED_LOCAL_INFILEMySQL构建时指定的设置禁用或启用功能 。 -DENABLED_LOCAL_INFILE=1 \ #服务器侦听套接字链接的Unix套接字文件路径。这必须是绝对路径名称。默认是/tmp/mysql.sock。 #该值能够在服务器启动时使用该--socket选项进行设置 。 -DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \ #服务器字符集。默认状况下,MySQL使用 latin1(cp1252西欧)字符集。 #charset_name能够是一种 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。容许的字符集在cmake/character_sets.cmake文件中被列为 值CHARSETS_AVAILABLE。 #该值能够在服务器启动时使用该--character_set_server选项进行设置 。 -DDEFAULT_CHARSET=utf8 \ #服务器默认排序字符集。默认状况下,MySQL使用 latin1_swedish_ci。使用该 SHOW COLLATION语句来肯定每一个字符集可用的排序规则。 #该值能够在服务器启动时使用该--collation_server选项进行设置 。 -DDEFAULT_COLLATION=utf8_general_ci
准备环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh
生成数据库信息
cd /app/mysql/ scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql
生成并修改配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf vim /etc/my.cnf #指定数据目录 [mysqld] datadir=/data/mysqldb
修改启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld #修改 vim /etc/init.d/mysqld basedir=/app/mysql datadir=/data/mysqldb
启动服务
修改/app/mysql权限
chown mysql:root /app/mysql
添加服务并启动
chkconfig --add mysqld service mysqld start
为了省事就直接yum安装了,其实不论如何安装基本步骤都类似
yum install mariadb-server -y
关闭selinux 清空防火墙数据
getenforce 0 iptables -F iptables -X
创建目录并修改权限
mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv chown -R mysql.mysql /mysqldb/
建立各自的数据库信息
mysql_install_db --datadir=/mysqldb/3306/data --user=mysql mysql_install_db --datadir=/mysqldb/3307/data --user=mysql mysql_install_db --datadir=/mysqldb/3308/data --user=mysq
因为是yum安装的数据库,因此配置文件已经生成,这里仅须要略做修改便可
修改3306的配置文件
cp /etc/my.cnf /mysqldb/3306/etc/ #修改如下信息 vim /mysqldb/3306/etc/my.cnf [mysqld] port=3306 datadir=/mysqldb/3306/data socket=/mysqldb/3306/socket/mysql.sock [mysqld_safe] log-error=/mysqldb/3306/log/mariadb.log pid-file=/mysqldb/3306/pid/mariadb.pid #!includedir /etc/my.cnf.d
将3306实例的配置文件分别复制给3307和3308并修改
cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf vim /mysqldb/3308/etc/my.cnf vim /mysqldb/3307/etc/my.cnf
编写启动脚本并拷贝到对应路径
示例脚本
#!/bin/bash port=3306 mysql_user="root" mysql_pwd="" cmd_path="/usr/bin" mysql_basedir="/mysqldb" mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "MySQL is running...\n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esac
拷贝到对应目录
cp mysqld /mysqldb/3306/ cp mysqld /mysqldb/3307/ cp mysqld /mysqldb/3308/
修改权限
chmod 700 /mysqldb/3308/mysqld chmod 700 /mysqldb/3307/mysqld chmod 700 /mysqldb/3306/mysqld
修改对应的信息
vim /mysqldb/3306/mysqld vim /mysqldb/3307/mysqld vim /mysqldb/3308/mysqld
启动服务
/mysqldb/3308/mysqld start /mysqldb/3307/mysqld start /mysqldb/3306/mysqld start
链接数据库
mysql -S /mysqldb/3308/socket/mysql.sock mysql -S /mysqldb/3307/socket/mysql.sock mysql -S /mysqldb/3306/socket/mysql.sock
验证是否以不一样端口登录
#在mariadb内输入 show variables like '%port%';