基于二进制安装的mariadb实现多实例

基于二进制安装的mariadb实现多实例

1、mariadb版本:10.2.23

2、二进制安装mariadb的shell脚本

    #!/bin/bash
    id mysql &>/dev/null
    if [ `echo $?` -ne 0 ];then
        userdel -r mysql &>/dev/null
        useradd -r -u 336 -s /sbin/nologin -d /data/mysql mysql &>/dev/null
    else
        useradd -r -u 336 -s /sbin/nologin -d /data/mysql mysql &>/dev/null
    fi
    rpm -q libaio &>/dev/null
    [ `echo $?` -ne 0 ] && yum -y install libaio
    rpm -q expect &>/dev/null
    [ `echo $?` -ne 0 ] && yum -y install expect
    if [ -e mariadb-10.2.23-linux-x86_64.tar.gz ];then
        #此文件可能会造成影响,所以先清空
        > /etc/my.cnf
        tar xf mariadb-10.2.23-linux-x86_64.tar.gz -C /usr/local/
        cd  /usr/local/
        ln -s mariadb-10.2.23-linux-x86_64/ mysql
        chown -R root.root /usr/local/mysql/
        echo ‘PATH=/usr/local/mysql/bin:$PATH‘ >/etc/profile.d/mysql.sh
        mkdir /data/mysql -p
        chown mysql.mysql /data/mysql/
        cd /usr/local/mysql
        ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
        mkdir -p /etc/mysql
        cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
        #禁止主机名解析,建议使用
        sed -ri ‘/^\[mysqld\]/askip_name_resolve = on‘ /etc/mysql/my.cnf
        sed -ri ‘/^\[mysqld\]/adatadir=\/data\/mysql‘ /etc/mysql/my.cnf
        cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
        chkconfig --add mysqld
        service mysqld start
        expect <<EOF
            spawn mysql_secure_installation
            expect {
            "Enter current password for root" { send "\n";exp_continue }
            "Set root password" { send "\n";exp_continue }
            "New password" { send "123456\n";exp_continue }
            "Re-enter new password" { send "123456\n";exp_continue }
            "Remove anonymous users" { send "y\n";exp_continue }
            "Disallow root login remotely" { send "y\n";exp_continue }
            "Remove test database and access to it" { send "y\n";exp_continue }
            "Reload privilege tables now" { send "y\n" }
            }
    #expect "]#" { send "exit\n" }
    expect eof
    EOF
    mysqladmin -uroot -p123456 ping &>/dev/null
    [ `echo $?` -eq 0 ] && echo ‘mysql is running !‘ || echo ‘mysql is stopped‘
else
    echo -e "mariadb-10.2.23-linux-x86_64.tar.gz is not exist"
    exit
fi

3、实现多示例

1、创建多实例对应的目录结构

    mkdir -p /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
    chown -R mysql.mysql /mysql/

2、创建多实例的数据库文件

    /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3306/data/ --user=mysql
    /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3307/data/ --user=mysql
    /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3308/data/ --user=mysql

3、创建对应配置文件

    cp /etc/mysql/my.cnf /mysql/3306/etc/
    vim /mysql/3306/etc/my.cnf
        [mysqld]
        port=3306 加一行
        datadir=/mysql/3306/data
        socket=/mysql/3306/socket/mysql.sock
        [mysqld_safe]
        log-error=/mysql/3306/log/mariadb.log
        pid-file=/mysql/3306/pid/mariadb.pid
    #3307和3308同步修改
        cp /mysql/3306/etc/my.cnf  /mysql/3307/etc/my.cnf
        /mysql/3307/etc/my.cnf 修改
        cp /mysql/3306/etc/my.cnf  /mysql/3308/etc/my.cnf
        /mysql/3308/etc/my.cnf 修改   

4、准备各实例的启动脚本并添加执行权限

    vi /mysql/{3306,3307,3308}/bin/mysqld
    cat /mysql/3306/bin/mysqld
        #!/bin/bash
        port=3306
        mysql_user="root"
        mysql_pwd="123456"
        #cmd_path="/mysql/3306/bin"
        cmd_path="/usr/local/mariadb-10.2.23-linux-x86_64/bin"
        mysql_basedir="/mysql"
        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
    #添加执行权限
    chmod +x /mysql/{3306,3307,3308}/bin/mysqld

5、启动服务并做安全加固(如果不做安全加固,则stop时的脚本有问题,密码不正确)

    /mysql/{3306,3307,3308}/bin/mysqld start
    #安全加固
    /usr/local/mysql/bin/mysql_secure_installation -S /mysql/{3306,3307,3308}/socket/mysql.sock (输入的密码与启动脚本一致)

