在一次實際部署過程中,碰到了服務器已經部署了一個mysql服務. 再部署新的mysql時,特別注意不能與另一個mysql互相影響.記錄一次部署中存在的問題和解決方法.
因為已存在mysql,新的mysql部署采用的是mysql.tar.gz解壓手動安裝,避免.rpm或者.deb等自動安裝方式覆蓋了已有mysql的配置或者數據.
已部署的mysql服務查看與新mysql的服務部署選擇
查看mysql配置文件的默認加載路徑 /etc/mysql/my.cnf或者 /etc/my.cnf是否被占用
1.已存在的mysql服務占用了默認的加載路徑
配置文件如果存在,查看里面配置的端口,如果與正在運行的mysql占用端口一致,則說明已存在的mysql已經占用了mysql的默認服務.
故新mysql不可以采用初始化后,將mysql解壓目錄下mysql.server服務文件放到/etc/init.d/mysqld/下,因為這樣部署的新mysql服務會默認加載已存在的配置路徑,無法運行.
因此,必須將mysql的服務,手動編寫腳本,指定加載配置文件的路徑,才能避免沖突.
以ubuntu為例:
//1.編寫服務文件 mysql_new.service,指定配置文件[Unit]
Description=mysql
After=[Service]
Type=forking
WorkingDirectory=/mysql
ExecStart=/mysql/bin/mysqld_safe --defaults-file=/mysql/etc/my.cnf &[Install]
WantedBy=multi-user.target//2.服務文件移到系統路徑,使得mysql_new作為服務名能被系統識別
mv mysql_new.service /etc/systemd/system/
//3.加載服務變動
systemctl daemon-reload
//4.服務開機自啟動設置
systemctl enable mysql_new.service
//啟動新mysql
service mysql_new start
注:mysql的默認加載路徑優先級,/etc/mysql/my.cnf > /etc/my.cnf.
2.已存在的mysql服務未占用默認的加載路徑
在初始化了數據庫后,復制mysql的解壓包內?support-files/mysql.server 到 /etc/init.d/mysqld/,
設置mysql自啟動: chkconfig --add mysqld 或者 systemctl enable mysqld
然后就可以啟動新的mysql了