環境:html
centos7 + mysql5.7.26node
【1】查看依賴包mysql
rpm -qa|grep libaio #查看libaio 依賴包linux
若是沒出現上圖,則運行下面語句,安裝依賴包sql
yum -y install autoconf libaio bison ncurses-devel #若是沒有出現上圖,則安裝(通常centos7有自帶)數據庫
【2】查看默認數據庫(根據版本不一樣)vim
centos7默認會裝mariadb數據庫,6則是默認裝Mysql數據庫。centos
rpm -qa|grep mariadb #centos7socket
rpm -qa|grep mysql #centos6url
若是出現了上圖,則運行下列語句,卸載自帶的 mariadb。
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 #用這個方式以此刪除全部的,若有依賴報錯可能須要先刪除另一個
建議的刪除方式:
yum -y remove mariadb*
【3】系統方面的一些準備工做
systemctl stop firewalld #關閉防火牆
systemctl disable firewalld #禁止防火牆開機啓動
getenforce #查看selinux狀態
vim /etc/selinux/config #設置開機關閉selinux
【4】構造mysql用戶、羣組、目錄、權限
【4.1】構造用戶與羣組
groupadd mysql useradd -g mysql -s /sbin/nologin mysql #建立Mysql用戶,但不容許其遠程實際登錄到系統
【4.2】構造目錄
mkdir -p /data/mysql/{mysql_3306,mysql_3307} mkdir /data/mysql/mysql_3306/{data,log,tmp} mkdir /data/mysql/mysql_3307/{data,log,tmp}
【4.3】修改mysql相關目錄權限給mysql用戶
chown -R mysql:mysql /data chmod -R 755 /data
【5】複製解壓二進制文件到
【5.1】上傳到 /data/mysql 目錄
cd /data/mysql
而後上傳文件,或者wget下載文件。
結果以下圖
【5.2】解壓mysql二進制包,設置環境變量
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql_basedir #原名稱太長了,建個軟鏈接
echo "export PATH=${PATH}:/data/mysql/mysql_basedir/bin">>/etc/profile #設置環境變量
source /etc/profile
【6】配置my.cnf文件
cd /data/mysql
vim my.cnf
[client] port=3306 socket=/tmp/mysql.sock [mysqld_multi] mysqld = /data/mysql/mysql_basedir/bin/mysqld_safe mysqladmin = /data/mysql/mysql_basedir/bin/mysqladmin log = /data/mysql/mysqld_multi.log [mysqld] user=mysql basedir = /data/mysql/mysql_basedir sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld3306] 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 binlog_format = mixed log-bin = /data/mysql/mysql_3306/log/mysql3306_bin [mysqld3307] #下列4行參數,多實例中必須不一樣 datadir=/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 binlog_format = mixed log-bin = /data/mysql/mysql_3307/log/mysql3307_bin
ln -s /data/mysql/my.cnf /etc/my.cnf chown -R mysql:mysql /data chmod -R 755 /data chown mysql:mysql /etc/my.cnf chmod -R 755 /etc/my.cnf
【7】初始化多實例
#初始化多實例
mysqld --defaults-file=/data/mysql/my.cnf --initialize --basedir=/data/mysql/mysql_basedir --user=mysql --datadir=/data/mysql/mysql_3306/data
mysqld --defaults-file=/data/mysql/my.cnf --initialize --basedir=/data/mysql/mysql_basedir --user=mysql --datadir=/data/mysql/mysql_3307/data
#2個目錄均以下圖,就是成功了
【8】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 查看單個實例狀態:/usr/local/mysql/bin/mysqld_multi report 3306
中止所有實例:/usr/local/mysql/bin/mysqld_multi stop # 須要在my.cnf中,統一配置好 [client]而後把user=root 換行 password=123456 帳戶信息輸入進去。不然會出現登陸失敗
#檢查端口監聽
netstat -an|grep mysql
#啓動所有實例 [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi start [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running
#鏈接mysql
mysql -uroot -p -P3306 -S /tmp/mysql_3306.sock
mysql -uroot -p -P3307 -S /tmp/mysql_3307.sock
#關閉實例
mysqladmin -uroot -p -S /tmp/mysql_3306.sock -P3306 shutdown
mysqladmin -uroot -p -S /tmp/mysql_3307.sock -P3307 shutdown