mysqld_safe啟動多個mysql實例


1 名稱解釋

  mysqld: mysql的守護進程, 主要工作是存儲

  mysqld_safe: 一般用它來啟動mysqld。並且監視mysqld的健康狀態,在mysqld由於某種錯誤中斷后重新啟用它

  MySQL Utilities: 提供一組命令行工具用於維護和管理 MySQL 服務器

  mysqladmin:  客戶端管理工具

  Workbench: MySQL的圖形化管理工具

 

2 Mysqld啟動方式

  2.1 mysqld 直接啟動

  2.2 通過mysqld_safe 來啟動 mysqld

 

3 linux系統啟動Mysqld作為服務

  3.1 service mysql start (兼容centos6, 需要些腳本)

  3.2 systemctl start mysql (適用於systemd管理的liunx版本

  3.3 通過mysqld_multi 啟動多個實例 (啟動簡單, 但關閉服務比較麻煩)

 

本次是用 service mysql start + mysqld_safe 來啟動多個實例。

啟動腳本是mysql安裝程序自帶的(但需要做些修改)

優點:

  a 實例之間相互獨立;

  b 啟動或關閉簡單;

  c 按需啟動;

  d 所有實例公用一個mysql安裝程序(主要3點差異: datadir, pid_file,  socket);

  e 不會對之前的mysqld進程有任何影響

 

## 參數假定

假定mysql安裝程序位於: /usr/local/mysql

數據保存於: /usr/local/mysql/data

當前配置文件: /etc/my.cnf

當前service啟動腳本: /etc/rc.d/init.d/mysql

 

## 目標

  在3307端口新建另一個mysqld_safe啟動的mysqld進程

 

## 步驟

1 初始化配置文件

  cp  /etc/my.cnf   /etc/my3307.cnf

  修改:

    [mysqld]

      port = 3307

      datadir = /usr/local/mysql/data3307

      socket = /tmp/mysql3307.sock

2 初始化存儲目錄

  mkdir /usr/local/mysql/data3307

  mysqld --defaults-file=/etc/my3307.cnf --initilize (記下初始的root密碼)

3 初始化啟動腳本

  cp /etc/rc.d/init.d/mysql  /etc/rc.d/init.d/mysql7

  修改:

  3.1 在basedir= 上面一行增加

    port=3307

    conf_file=/etc/my3307.cnf

    socket=

  3.2 lock_file_path="$lockdir/mysql3307"

  3.3 parse_server_arguments函數: 增加 

    --socket=*)
    socket=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;

  3.4 啟動命令改為:

    $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --port="${port}" --socket="${socket}" $other_args >/dev/null &

 

## 測試

  service mysql7 start

  service mysql7 status

  ps aux | grep 'mysql' 可以看到多個mysqld_safe和mysqld進程

  service mysql7 stop

## 連接

  mysql -h127.0.0.1 (需帶上ip, 不然默認使用socket連接)

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM