mysql实现多实例

    > mariadb安装
    yum install mariadb-server

    > 创建相关目录,及设置权限
    mkdir /mysqldb; mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv
    chown -R mysql:mysql /mysqldb
    
    > 目录结构如下
    /mysqldb
    ├── 3306
    │   ├── data
    │   ├── etc
    │   ├── log
    │   ├── pid
    │   └── socket
    ├── 3307
    │   ├── data
    │   ├── etc
    │   ├── log
    │   ├── pid
    │   └── socket
    └── 3308
        ├── data
        ├── etc
        ├── log
        ├── pid
        └── socket

    > 初始化数据库
    systemctl start mariadb; show variables like 'basedir%'; #查看mariadb安装路径
    mysql_install_db --datadir=/mysqldb/3306/data --user=mysql --basedir=/usr/
    mysql_install_db --datadir=/mysqldb/3307/data --user=mysql --basedir=/usr/
    mysql_install_db --datadir=/mysqldb/3308/data --user=mysql --basedir=/usr/
    
    > 拷贝并修改配置文件
    cp /etc/my.cnf /mysqldb/3306/etc/
    cp /etc/my.cnf /mysqldb/3307/etc/
    cp /etc/my.cnf /mysqldb/3308/etc/
    
    vi /etc/my.cnf /mysqldb/3306/etc/my.cnf
    [mysqld]
    port=3306
    datadir=/mysqldb/3306/data
    socket=/mysqldb/3306/socket/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd

    [mysqld_safe]
    log-error=/mysqldb/3306/log/mariadb.log
    pid-file=/mysqldb/3306/pid/mariadb.pid

    #
    # include all files from the config directory
    #
    #!includedir /etc/my.cnf.d
    
    #其它2个实例的配置文件参考第1个实例的配置文件
    cp -a ./3306/etc/my.cnf ./3307/etc/my.cnf; cp -a ./3306/etc/my.cnf ./3308/etc/my.cnf
    
    > 准备启动脚本,设置权限
    cp mysqld /mysqldb/3306/; cp mysqld /mysqldb/3307/; cp mysqld /mysqldb/3308/
    chmod 700 /mysqldb/3306/mysqld; chmod 700 /mysqldb/3307/mysqld; chmod 700 /mysqldb/3308/mysqld
    

    #!/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


    > 启动单个实例,注意如mariadb服务已经启动,请先停止该服务
    systemctl stop mariadb
    /mysqldb/3306/mysqld start; /mysqldb/3307/mysqld start; /mysqldb/3308/mysqld start

    > 查看端口信息
    ss -nutl
    
    > 连接测试
    mysql -S /mysqldb/3308/socket/mysql.sock
    show variables like '%port%';

猜你喜欢

转载自www.cnblogs.com/ifelz/p/9139477.html