溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL的多實例介紹及配置是怎樣的

發(fā)布時間:2021-09-28 13:46:01 來源:億速云 閱讀:198 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這篇文章將為大家詳細講解有關(guān)MySQL的多實例介紹及配置是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

1.什么是MySQL多實例

    簡單來說,MySQL多實例就是在一臺服務(wù)器上同時開啟多個不同服務(wù)端口,同時運行多個MySQL服務(wù)進程,這些服務(wù)進程通過不同的socket監(jiān)聽不同的服務(wù)器端口來提供服務(wù)。這些MySQL多實例共用一套MySQL安裝程序,使用不同的my.cnf(也可以相同)配置文件,啟動程序 (也可以相同)和數(shù)據(jù)文件。在提供服務(wù)時,多實例MySQL在邏輯上看起來是各自獨立的,它根據(jù)配置文件的對應(yīng)設(shè)定值,獲得服務(wù)器相應(yīng)數(shù)量的硬件資源。

    多實例的好處在于它能有效利用服務(wù)器的資源,節(jié)約服務(wù)器資源,弊端會存在資源的相互搶占的問題。當某個數(shù)據(jù)庫實例并發(fā)很高或有SQL慢查詢時,整個實例會消耗大量的系統(tǒng)CPU、磁盤I/O等資源,導(dǎo)致服務(wù)器上的其他數(shù)據(jù)庫實例提供服務(wù)的質(zhì)量一起下降。不同實例獲取的資源是相對獨立的,無法像虛擬化一樣完全隔離。

2.配置MySQL多實例

    MySQL的多實例配置可以是單一文件、單一啟動程序的部署方案,但是不推薦,風險太高了。這里部署的是多配置文件,多啟動的部署方案。在前面,我們已經(jīng)搭建了MySQL的服務(wù),也就是存在了一個默認的實例,端口為3306。在這里,我們多增加一個實例,端口為3307.

MySQL的多實例介紹及配置是怎樣的

    (1)創(chuàng)建多實例的數(shù)據(jù)文件目錄,目錄自己確定就行

mkdir -p /data/3307/data

    (2)創(chuàng)建MySQL多實例的配置文件,vim /data/3307/my.cnf,內(nèi)容如下

[client]
port	= 3307
socket	= /data/3307/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
user	= mysql
port	= 3307
socket	= /data/3307/mysql.sock
basedir	= /usr/local/mysql
datadir	= /data/3307/data
open_files_limit	= 1024
read-only
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
#default_table_type	= InnoDB
thread_stack	= 192K
#transaction_isolation	= READ-COMMITTED
tmp_table_size	= 2M
max_heap_table_size	= 2M
long_query_time	=1 
pid-file	= /data/3307/mysql.pid
relay-log	= /data/3307/relay-bin
relay-log-info-file = /data/3307/relay-log.info
binlog_cache_size	= 1M
max_binlog_cache_size	= 1M
max_binlog_size	= 2M
key_buffer_size	= 16M
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	= 3        #不同實例的server-id不一樣的,3306端口的server_id我設(shè)置為52了,這里不能是52

#innodb_additional_mem_pool_size	= 4M
innodb_buffer_pool_size	= 32M
innodb_data_file_path	 = ibdata1:128M:autoextend
innodb_file_io_threads	= 4
#innodb_threads_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

[mysql_safe]
log-error=/data/3307/mysql_pcm3307.err
pid-file=/data/3307/mysqld.pid

    (3)創(chuàng)建MySQL多實例的啟動文件,vim /data/3307/mysql ,內(nèi)容如下

#!/bin/bash

#init
port=3307
mysql_user="root"
mysql_pwd="pcm123456"
CmdPath="/usr/local/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"

#startup function
function_start_mysql(){
	if [ ! -e "$mysql_sock" ];then
		printf "Starting Mysql...\n"
		/bin/sh	${CmdPath}/mysqld_safe --defaults-file=/data/${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 "Stoping Mysql...\n"
		${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown    #停止命令
	fi
}

#restart function
function_restart_mysql(){
	printf "Restart 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:/data/${port}/mysql.sh {start|stop|restart}\n"
esac

    (4)配置MySQL多實例的文件權(quán)限

chown -R mysql:mysql /data/
find /data -name mysql.sh |xargs chmod 700    #修改權(quán)限為700,因為里面有數(shù)據(jù)庫的密碼,要求較高的安全性

MySQL的多實例介紹及配置是怎樣的

    (5)初始化MySQL多實例的數(shù)據(jù)庫文件

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql

    查看3307目錄下data目錄,可以看到多出了不少的數(shù)據(jù)文件

MySQL的多實例介紹及配置是怎樣的

    (6)啟動MySQL多實例數(shù)據(jù)庫,檢查看到3307的端口已經(jīng)啟動

/data/3307/mysql.sh start

MySQL的多實例介紹及配置是怎樣的

    PS:一開始我的啟動是失敗了的,后來把data目錄下的ibdata1,ib_logfile0,ib_logfile0這三個文件刪除之后才正常啟動。應(yīng)該是因為我之前搭建MySQL服務(wù)的時候初始化了一次,再次這樣初始化生成的文件和后來的配置不符合。

3.登陸管理MySQL多實例數(shù)據(jù)庫

    (1)登陸MySQL數(shù)據(jù)庫

mysql -S /data/3307/mysql.sock        #需要指定sock文件,不然使用默認的3306

MySQL的多實例介紹及配置是怎樣的

    (2)上面看到MySQL的root的密碼還是空的,我們需要修改。

mysqladmin -u root password 'pcm123456' -S /data/3307/mysql.sock

MySQL的多實例介紹及配置是怎樣的

   

關(guān)于MySQL的多實例介紹及配置是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI