MySQL多執行個體搭建

來源:互聯網
上載者:User

標籤:Mysql多執行個體安裝

Centos7上實現多執行個體安裝,就是一個服務上分別在3306、3307、3308多個連接埠上運行並且各用個的資料庫,相當於是三個不同的程式;

1 安裝程式包

        yum -y install mariadb-server

2 使用yum安裝啟動服務後預設會在/var/lib/mysql下產生資料庫

        systemctl start mariadb    ls /var/lib/mysql

3 /etc/my.cnf是預設的設定檔,當中定義了資料庫的路徑;sock的作用是用於本機通訊的

4 將三個執行個體的data,pid檔案,設定檔,log檔案,socket檔案分別存放在不同的檔案夾中,還要賦予許可權

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

5 分別產生資料庫檔案,basedir指定的是資料庫的安裝目錄

    mysql_install_db --datadir=/mysqldb/3306/data --basedir=/usr    mysql_install_db --datadir=/mysqldb/3307/data --basedir=/usr    mysql_install_db --datadir=/mysqldb/3308/data --basedir=/usr

額外:可以使用mysql -e ‘show variables like "basedir";‘查看資料庫的安裝目錄;
6 針對不同的三個執行個體也要準備三個不同的設定檔

    cp /etc/my.cnf /mysqldb/3306/etc    vim /mysqldb/3306/etc/my.cnf                         #將設定檔內容修改為以下格式        datadir=/mysqldb/3306/data                       #指定資料庫的存放位置        socket=/mysqldb/3306/socket/mysql.sock           #指定socket檔案存放位置        log-error=/mysqldb/3306/log/mariadb.log          #指定錯誤記錄檔的存放位置        pid-file=/mysqldb/3306/pid/mariadb.pid           #指定pid檔案的存放位置    #   !includedir /etc/my.cnf.d                        #注釋這一行調用功能

7 將修改好的設定檔分別複製到另外兩個執行個體的目錄並進行修改,要在3307和3308的設定檔中分別添加一行port=3307和port=3308,由於預設為3306所以不用寫

當時當多執行個體的時候就要在設定檔當中指定連接埠!!    cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/    cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/    vim /mysqldb/3307/etc/my.cnf        將前面定義路徑位置都改為3307即可    vim /mysqldb/3308/etc/my.cnf        將前面定義路徑位置都改為3308即可

8 準備服務指令碼

    已經有一個準備好的指令碼直接上傳,在其上修改即可,以下為指令碼內容,變數根據實際情況進行修改,指令碼名稱為mysqld;        以下有一個cmd_path變數之所以定義為/usr/bin是因為mysqld_safe檔案在/usr/bin下,以下內容根據實際情況變更即可;    #!/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/nul    l  &        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

9 將指令碼分別複製到/mysqld/3307下和/mysqld/3308下並且修改

    cp /mysqld/3306/mysqld ../3307    cp /mysqld/3306/mysqld ../3308將port變數分別修改為3307和3308並且添加可執行許可權    chmod +x /mysqld/3306/mysqld    chmod +x /mysqld/3307/mysqld    chmod +x /mysqld/3308/mysqld基於安全性考慮可以設定為700許可權,除了自己誰都改不了這個指令碼    chmod 700 /mysqld/3306/mysqld    chmod 700 /mysqld/3307/mysqld    chmod 700 /mysqld/3308/mysqld

10 上述工作完成後,分別運行下面的mysqld的指令碼啟動即可
11 分別串連不同的執行個體也就是串連不同的socket檔案查看是否可以串連成功

    mysql -S /mysqldb/3306/socket/mysql.sock    mysql -S /mysqldb/3307/socket/mysql.sock    mysql -S /mysqldb/3308/socket/mysql.sock    串連成功之後可查看當前串連的資料庫連接埠    show variables like ‘port‘;

12 指令碼當中定義了一行停止服務需要輸入口令,當沒有口令的時候直接斷行符號即可,啟動無需口令;
13 這種情況下安全性特別低,誰都可以串連到隨機的一個資料庫進行操作,所以咱們要添加密碼增加安全性,此項添加的密碼為mysql;

    mysqladmin -uroot -S /mysqldb/3306/socket/mysql.sock password ‘mysql‘    mysqladmin -uroot -S /mysqldb/3307/socket/mysql.sock password ‘mysql‘    mysqladmin -uroot -S /mysqldb/3308/socket/mysql.sock password ‘mysql‘    在這設定了密碼之後,不要忘了修改mysqld這個指令碼當中的mysql_pwd變數,後面記得跟上修改的密碼,這樣關閉資料庫的時候就無需輸入密碼了另一種修改密碼的方法:    1 mysql -uroot -S /mysqldb/3307/socket/mysql.sock password ‘mysql‘            #登入到資料庫中    2 update mysql.user set password=password("centos") where user=‘root‘;        #將所有名為root的使用者密碼都改為centos並且在表中加密    3 select user,password,host from mysql.user;                                  #查看修改後的表的內容刪除沒有用的帳號:      drop user ‘‘@‘localhost‘;      drop user ‘‘@‘centos7‘;      drop user ‘root‘@‘centos7‘;      drop user ‘root‘@‘::1‘;      flush privileges;                     #執行生效;刪除沒有用的資料庫:      drop database test;

MySQL多執行個體搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.