在一台服務器上啟動多個mysql實例,分別用不同的端口號,因centos7版本安裝mysql5.7后不存在mysqld_multi 、mysqld_safe等命令,做踩坑總結
Mysql多實例實現的3種方式
1、基於多配置文件
通過使用多個配置文件來啟動不同的進程,以此來實現多實例。
優點:邏輯簡單,配置簡單
缺點:管理起來不方便
2、基於mysqld_multi
通過官方自帶的 mysqld_multi 工具,使用單獨配置文件來實現多實例
優點: 便於集中管理管理
缺點: 不方便針對每個實例配置進行定制
3、基於IM
使用 MySQL 實例管理器(MYSQLMANAGER),這個方法好像比較好不過也有點復雜
優點:便於集中管理
缺點:耦合度高。IM一掛,實例全掛
不方便針對每個實例配置進行定制
本文采用第一種基於多種配置文件方式
1 創建並初始化數據目錄(data為新建目錄,可在任意路徑創建)
1 mkdir -p /data/mysql/{3307,3308} 2 chown mysql:mysql /data/mysql/{3307,3308}
2 復制數據庫配置文件
1 cp /etc/my.cnf /data/mysql/3308.cnf 2 vim /data/mysql/3308.cnf
3 編輯3308.cnf文件內容
[mysqld] port=3308 datadir=/data/mysql/3308/ socket=/tmp/mysql3308.sock symbolic-links=0 [mysqld_safe] log-error=/data/mysql/3308.log pid-file=/usr/local/mysql/data/3308.pid [client] port=3308 socket=/tmp/mysql3308.sock
4 初始化數據庫
mysqld --defaults-file=/data/mysql/3308.cnf --initialize-insecure --user=mysql
5 重復第2、3、4步驟,創建3307端口號
6 啟動3308實例
mysqld --defaults-extra-file=/data/mysql/3308.cnf --datadir=/data/mysql/3308/ --user=mysql &
7 連接3308實例( 到這一步數據庫實例就創建成功並能夠登錄了 )
mysql -S /tmp/mysql3308.sock -P 3308
8 修改密碼
mysqladmin -uroot password '123456' -S /tmp/mysql3308.sock
9 用密碼登錄
mysql -u root -p123456 -S /tmp/mysql3308.sock
10 給賬戶授權,為了能用navicat等客戶端登錄
GRANT ALL ON *.* to root@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
補充操作
netstat -lnpt | grep -E "3306|3307|3308" 在第六步啟動后可查看相應端口號狀態 kill -9 pid --用來關閉某進程