6、测试连接

    mysql -uroot -p123456 -S /mysql/{3306,3307,3308}/socket/mysql.sock

原文地址:https://blog.51cto.com/13560168/2386760

时间: 2024-08-08 21:18:20

基于二进制安装的mariadb实现多实例的相关文章

mysql二进制安装,升级,多实例部署

目标 理解线上部署考虑的因素 学会编译安装以及二进制安装mysql 学会升级mysql 学会多实例部署mysql数据库 学会合理部署mysql线上库 考虑因素: 版本选择,5.1,5.5还是5.6? 分支选择,官方社区版?percona server?mariadb? 推荐官方版,简单易上手 安装方式,包安装?二进制包安装?源码安装? 线上推荐二进制包安装 路径配置,参数配置(尽量模板化,标准化) 一个实例多个库,or多个实例单个库? 二进制安装mysql 下载软件安装包 解压放到指定目录(比如

mysql5.7 基于二进制编译多实例安装

mysql5.7 基于二进制编译多实例安装 cd /usr/local/src/wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gztar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql创建

基于二进制程序安装mariadb

环境:教室,默认lftp的ip地址:172.16.0.1 基于二进制程序必须安装在/usr/local目录下,并且解压后的目录必须叫mysql lftp 172.16.0.1获取到Mariadb-5.5.36安装包 get到当地目录 展开程序: [[email protected] yum.repos.d]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local cd到该目录下 [[email protected] mariadb-5.5

二进制安装mariadb的奇妙经历

二进制安装mariadb的奇妙经历 1. MariaDB介绍 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL.基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎.虽然MariaDB被视为MySQL数据库的替代品,但它在扩展功能.存储引擎以及一些新的功能改进方面都强过MySQL.而且从MySQL迁移到MariaDB也是非常简单的. 详情点击mariadb官方站点 2. 二进制安装mariadb

实验:基于YUM安装的多实例

实验:基于YUM安装的多实例 1.安装mariadb yum install mariadb 2.创建多实例对应的目录结构 mkdir /mysql/{3306,3307,3308}/{data,,socket,log,bin,pid} -pv chown -R mysql.mysql /mysql 3.创建多实例的数据库文件 mysql_install_db --datadir=/mysql/3306/data/ --user=mysql mysql_install_db --datadir=

MariaDB二进制安装及基本管理

本文旨在复习MariaDB二进制安装以及基本管理 基础知识 1.MariaDB是MySQL原作者新作,开源社区维护,功能特性相较MySQL至少持平: 2.采用新引擎XtraDB替代MySQL的InnoDB,较早版本5.1上的MySQL默认存储引擎是MyISAM: 3.Xtradb在多核CPU上面的性能和伸缩性要更好:对于内存的分配和使用也要更好:也解除了InnoDB的很多限制:提供了比InnoDB更多的配置和性能监控参数. 4.数据库备份常有冷备.温备.热备,M有ISAM是不支持热备的,应该被淘

基于二进制通用格式安装mysql-5.5.52

基于二进制通用格式安装mysql-5.5.52 环境介绍: Linux主机:centos6.8 mysql二进制格式包:mysql-5.5.52-linux2.6-x86_64.tar.gz 1.解压包到特定目录 [[email protected] ~]# tar xf mysql-5.5.52-linux2.6-x86_64.tar.gz -C /usr/local/ 2.创建软链接 [[email protected] ~]# ln -sv /usr/local/mysql-5.5.52-

二进制安装MariaDB

1.展开程序 #tar xf mariadb-5.5.32-linux-x86_64.tar.gz -C /usr/local/ 2.进入解压后的文件夹 # cd /usr/local/mariadb-5.5.32-linux-x86_64/ 3.创建数据存放目录 #mkdir -pv /mydata/data //一般来说数据存放目录应放在lvm中以便于扩展大小和数据的快照恢复,这里为了演示和方便起见,直接建立普通目录. 4.创建安全登陆的用户和组 #groupadd -r mysql #us

MySQL安装:MariaDB二进制包方式安装

MySQL那是相当流行的关系型数据库有之一,随着MySQL被Oracle收购后开源的前途未卜,gooogle, 非死不可等都开始转入mysql开源社区维护的另一个开源mysql分支MariaDB上去了,Maria是mysql创始人Michael Widenius的二女儿的名字,MariaDB完全兼容MySQL, 使用Percona维护的XtraDB(代号Aria)来代替InnoDB引擎,比InnoDB有很多优化等,另外对并行复制(Parallel Replication).多源复制(Muti-S