CentOS下mysql多執行個體操作指南

來源:互聯網
上載者:User

標籤:mysql   主從   多執行個體管理   linux mysql   

Mysql工作中無處不在,無數次安裝,最佳化,一直沒有時間,整理進行歸檔,最近在做mysql的Dass服務,把最近遇到的問題,進行整理,梳理一份操作指南;供大家參考;

序言

Mysql多執行個體即一台伺服器上運行多個Mysql服務進程 ,開啟不同的服務連接埠,通過不同的socket 監聽不同的服務連接埠來提供各自的服務。

Mysql多例的好處:

  1、 有效利用伺服器資源:通過多執行個體地配置,可以將伺服器剩餘的資源充分利用起來。
  2、 資源互相搶佔問題:資源互相搶佔問題,當某個服務執行個體服務並發很高時或者開啟慢查詢時,會消耗更多的記憶體、CPU、磁碟IO資源,導致伺服器上的其他執行個體提供服務的品質下降。
  3、 節約資源。

部署多執行個體的兩種方式

  1. 使用多個設定檔啟動不同的進程來實現多執行個體,這種方式的優勢邏輯簡單,配置簡單,缺點是管理起來不太方便;
  2. 通過官方內建的mysqld_multi使用單獨的設定檔來實現多執行個體,這種方式定製每個執行個體的配置不太方面,優點是管理起來很方便,集中管理;

同一開發環境下安裝兩個資料庫,必須處理以下問題

  • 設定檔安裝路徑不能相同
  • 資料庫目錄不能相同
  • 啟動指令碼不能同名
  • 連接埠不能相同
  • socket檔案的產生路徑不能相同Mysql多執行個體操作指南

    具體詳細參考官網 (https://dev.mysql.com/doc/refman/5.7/en/installing.html)

  • mysql的安裝方法有多種,如二進位安裝、源碼編譯安裝、yum安裝;
  • yum安裝都是預設路徑,不利於後期維護,安裝相對簡單;
  • 源碼安裝編譯的過程比較長,若沒有對源碼進行修改且要求使用mysql較高版本;
  • 建議使用二進位安裝。本文以二進位安裝mysql,且使用mysqld_mutil進行mysql多執行個體管理。環境準備

centos7 x64 參考地址:https://dev.mysql.com/downloads/mysql/
mysql 5.7.22(壓縮版)

  • 下載mysql
cd /usr/local  wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
  • 解壓安裝
tar -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
初始化使用者組及使用者

建立一個mysql使用者組及使用者,且這個使用者是不可登入的
建立使用者組:groupadd mysql
建立不可登入使用者:useradd -g mysql -s /sbin/nologin -d /opt/mysql mysql
查看下建立後的使用者資訊:id msyql

 id mysqluid=501(mysql) gid=501(mysql) groups=501(mysql)
建立相關目錄
cd /  mkdir /data  cd /data  mkdir mysql  cd mysql   mkdir {mysql_3306,mysql_3307}  cd /data/mysql/mysql_3306  mkdir {data,log,tmp}  cd /data/mysql/mysql_3307  mkdir {data,log,tmp}
更改目錄許可權
chown -R mysql:mysql /data/mysql/  chown -R mysql:mysql /usr/local/mysql/  
添加環境變數
echo ‘export PATH=$PATH:/usr/local/mysql/bin‘ >>  /etc/profile  source /etc/profile   

檢查是否配置
cat /etc/profile

複製my.cnf檔案到etc目錄(mysql 5.722沒有my-default.cnf ,需要自動手動建立或者之前的地方進行copy)

  • 自己建立
    vim /etc/my.cnf
    修改my.cnf

    將以下內容,全部替換 /etc/my.cnf中的內容(以下配置,已整合mysql主從配置)

[client]port=3306socket=/tmp/mysql.sock[mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin log = /data/mysql/mysqld_multi.log [mysqld] user=mysql basedir = /usr/local/mysql sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld3306] mysqld=mysqld mysqladmin=mysqladmin datadir=/data/mysql/mysql_3306/data port=3306 server_id=3306 socket=/tmp/mysql_3306.sock log-output=file slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql_3306/log/slow.log log-error = /data/mysql/mysql_3306/log/error.log log-bin = /data/mysql/mysql_3306/log/mysql3306_binbinlog-ignore-db = mysql [mysqld3307] mysqld=mysqld mysqladmin=mysqladmindatadir=/data/mysql/mysql_3307/data port=3307 server_id=3307 socket=/tmp/mysql_3307.sock log-output=file slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql_3307/log/slow.log log-error = /data/mysql/mysql_3307/log/error.log log-bin = /data/mysql/mysql_3307/log/mysql3307_binreplicate-ignore-db=mysqlrelay-log = slave-relay-binrelay-log-index = slave-relay-bin.indexread_only
初始化資料庫

初始化各個執行個體:初始化完後會在日誌中產生密碼,記得儲存,初始化密碼用到

cd /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/##開啟各執行個體的SSL串連bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/

PS:
--basedir:mysql的安裝目錄
--datadir:資料庫的資料檔案目錄

查看資料庫是否初始化成功
cd /data/mysql/mysql_3306/data

設定開機檔案
cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
給予指令碼可執行許可權
chmod +x /etc/init.d/mysqld_multi
加入service服務管理
chkconfig --add mysqld_multi  
mysqld_multi進行多執行個體管理
  • 啟動全部執行個體:
    /usr/local/mysql/bin/mysqld_multi start  
  • 查看全部執行個體狀態:
    /usr/local/mysql/bin/mysqld_multi report  
  • 啟動單個執行個體:
    /usr/local/mysql/bin/mysqld_multi start 3306  
  • 停止單個執行個體:
    /usr/local/mysql/bin/mysqld_multi stop 3306  
  • 停止
    mysqld_multi stop 3306 --password=root#or 最好用這個mysqladmin -S /tmp/mysql_3306.sock -uroot -p shutdown
  • 查看單個執行個體狀態:
    /usr/local/mysql/bin/mysqld_multi report 3306  
  • 查看執行個體的監聽連接埠:
    ss -tulpn|grep mysqld

    修改密碼
    mysql -S /tmp/mysql_3306.sock -p
  • 輸入之前記錄的密碼,進入進行密碼設定
set password=password(‘123456‘);
  • 使修改生效;或者重啟服務
flush privileges;

應用路徑:/data/web/wordpressnginx 配置:/usr/local/openresty/nginx/conf/site-enable/help.conf

3307的就不寫了,你按照以上方法,進行操作;

設定遠端連線mysql:
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘password‘ WITH GRANT OPTION;FLUSH PRIVILEGES; 

其中,root 是使用者名稱,% 表示所有人都可以訪問,password是密碼,盡量不用使用root,安全很重要
如果你看到當前位置,你已經成功了,致敬在路上學習的小夥伴伴,與你一起知識總結;
如果感覺還不錯,就分享出去,後續給大家介紹,mysql主從操作構建;

mysql的經典工作操作指南;Percona Toolkit

https://www.percona.com/downloads/percona-toolkit/LATEST/

percona-xtrabackup

https://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/incremental_backups.html#

CentOS下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.