Centos下安裝多個mysql數(shù)據(jù)庫的配置實例詳解
在實際的開發(fā)和運維場景中,有時我們需要在同一臺服務(wù)器上運行多個MySQL數(shù)據(jù)庫實例。本文將詳細介紹如何在CentOS系統(tǒng)中安裝并配置多個MySQL數(shù)據(jù)庫實例。
1. 環(huán)境準備
操作系統(tǒng):CentOS 7.x
MySQL版本:5.7.x
2. 安裝MySQL
首先,確保你的系統(tǒng)已經(jīng)安裝了MySQL。如果沒有安裝,可以使用以下命令進行安裝:
sudo yum update -y sudo yum install -y mysql-server
安裝完成后,啟動MySQL服務(wù)并設(shè)置開機自啟:
sudo systemctl start mysqld sudo systemctl enable mysqld
3. 創(chuàng)建多個MySQL實例
3.1 創(chuàng)建目錄結(jié)構(gòu)
為了管理方便,我們?yōu)槊總€MySQL實例創(chuàng)建獨立的數(shù)據(jù)目錄和日志目錄。假設(shè)我們要創(chuàng)建兩個實例:??mysql1?? 和 ??mysql2??。
sudo mkdir -p /var/lib/mysql1 sudo mkdir -p /var/lib/mysql2 sudo chown -R mysql:mysql /var/lib/mysql1 sudo chown -R mysql:mysql /var/lib/mysql2
3.2 初始化數(shù)據(jù)目錄
使用??mysqld??命令初始化每個實例的數(shù)據(jù)目錄:
sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql1 sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql2
3.3 配置文件
為每個實例創(chuàng)建獨立的配置文件。例如,??/etc/my.cnf.d/mysql1.cnf?? 和 ??/etc/my.cnf.d/mysql2.cnf??。
mysql1.cnf [mysqld] datadir=/var/lib/mysql1 socket=/var/lib/mysql1/mysql.sock port=3306 server-id=1 mysql2.cnf [mysqld] datadir=/var/lib/mysql2 socket=/var/lib/mysql2/mysql.sock port=3307 server-id=2
3.4 創(chuàng)建系統(tǒng)服務(wù)文件
為每個實例創(chuàng)建獨立的systemd服務(wù)文件。例如,??/etc/systemd/system/mysqld@.service??。
[Unit] Description=MySQL Server Instance %i After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysql%i.cnf --datadir=/var/lib/mysql%i Restart=on-failure PrivateTmp=true [Install] WantedBy=multi-user.target
3.5 重新加載systemd配置
sudo systemctl daemon-reload
3.6 啟動并啟用服務(wù)
sudo systemctl start mysqld@1 sudo systemctl start mysqld@2 sudo systemctl enable mysqld@1 sudo systemctl enable mysqld@2
4. 驗證安裝
可以通過以下命令驗證兩個實例是否正常運行:
sudo systemctl status mysqld@1 sudo systemctl status mysqld@2
還可以通過MySQL客戶端連接到這兩個實例:
mysql -u root -p -S /var/lib/mysql1/mysql.sock mysql -u root -p -S /var/lib/mysql2/mysql.sock
5. 注意事項
- 確保每個實例的端口不沖突。
- 確保每個實例的配置文件路徑正確。
- 如果需要遠程訪問,確保防火墻規(guī)則允許相應(yīng)的端口。
6.方法補充
這對于測試、開發(fā)或生產(chǎn)環(huán)境中的多租戶場景非常有用```在 CentOS 中安裝和配置多個 MySQL 數(shù)據(jù)庫實例是一個相對復(fù)雜的過程,但通過合理地規(guī)劃配置文件和端口,可以實現(xiàn)這一目標。以下是一個具體的步驟和示例代碼,用于在 CentOS 上安裝兩個 MySQL 實例(例如:??mysqld1??? 和 ??mysqld2??)。
步驟 1: 安裝 MySQL
首先,確保你的系統(tǒng)已經(jīng)安裝了 MySQL。如果沒有安裝,可以通過以下命令安裝:
sudo yum install -y mysql-server
步驟 2: 創(chuàng)建數(shù)據(jù)目錄
為每個 MySQL 實例創(chuàng)建獨立的數(shù)據(jù)目錄,并設(shè)置正確的權(quán)限:
sudo mkdir -p /var/lib/mysql1 /var/lib/mysql2 sudo chown -R mysql:mysql /var/lib/mysql1 /var/lib/mysql2
步驟 3: 配置 MySQL 實例
為每個 MySQL 實例創(chuàng)建一個獨立的配置文件。假設(shè)我們將使用 ??/etc/my.cnf.d/mysqld1.cnf?? 和 ??/etc/my.cnf.d/mysqld2.cnf??。
mysqld1.cnf [mysqld1] datadir=/var/lib/mysql1 socket=/var/lib/mysql1/mysql.sock port=3306 pid-file=/var/run/mysqld/mysqld1.pid mysqld2.cnf [mysqld2] datadir=/var/lib/mysql2 socket=/var/lib/mysql2/mysql.sock port=3307 pid-file=/var/run/mysqld/mysqld2.pid
步驟 4: 初始化數(shù)據(jù)庫
初始化每個 MySQL 實例的數(shù)據(jù)目錄:
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql1 sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql2
步驟 5: 創(chuàng)建系統(tǒng)服務(wù)文件
為每個 MySQL 實例創(chuàng)建一個系統(tǒng)服務(wù)文件。假設(shè)我們將使用 ??/etc/systemd/system/mysqld1.service?? 和 ??/etc/systemd/system/mysqld2.service??。
mysqld1.service [Unit] Description=MySQL Server Instance 1 After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld1.cnf ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -SIGTERM $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target mysqld2.service [Unit] Description=MySQL Server Instance 2 After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld2.cnf ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -SIGTERM $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
步驟 6: 啟動并啟用服務(wù)
啟動并啟用這兩個 MySQL 實例的服務(wù):
sudo systemctl daemon-reload sudo systemctl start mysqld1 sudo systemctl start mysqld2 sudo systemctl enable mysqld1 sudo systemctl enable mysqld2
步驟 7: 驗證安裝
驗證兩個 MySQL 實例是否正常運行:
sudo systemctl status mysqld1 sudo systemctl status mysqld2
你可以通過以下命令連接到每個實例:
mysql -u root -p -S /var/lib/mysql1/mysql.sock mysql -u root -p -S /var/lib/mysql2/mysql.sock
或者通過端口連接:
mysql -u root -p -h 127.0.0.1 -P 3306 mysql -u root -p -h 127.0.0.1 -P 3307
以上步驟和示例代碼展示了如何在 CentOS 上安裝和配置多個 MySQL 實例。希望這些信息對你有幫助!如果有任何問題,請隨時提問。
在 CentOS 中安裝和配置多個 MySQL 數(shù)據(jù)庫實例可以為不同的應(yīng)用程序或項目提供獨立的數(shù)據(jù)庫環(huán)境。以下是一個詳細的步驟指南,包括必要的命令和配置文件修改,以幫助你在 CentOS 上設(shè)置多個 MySQL 實例。
1. 安裝 MySQL
首先,確保你的系統(tǒng)上已經(jīng)安裝了 MySQL。如果沒有,可以通過以下命令安裝:
sudo yum update -y sudo yum install -y mysql-server
2. 創(chuàng)建多個 MySQL 配置文件
MySQL 使用配置文件來定義每個實例的行為。我們將為每個實例創(chuàng)建一個單獨的配置文件。假設(shè)我們要創(chuàng)建兩個實例:??mysql1?? 和 ??mysql2??。
創(chuàng)建配置目錄
sudo mkdir /etc/mysql sudo mkdir /etc/mysql/mysql1 sudo mkdir /etc/mysql/mysql2
創(chuàng)建配置文件
編輯 ??/etc/mysql/mysql1/my.cnf?? 文件:
[mysqld] datadir=/var/lib/mysql1 socket=/var/lib/mysql1/mysql.sock port=3306 pid-file=/var/run/mysqld/mysqld1.pid log-error=/var/log/mysql1/error.log
編輯 ??/etc/mysql/mysql2/my.cnf?? 文件:
[mysqld] datadir=/var/lib/mysql2 socket=/var/lib/mysql2/mysql.sock port=3307 pid-file=/var/run/mysqld/mysqld2.pid log-error=/var/log/mysql2/error.log
3. 創(chuàng)建數(shù)據(jù)目錄和日志目錄
為每個實例創(chuàng)建數(shù)據(jù)目錄和日志目錄,并設(shè)置適當?shù)臋?quán)限:
sudo mkdir -p /var/lib/mysql1 sudo mkdir -p /var/lib/mysql2 sudo mkdir -p /var/log/mysql1 sudo mkdir -p /var/log/mysql2 sudo chown -R mysql:mysql /var/lib/mysql1 sudo chown -R mysql:mysql /var/lib/mysql2 sudo chown -R mysql:mysql /var/log/mysql1 sudo chown -R mysql:mysql /var/log/mysql2
4. 初始化數(shù)據(jù)庫
使用 ??mysql_install_db?? 工具初始化每個實例的數(shù)據(jù)目錄。請注意,從 MySQL 5.7 開始,推薦使用 ??mysqld --initialize?? 命令:
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql1 sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql2
5. 創(chuàng)建啟動腳本
為每個實例創(chuàng)建一個啟動腳本。這些腳本將用于啟動、停止和管理每個實例。
創(chuàng)建 ??/etc/init.d/mysql1?? 腳本
sudo nano /etc/init.d/mysql1
內(nèi)容如下:
#!/bin/bash
# chkconfig: 345 64 36
# description: MySQL Server 1
. /etc/init.d/functions
MYSQLD=/usr/sbin/mysqld
MYSQLD_OPTS="--defaults-file=/etc/mysql/mysql1/my.cnf"
PIDFILE=/var/run/mysqld/mysqld1.pid
start() {
echo -n "Starting MySQL 1: "
daemon $MYSQLD $MYSQLD_OPTS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql1
return $RETVAL
}
stop() {
echo -n "Shutting down MySQL 1: "
killproc -p $PIDFILE $MYSQLD
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mysql1
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?創(chuàng)建 ??/etc/init.d/mysql2?? 腳本
sudo nano /etc/init.d/mysql2
內(nèi)容如下:
#!/bin/bash
# chkconfig: 345 65 35
# description: MySQL Server 2
. /etc/init.d/functions
MYSQLD=/usr/sbin/mysqld
MYSQLD_OPTS="--defaults-file=/etc/mysql/mysql2/my.cnf"
PIDFILE=/var/run/mysqld/mysqld2.pid
start() {
echo -n "Starting MySQL 2: "
daemon $MYSQLD $MYSQLD_OPTS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql2
return $RETVAL
}
stop() {
echo -n "Shutting down MySQL 2: "
killproc -p $PIDFILE $MYSQLD
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mysql2
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?6. 設(shè)置啟動腳本權(quán)限
使啟動腳本可執(zhí)行:
sudo chmod +x /etc/init.d/mysql1 sudo chmod +x /etc/init.d/mysql2
7. 注冊服務(wù)
將服務(wù)注冊到系統(tǒng)啟動項:
sudo chkconfig --add mysql1 sudo chkconfig --add mysql2 sudo chkconfig --level 345 mysql1 on sudo chkconfig --level 345 mysql2 on
8. 啟動 MySQL 實例
啟動兩個 MySQL 實例:
sudo service mysql1 start sudo service mysql2 start
9. 驗證實例
驗證每個實例是否正常運行:
sudo netstat -tuln | grep 3306 sudo netstat -tuln | grep 3307
10. 連接到實例
你可以使用 ??mysql?? 客戶端連接到每個實例:
mysql -u root -p -S /var/lib/mysql1/mysql.sock mysql -u root -p -S /var/lib/mysql2/mysql.sock
通過以上步驟,你可以在 CentOS 上成功配置和運行多個 MySQL 實例。每個實例都有自己的配置文件、數(shù)據(jù)目錄和日志目錄,互不干擾。
以上就是Centos下安裝多個mysql數(shù)據(jù)庫的配置實例詳解的詳細內(nèi)容,更多關(guān)于Centos安裝多個mysql的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL 數(shù)據(jù)庫如何解決高并發(fā)問題
MySQL Group Replication(MGR)集群部署實現(xiàn)自動故障切換問題記錄
MySQL本地版本升級超詳細教程(從5.5.20升到8.0.21)
mysql調(diào)優(yōu)的幾種方式小結(jié)

