MySQL多實例(一臺物理主機上運行多個數據庫服務)

一、多實例概述

1.1、什麼是多實例

  • 再一臺物理主機上運行多個數據庫服務

1.2、多實例優點

  • 節約運維成本
  • 提高硬件利用率

二、配置多實例

2.1、軟件環境

  1. 解壓軟件
[root@host58 ~]# rpm -q libaio
libaio-0.3.109-13.el7.x86_64

[root@host58 ~]# ls
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@host58 ~]# tar -zxf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

[root@host58 ~]# mv mysql-5.7.20-linux-glibc2.12-x86_64   /usr/local/mysql
[root@host58 ~]# ls /usr/local/mysql
  1. 修改PATH路徑
[root@host58 ~]# PATH=/usr/local/mysql/bin:$PATH

[root@host58 ~]# vim /etc/bashrc
export  PATH=/usr/local/mysql/bin:$PATH
[root@host58 ~]# source /etc/bashrc

2.2、配置文件

  • /etc/my.cnf
    • 每個實例要有獨立的數據庫目錄、端口
    • socket文件、pid文件、錯誤日誌文件
[root@host58 ~]#vim  /etc/my.cnf    //把舊的刪除或移走,重新創建一個空文件
[mysqld_multi]			//啓用多實例
mysqld=/usr/local/mysql/bin/mysqld_safe		//指定進程文件路徑
mysqladmin=/usr/local/mysql/bin/mysqladmin	//指定管理命令路徑	
user=root									//指定進程用戶

[mysqld1]					//實例進程名稱,1表示示例編號
datadir=/dir1				//數據庫目錄,需要手動創建
port=3307					//端口號
log-error=/dir1/mysqld1.error		//錯誤日誌
pid-file=/dir1/mysqld1.pid			//進程pid文件
socket=/dir1/mysqld1.sock			//指定scok文件的路徑和名稱

[mysqld2]
datadir=/dir2
port=3308
log-error=/dir2/mysqld2.error
pid-file=/dir2/mysqld2.pid
socket=/dir2/mysqld2.sock

2.3、管理多實例

  1. 先創建一個mysql用戶
[root@host58 ~]# useradd mysql
  1. 啓動MySQL數據庫1、2
    可以獲取到數據庫初始密碼
[root@host58 ~]# mysqld_multi start 1
root@localhost: pXPUu9ufMx,f
[root@host58 ~]# mysqld_multi start 2
root@localhost:K)UDhR8fqtwt
  1. 查看端口
[root@host58 ~]# netstat -utnlp | grep mysql
tcp6       0      0 :::3307                 :::*                    LISTEN      6576/mysqld         
tcp6       0      0 :::3308                 :::*                    LISTEN      6762/mysqld     
  1. 登錄數據庫1
[root@host58 ~]# mysql -uroot -p'pXPUu9ufMx,f' -S /dir1/mysqld1.sock

mysql> alter user  root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.04 sec)

mysql> show databases;
mysql> create database bbsdb;//創建庫
  1. 登錄數據庫2
[root@host58 ~]# mysql -uroot -p'K)UDhR8fqtwt' -S /dir2/mysqld2.sock

mysql> alter user  root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> create database gamedb;//創建庫
  1. 停止數據庫2
[root@host58 ~]# mysqld_multi  --user=root --password=123456 stop 2
[root@host58 ~]# netstat  -utnlp | grep  mysqld
tcp6       0      0 :::3307                 :::*                    LISTEN      6576/mysqld 

三、客戶端訪問

  1. 分別再實例1和實例2上做用戶授權
實例1
mysql> grant  all on  bbsdb.*  to  sql1@"%" identified by  "123456";

實例2
mysql> grant  all on  gamedb.*  to sql2@"%" identified by "123456";
  1. 客戶端登錄實例2
[root@client ~]# mysql -h192.168.4.58 -P3308 -usql2 -p123456

mysql> show databases;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章