
以上指令的意思就是給root使用者設定密碼成admin(這是初始化root密碼為空的情況),值得注意的是 多執行個體一定要指定mysql的sock檔案,mysqladmin -uroot -padmin password adminn123 -S /mysql_multi_case/3306/mysql.sock這種情況就是給root使用者更改密碼,其實這些指令不用去記,我們初始化兩個ok的界面,系統會告訴我們。
首先我們要清楚什麼是多執行個體?所謂多執行個體就是用多個配置檔案來啟動多個不同端口的程序,以不同的端口的形式為外提供服務。
明白了多執行個體 我們下面的操作和配置就一目了然了
首先我們要安裝一套基礎的應用程式,也就是說單執行個體這個流程請參考https://www.cnblogs.com/qiuhom-1874/p/9751195.html
1.關閉單執行個體服務和開機啟動
/etc/init.d/mysqld stop
chkconfig mysqld off
2.建立好多執行個體的目錄結構
mkdir -p /mysql_multi_case/{3306..3308}/data
3.分别在各個執行個體目錄下寫配置檔案和啟動腳本,
以下是3306裡面的my.cnf配置
[client]
port = 3306
socket = /mysql_multi_case/3306/mysql.sock
[mysqld]
port = 3306
socket = /mysql_multi_case/3306/mysql.sock
basedir = /application/mysql
datadir = /mysql_multi_case/3306/data
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
thread_stack = 192k
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
pid-file = /mysql_multi_case/3306/mysqld.pid
log-bin = /mysql_multi_case/3306/mysqld-bin
relay-log = /mysql_multi_case/3306/relay-bin
relay-log-info-file = /mysql_multi_case/3306/relay-log.info
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db = mysql
server-id = 1
innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:128M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 4M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allowed_packet = 2M
[mysqld_safe]
log-error = /mysql_multi_case/3306/mysql_lee3306.err
pid-file = /mysql_multi_case/3306/mysqld.pid
說明:這裡說一下配置檔案需要注意的是裡面的端口資訊必須是每個執行個體的端口是唯一的不能重複。啟動腳本都是一樣的,隻是啟動的端口資訊不同,密碼和使用者看自己的喜好配置
以下是3306裡面的mysql啟動腳本
#!/bin/bash
#
#
#
#init
port=3306
mysql_user="root"
mysql_pwd="admin"
CmdPath="/application/mysql/bin"
mysql_sock="/mysql_multi_case/${port}/mysql.sock"
#startup function
function_start_mysql(){
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/mysql_multi_case/${port}/my.cnf 2>&1 >/dev/null &
else
printf "MySQL is running ... \n"
exit
fi
}
#stop function
function_stop_mysql(){
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped ... \n"
exit
else
printf "Stopping MySQL ... \n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /mysql_multi_case/${port}/mysql.sock shutdown
fi
}
#restart function
function_restart_mysql(){
printf "Restarting MySQL ... \n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: /mysql_multi_case/${port}/mysql {start|stop|restart} \n"
esac
說明:以上腳本最核心的就是兩個指令,第一個就是mysqld_safe --defaults-file指定預設配置檔案來啟動資料庫,第二個指令就是mysqladmin 指定使用者名和密碼 同時指定mysql.sock檔案 shutdown 來關閉mysql對應的執行個體,restart 的思想就是先調用stop函數,在調用start函數。3307和3308的啟動腳本和以上一樣的,唯一的差別是端口不同。
4.寫好了配置檔案和啟動腳本後,接下來是對目錄結構授權,以及給腳本加可執行權限
chown -R mysql:mysql /mysql_multi_case ####更改整個目錄屬組屬主
find /mysql_multi_case/ -type f -name 'mysql'|xargs chmod +x ####對所有執行個體的啟動腳本增加可執行權限
5.初始化資料庫
cd /application/mysql/scripts
./mysql_install_db --basedir=/application/mysql/ --datadir=/mysql_multi_case/3306/data --user=mysql
說明:資料庫的初始化就是執行我們單執行個體程式的scripts目錄裡的mysql_install_db腳本,指定basedir 和datadir 還有使用者,來初始化資料庫,執行以上初始化腳本後 如果傳回
Installing MySQL system tables...
OK
Filling help tables...
OK
說明:傳回兩個OK 那麼就表示資料檔案已經初始化完成,其實初始化的作用就是導入基本的資料庫表格檔案呀,系統表呀等,我們可以進到我們初始化指定的data目錄裡看,多了許多檔案。
6.啟動每個多執行個體服務
/mysql_multi_case/3306/mysql start
/mysql_multi_case/3307/mysql start
/mysql_multi_case/3308/mysql start
說明:啟動服務就是調用我們之前寫啟動腳本。
檢查服務是否啟動起來
ss -lnt|egrep "3306|3307|3308"
說明:如果能夠檢查到3306、3307、3308這些端口 那麼表示服務已經正常運作。
接下來是我們給資料庫設定登入密碼,預設情況root是空密碼
mysqladmin -uroot password admin -S /mysql_multi_case/3306/mysql.sock
mysqladmin -uroot password admin -S /mysql_multi_case/3307/mysql.sock
mysqladmin -uroot password admin -S /mysql_multi_case/3308/mysql.sock
說明:本人是測試環境所有用的是弱密碼,正式環境不建議。以上指令的意思就是給root使用者設定密碼成admin(這是初始化root密碼為空的情況),值得注意的是 多執行個體一定要指定mysql的sock檔案,mysqladmin -uroot -padmin password adminn123 -S /mysql_multi_case/3306/mysql.sock這種情況就是給root使用者更改密碼,其實這些指令不用去記,我們初始化兩個ok的界面,系統會告訴我們。
6.設定開機啟動
echo "/mysql_multi_case/3306/mysql start" >>/etc/rc.local
echo "/mysql_multi_case/3307/mysql start" >>/etc/rc.local
echo "/mysql_multi_case/3308/mysql start" >>/etc/rc.local
7.登入mysql
7.1本地登入
mysql -uroot -padmin -S /mysql_multi_case/3306/mysql.sock
7.2遠端登入
mysql -uroot -padmin -h 192.168.11.107 -P 11319 -S /mysql_multi_case/3306/mysql.sock
說明:多執行個體的登入和單執行個體不同,多執行個體需要指定不同的mysql.sock檔案來登入對應的mysql執行個體,本地登入不需要指定主機和端口,遠端登入需要指定主機位址和端口,注意指定端口是-P(大寫) -p(小寫)是指定密碼字元串 -S是指定mysql.sock檔案。
關于遠端使用者授權請參考https://www.cnblogs.com/qiuhom-1874/p/9741166.html
作者:Linux-1874
出處:https://www.cnblogs.com/qiuhom-1874/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.