1. 程式人生 > 實用技巧 >CentOS 7 MySQL5.7 多例項(多埠)

CentOS 7 MySQL5.7 多例項(多埠)

本次多例項可以用TAR二進位制包配置,也可以用RPM安裝包,文件最後有官方文件。

我會盡量寫成自動指令碼,方便大家操作,只需要複製到LINUX 之後就可以自動操作完成。

準備工作

tar安裝包:預設已經下載好mysql 安裝包,名稱為:mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz,我的安裝包位置:/root 。我伺服器沒有網路,只能通過sftp上傳。

安裝位置:mysql程式安裝路徑為:/usr/local/mysql ,資料庫路徑為:/usr/local/mysql/data。路徑可以修改,只要批量把指令碼中的路徑替換即可。

MYSQL安裝

可參考文件CentOS 7 MySQL5.7 TAR包解壓 全自動化指令碼

#建立mysql使用者組
groupadd mysql
#建立一個使用者名稱為mysql的使用者並加入mysql使用者組
useradd -g mysql mysql
 #制定password 為123456 passwd mysql

#我安裝到/usr/local
tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 
mv mysql-5.7.21-linux-glibc2.12-x86_64   /usr/local/mysql
cd /usr/local

#更改所屬的組和使用者
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql
/ #資料庫路徑 mkdir data chown -R mysql:mysql datacp /etc/my.cnf /etc/my.cnf.back#寫入配置cat>> /etc/my.cnf<<EOF [mysql] # 設定mysql客戶端預設字符集 default-character-set=utf8 [mysqld] skip-name-resolve #設定3306埠 port = 3306 # 設定mysql的安裝目錄 basedir=/usr/local/mysql # 設定mysql資料庫的資料的存放目錄 datadir=/usr/local/mysql/data pid-file=/usr/local/mysql/data/mysql.pid # 允許最大連線數 max_connections
=200 # 服務端使用的字符集預設為8位元編碼的latin1字符集 character-set-server=utf8 # 建立新表時將使用的預設儲存引擎 default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M EOF#安裝和初始化 # 注data目錄中不能有檔案bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/#安裝服務 cp ./support-files/mysql.server /etc/init.d/mysqld chown 777 /etc/my.cnf chmod +x /etc/init.d/mysqld # 啟動服務 /etc/init.d/mysqld start #設定開機啟動 chkconfig --level 35 mysqld on chkconfig --list mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --list mysqld service mysqld status #登入mysql/usr/local/mysql/bin/mysql -uroot -p#到此mysql安裝完成

多例項配置

位置在:/data 路徑中,建立3個目錄分別為:3307 ,3308,3309。這三個例項的埠號也是 3307 ,3308,3309

#準備多個目錄
mkdir -p /data/330{7,8,9}/data

#建立配置檔案
cat>> /data/3307/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
pid-file=/data/3307/data/mysql.pid
log_error=/data/3307/data/mysql.log
socket=/data/3307/mysql.sock
log_bin=/data/3307/mysql-bin
user=mysql
port=3307
server_id=3307
EOF

#複製配置檔案
cp /data/3307/my.cnf /data/3308
cp /data/3307/my.cnf /data/3309

#修改地址
sed -i 's#3307#3308#g' /data/3308/my.cnf
sed -i 's#3307#3309#g' /data/3309/my.cnf

#初始化資料庫
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data  --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data  --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data  --basedir=/usr/local/mysql

#授權
chown -R mysql.mysql /data/*

cd /usr/lib/systemd/system/

at>>mysqld3307.service<<EOF

[Unit]
Description=MySQL3307 Service
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/3307/data/mysql.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --daemonize --pid-file=/data/3307/data/mysql.pid $MYSQLD_OPTS

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

EOF

#複製配置檔案 cp mysqld3307.service mysqld3308.service cp mysqld3307.service mysqld3309.service #修改地址 sed
-i 's#3307#3308#g' mysqld3308.service sed -i 's#3307#3309#g' mysqld3309.service #重新載入服務配置檔案 systemctl daemon-reload #啟動服務 systemctl start mysqld3307.service systemctl start mysqld3308.service systemctl start mysqld3309.service #開機啟動 systemctl enable mysqld3307.service systemctl enable mysqld3308.service systemctl enable mysqld3309.service 驗證多例項 netstat -lnp|grep 330 mysql -S /data/3307/mysql.sock -e "select @@server_id" mysql -S /data/3308/mysql.sock -e "select @@server_id" mysql -S /data/3309/mysql.sock -e "select @@server_id" netstat -lnp|grep 330 #檢視服務是否啟動 ps -ef | grep mysql #檢視MySQL程序 ps -axo cmd | grep mysql #檢視MySQL程序

官方上檔:https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html