mariadb源码编译安装及多实例
准备文件源文件/app/mariadb-10.2.12.tar.gz
cd /app/
tar xf mariadb-10.2.12.tar.gz
cd mariadb-10.2.12
mkdir /mysqldb
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \ 主程序目录
-DMYSQL_DATADIR=/mysqldb/ \ 数据库目录
-DSYSCONFDIR=/etc \ 配置文件目录
-DMYSQL_USER=mysql \ 指定的所属用户
-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/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1
安装development tools,gnutls-devel,ncurses-devel, cmake,ibaio-devel,openssl-devel,libxml2-devel组件,减少报错
发生错误,需要删除文件夹,重新解压,再安装
make & make install
echo 'PATH=/app/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh 将脚本路径写入
/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3306/data --user=mysql 制作数据库,指定mysql的用户
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf 重新制作配置文件,以huge.cnf模板文件修改
vim /etc/my.cnf
datadir=/mysqldb/3306/data 在[mysqld]下面添加行,位置不要错
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chown -R mysql.mysql /mysqldb/3306/
chgrp -R mysql /app/mysql/
chmod 775 /app/mysql/ 重点!! 因为启动服务要在路径下创建sock为文件,如果没有权限会报错,启动失败
第二个实例安装:
/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3307/data --user=mysql 安装数据库
cp /etc/my.cnf /mysqldb/3307
vim /mysqldb/3307/my.cnf 制作配置文件
将所有的3306改为3307
[mysql_safe] 在文件最下面增加日志文件路径
log-error=/mysqldb/3307/mariadb.log
pid-file=/mysqldb/3307/mariadb.pid
vim /mysql/3307/mysqld 添加启动脚本,修改其中的路径项
#!/bin/bash rt=3307 mysql_user="root" mysql_pwd="" cmd_path="/app/mysql/bin" mysql_basedir="/mysqldb" mysql_sock="${mysql_basedir}/${port}/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n"
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/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 "Stopping MySQL..\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "Restarting MySQL...\n" if [ ! -e "$mysql_sock" ];then function_start_mysql exit fi 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
chmod 700 /mysqldb/3307/mysqld
/mysqldb/3307/mysqld start
失败/
原因是/mysqldb/3307所属组为root,mysql用户没有写权限
解决:chown -R mysql.mysql /mysqldb/
再启动成功
在不能启动的时候可以手动输入路径启动查看项目在哪一步出问题
/app/mysql/bin/mysqld_safe --defaults-file=/mysqldb/3307/my.cnf
第三个实例的安装:
/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3308/data --user=mysql 制作数据库文件
chown -R mysql.mysql /mysqldb/
cp /mysqldb/3307/{mysqld,my.cnf} /mysqldb/3308/
vim mysqld 修改端口号为3308
vim my.cnf 修改端口号为3308
/mysqldb/3308/mysqld start
在my.cnf里的client项里可以添加自己登陆的账号密码,可以免账户密码登陆
user=root
password=centos