啟動多個mysql實例


如果使用./support-files/mysql.server 文件啟動,則默認讀取/etc/my.cnf 配置文件,這種方式有時候啟動不了

會提示報錯 :The server quit without updating PID file

所以我們使用啟動命令mysqld_safe啟動,多個實例只是重復下面的過程,更換目錄和端口即可,當然也有一個mysql軟件啟動多個實例的方法。

解壓mysql二進制包

useradd -r -s /sbin/nologin mysql
tar
xvf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql
chown mysql.mysql -R /usr/local/mysql

初始化數據庫

該過程必須到安裝目錄以相對路徑去執行初始化命令。

yum -y install autoconf libaio libaio-devel
cd ./mysql && scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

創建配置文件

初始化完成后,默認會在 ./mysql/ 目錄下創建 my.cnf 的文件

-rw-r--r--  1 root  root     492 5月  19 12:55 my.cnf

清空該文件,寫入如下配置 vim ./my.cnf,可以根據自己需求修改配置
其中[client]區域是mysql客戶端的配置,二進制包默認讀取 /etc/my.cnf (在編譯時習慣指定該位置)

[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock

 
         

[mysql]
default_character_set = utf8

 
         

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /usr/local/mysql/data/mysql.sock
port = 3306
user = mysql
bind-address = 0.0.0.0
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default-storage-engine = INNODB
lower_case_table_names = 1
collation-server = utf8_general_ci
character-set-server = utf8
wait_timeout = 1200
interactive_timeout = 1200

 

啟動數據庫

為了啟動方便,創建一個簡單的啟動腳本,首先說明一點,mysql啟動時要在mysql目錄下啟動才會成功,否則會啟動失敗。

cat << 'EOF' > ./start.sh
#!/bin/bash mysql_dir=/usr/local/mysql cd $mysql_dir /bin/sh ${mysql_dir}/bin/mysqld_safe --defaults-file=$mysql_dir/my.cnf &>/dev/null &
EOF

補充命令

因為啟動多個mysql,所以我們指定了PID文件和套接字文件的位置,所以登錄時要指定套接字或者ip+端口方式登錄

mysql -S /usr/local/mysql/data/mysql.sock -uroot -p
mysql -h 127.0.0.1 -P 3306 -uroot -p

關閉數據庫,可以使用kill 直接將其殺死(守護進程和mysql進程都要殺死),但不推薦這種方式,建議使用mysqladmin命令

./bin/mysqladmin -S /usr/local/mysql/data/mysql.sock  -uroot -p shutdown

查看mysql狀態

./bin/mysqladmin -S /usr/local/mysql/data/mysql.sock  -uroot -p ping

 創建systenctl腳本

cat << 'EOF' > /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/start.sh
LimitNOFILE = 5000
[Install]
WantedBy=multi-user.target
EOF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM