当前位置:Gxlcms > 数据库问题 > 基于源码编译安装Mariadb实现多实例

基于源码编译安装Mariadb实现多实例

时间:2021-07-01 10:21:17 帮助过:30人阅读

准备环境:

CentOS7.6
mariadb-10.2.23.tar.gz源码包
多实例目录结构:
技术图片

编译安装

安装开发工具

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

准备用户和数据目录

useradd –r –s /sbin/nologin –d /data/mysql/ mysql
技术图片

  1. <code>mkdir /data/mysql
  2. chown mysql.mysql /data/mysql
  3. tar xvf mariadb-10.2.18.tar.gz </code>

技术图片

编译安装

  1. <code>cd mariadb-10.2.23/
  2. cmake . \
  3. -DCMAKE_INSTALL_PREFIX=/app/mysql \ 指定安装目录
  4. -DMYSQL_DATADIR=/data/mysql/ \ 指定mysql数据目录
  5. -DSYSCONFDIR=/etc/mysql \ 指定配置文件的目录
  6. -DMYSQL_USER=mysql \ 制动用户
  7. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  8. -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 \ 指定socket文件
  9. -DDEFAULT_CHARSET=utf8 \ 指定字符集类型
  10. -DDEFAULT_COLLATION=utf8_general_ci </code>

make && make install

提示:如果出错,执行rm -f CMakeCache.txt

安装

创建多实例的目录结构

mkdir mysql/{9527,9528,9529}/{etc,bin,socket,data,log,pid} -pv
技术图片

将所有者和所属则设置为mysql

chown -R mysql.mysql /opt/mysql/
技术图片

生成数据库文件

  1. <code>cd /app/mysql
  2. ./scripts/mysql_install_db --user=mysql --datadir=/opt/mysql/9527/data/
  3. ./scripts/mysql_install_db --user=mysql --datadir=/opt/mysql/9528/data/
  4. ./scripts/mysql_install_db --user=mysql --datadir=/opt/mysql/9529/data/
  5. 将生成的数据库文件存放到指定的位置</code>

创建配置文件

  1. <code>cp /etc/my.cnf /opt/mysql/9527/etc/
  2. cp /etc/my.cnf /opt/mysql/9528/etc/
  3. cp /etc/my.cnf /opt/mysql/9529/etc/</code>

编辑配置文件

  1. <code>[mysqld]
  2. port=9527 指定端口号
  3. datadir=/opt/mysql/9527/data 指定本端口号的数据库文件
  4. socket=/opt/mysql/9527/socket/mysql.sock 指定本端口号的socket套接字
  5. #Disabling symbolic-links is recommended to prevent assorted security risks
  6. symbolic-links=0
  7. #Settings user and group are ignored when systemd is used.
  8. #If you need to run mysqld under a different user or group,
  9. #customize your systemd unit file for mariadb according to the
  10. #instructions in http://fedoraproject.org/wiki/Systemd
  11. [mysqld_safe]
  12. log-error=/opt/mysql/9527/log/mariadb.log 将日志文件存放到指定目录
  13. pid-file=/opt/mysql/9527/pid/mariadb.pid 将pid文件存放到指定目录
  14. #include all files from the config directory
  15. #!includedir /etc/my.cnf.d 原本是没有注释的,现在加上注释,因为他包含的是/etc/my.cnf.d目录下的文件,我们不需要</code>

将三个实例只要稍微修改即可

创建脚本

  1. <code>#!/bin/bash
  2. #chkconfig: 345 80 2
  3. port=9527 端口号
  4. mysql_user="root" 指定数据库用户
  5. mysql_pwd="" 指定数据库的密码
  6. cmd_path="/app/mysql/bin" 指定命令路径
  7. mysql_basedir="/opt/mysql" 指定数据库基本目录
  8. mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" 指定本端口启动的socket文件
  9. function_start_mysql() 启动函数
  10. {
  11. if [ ! -e "$mysql_sock" ];then 检查socket文件
  12. printf "Starting MySQL...\n"
  13. ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & mysql启动服务用的是mysqld_safe命令
  14. else
  15. printf "MySQL is running...\n"
  16. exit
  17. fi
  18. }
  19. function_stop_mysql()
  20. {
  21. if [ ! -e "$mysql_sock" ];then
  22. printf "MySQL is stopped...\n"
  23. exit
  24. else
  25. printf "Stoping MySQL...\n"
  26. ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
  27. fi
  28. }
  29. function_restart_mysql()
  30. {
  31. printf "Restarting MySQL...\n"
  32. function_stop_mysql
  33. sleep 2
  34. function_start_mysql
  35. }
  36. case $1 in
  37. start)
  38. function_start_mysql
  39. ;;
  40. stop)
  41. function_stop_mysql
  42. ;;
  43. restart)
  44. function_restart_mysql
  45. ;;
  46. *)
  47. printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
  48. esac</code>

启动服务

  1. <code>/opt/mysql/9527/bin/mysqld start 可以考虑定义为别名
  2. echo ‘PATH=/app/mysql/bin:$PATH‘ > /etc/profile.d/mysql.sh 添加PATH路径
  3. . /etc/profile.d/mysql.sh 生效PATH
  4. mysql -uroot -P9527 -S /opt/mysql/9527/socket/mysql.sock 进入mysql数据库,需要指定socket路径</code>

完成

基于源码编译安装Mariadb实现多实例

标签:socket   centos   scripts   har   c11   mysql启动   app   libaio   down   

人气教程排行