標籤:ges password 使用者管理 mysql多執行個體 sql cin cli files 方法
一、MySQL多執行個體介紹
一台伺服器上開啟多個不同的服務連接埠(3306,33307,3308),運行多個MySQL服務進程,共用一套MySQL安裝程式,多執行個體MySQL在邏輯上看是各自獨立的
1、多執行個體主從複製原理圖
2、優點
①有效利用伺服器資源
②節約伺服器資源
③資源互相搶佔問題,其中一個執行個體並發很高或者慢查詢,其它執行個體也受影響
3、應用情境
①公司資金緊缺
②並發訪問不是特別大的業務
③門戶網站應用程式MySQL多執行個體情境,一般是從庫
4、MySQL多執行個體常見配置方案
①多設定檔、多啟動程式的方案(常用)
②單一設定檔、單一啟動程式多執行個體方案(一個設定檔,不好管理,耦合度太高,)
二、MySQL多執行個體部署
1、環境
[[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final)[[email protected] ~]# uname -r2.6.32-696.el6.x86_64[[email protected] ~]# hostname -I172.19.5.54 172.16.1.54
2、安裝MySQL
useradd -s /sbin/nologin -M mysqlcd /server/toolstar xf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gzmv mysql-5.6.36-linux-glibc2.5-x86_64 /application/mysql-5.6.36ln -s /application/mysql-5.6.36/ /application/mysqlchown -R mysql.mysql /application/mysql
3、配置多執行個體啟動命令和設定檔目錄
mkdir -p /data/{3306,3307}/data
4、unzip data.zip 在/下直接解壓覆蓋/data目錄(註:data.zip是打包好的多執行個體設定檔、資料、啟動命令)
[[email protected] data]# tree .├── 3306│ ├── data #3306執行個體資料檔案目錄│ ├── my.cnf #3306執行個體設定檔│ └── mysql #3306執行個體啟動命令└── 3307 ├── data #3307執行個體資料檔案目錄 ├── my.cnf #3307執行個體設定檔 └── mysql #3307執行個體啟動命令
5、授權mysql使用者管理/data目錄
chown -R mysql.mysql /data
6、授權mysql命令執行許可權
find /data -type f -name "mysql"|xargs chmod +x
7、配置mysql命令啟動環境變數
方法一:
ln -s /application/mysql/bin/* /usr/local/sbin/ 方法二:echo ‘export PATH=/application/mysql/bin:$PATH‘ >>/etc/profilesource /etc/profile
8、初始化多執行個體資料庫
cd /application/mysql/scripts/./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql #初始化資料庫3306./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307/data/ --user=mysql #初始化資料庫3307
9、MySQL多執行個體服務啟動
#啟動服務/data/3306/mysql start/data/3307/mysql start[[email protected] data]# netstat -lntup|grep 330tcp 0 0 :::3306 :::* LISTEN 3848/mysqld tcp 0 0 :::3307 :::* LISTEN 4885/mysqld
10、MySQL多執行個體設定密碼及登入
#設定密碼:mysqladmin -uroot password 123456 -S /data/3306/mysql.sockmysqladmin -uroot password 123456 -S /data/3307/mysql.sock#登入資料庫,指定sockmysql -uroot -p123456 -S /data/3306/mysql.sockmysql -uroot -p123456 -S /data/3307/mysql.sock
三、MySQL多執行個體設定檔
|
/data/3306/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
[mysqld]
port = 3306
socket = /data/3306/mysql.sock
datadir = /data/3306/data
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_open_cache = 512
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 = /data/3306/mysql.pid
log-bin = /data/3306/mysql-bin
relay-log = /data/3306/relay-bin
relay-log-info-file = /data/3306/relay-log.info
binlog_cache_size = 1M
max_binlog_cache_size = 1M
max_binlog_size = 2M
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 = 4 |
/data/3307/my.cnf
[client]
port = 3307
socket = /data/3307/mysql.sock
[mysqld]
port = 3307
socket = /data/3307/mysql.sock
datadir = /data/3307/data
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_open_cache = 512
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 = /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
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 = 5 |
說明:對比兩個設定檔之後,可以發現除了連接埠、server-id不一樣,3306開啟了log-bin功能,這樣可以做MySQL主複製
四、MySQL多執行個體啟動命令指令碼
#!/bin/sh#initport=3306mysql_user="root"mysql_pwd="123456"CmdPath="/application/mysql/bin"mysql_sock="/data/${port}/mysql.sock"#startup functionfunction_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 functionfunction_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 functionfunction_restart_mysql(){ printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql}case $1 instart) function_start_mysql;;stop) function_stop_mysql;;restart) function_restart_mysql;;*) printf "Usage: /data/${port}/mysql {start|stop|restart}\n"esac
五、遇到的錯誤
1、[ERROR] Plugin ‘InnoDB‘ init function returned error
刪除MySQL目錄下的ib_logfile0和ib_logfile1兩個檔案,就可以解決問題了
2、5.5.32——>5.6.36配置參數不對導致多執行個體無法啟動
table_cache——>table_open_cache = 512(5.6改名了)
六、生產環境多執行個體配置環境
1、一般在1-4個執行個體之間居多,1-2個最多,大業務佔用的機器比較多,機器R510居多,CPU是E5210,48G記憶體,硬碟12*300G SAS,RAID10
2、記憶體32G,雙cpu8核,硬碟6X600G,跑2-3個執行個體
linux營運、架構之路-MySQL多執行個體