CentOS 7 MySQL5.7 多例項(多埠)
阿新 • • 發佈:2020-08-14
本次多例項可以用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