mysql 多实例应用配置部署指南
一,Mysql 多實例的作用的問題
1,有效利用服務器的資源
? ?當單個服務器資源有剩余的時候,可以充分利用剩余的資源以提供更多的服務
2,節約服務器的資源
? ?當公司資源緊張,但是數據庫各自需要獨立提供服務,而且需要主從同步等技術時候,此時使用多實例是最好的。
3,資源互相搶占的問題
? ?當某個服務實例并發很高或者有慢查詢的時候,整個實例會消耗更多的CPU,內存,磁盤IO資源,導致服務器上其他的實例提供的服務質量大大下降,相當于一個大房子,多個臥室,大家共用一個衛生間,早餐起床,一個人上廁所,長期占用,其他人要等待一樣的道理。
二、Mysql 多實例的應用場景
1,資源緊張型的公司
? ?業務量不大,不想花錢,又有多需求,所以特別適合多實例
2,并發訪問不是特別大的網站
? ?當公司業務量不大的適合,服務器資源沒有充分利用,有浪費的時候,就可以使用多實例
3,百度搜索引擎就使用了多實例 ?,sina 網也使用了多實例
? ?目的,節約IDC空間,資源充分利用?
? ?sina的配置 SATA 15000轉 ?4塊做raid5 ?48G內存?
三、MySQL多實例的配置方案
? 方案一:如下圖 ?推薦使用此
? 這種方式的優勢邏輯簡單,配置簡單,耦合度低
? 缺點是管理起來不太方便。
? ?
方案二:單一的部署方案 ??不推薦,耦合性太高
? ? ?[mysqld_muti]
? ? ? 即一個配置文件 啟動多個實例
四、開始配置MySQL多實例
? ?環境介紹:
? ?mysql 版本:5.6.27
? ?操作系統:Centos 6.5
? ?mysql實例數:2個?
? ?實例占用端口分別為:3306、3307?
先配置方案一:?
1.下載:在http://dev.mysql.com/downloads/mysql/官網上下載
??
2.解壓
| 1 | tar?xvf?mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz |
?
3.移動到/usr/local/mysql
?
| 1 | mv?mysql-5.6.27-linux-glibc2.5-x86_64?mysql |
4.安裝依賴的lib包:
| 1 | centos:yum?install??libaio?-y |
5、配置用戶,目錄
| 1 2 3 4 5 | shell>?groupadd?mysql shell>?useradd?-r?-g?mysql?mysql shell>?cd?/usr/local/mysql shell>?chown?-R?mysql?. shell>?chgrp?-R?mysql?. |
6、使用/data/目錄作為MySQL多實例的總目錄
| 1 | ?mkdir?-p?/data/{3306,3307}/data |
7、開始配置多實例的配置文件
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | vim??/data/3306/my.cnf [mysqld]? ?#general ?basedir?=?/usr/local/mysql ?datadir?=?/data/3306/data ?socket?=?/data/3306/mysql.sock ?user?=?mysql ?port?=?3306 ?server_id?=?1 ?log-error?=?/data/3306/err.log ?pid?=?/data/3306/mysql.pid ?#binlog? ?log-bin??=?/data/3306/mysql-bin ?sync-binlog?=?1 ?#InnoDB ?innodb_flush_log_at_trx_commit ?innodb_support_xa?=?1????????????????????? ?#other ?character_set_server?=?utf8 ?default_storage_engine?=InnoDB ?ft_min_word_len?=?1 ?open_files_limit?=?65535 ?auto-increment-increment?=?10 ?auto-increment-offset?=?1? ?log_slave_updates=1??????????允許備庫將其重放的事件也記錄到自身的二進制日志中 ?read_only=0????????????????阻止任何沒有特權權限的線程修改數據 ?skip_slave_start? [client] ?socket?=?/data/3306/mysql.sock ?port?=?3306 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | vim??/data/3307/my.cnf [mysqld]? ?#general ?basedir?=?/usr/local/mysql ?datadir?=?/data/3307/data ?socket?=?/data/3307/mysql.sock ?user?=?mysql ?port?=?3307 ?server_id?=?1 ?log-error?=?/data/3307/err.log ?pid?=?/data/3307/mysql.pid ?#binlog? ?log-bin??=?/data/3307/mysql-bin ?sync-binlog?=?1 ?#InnoDB ?innodb_flush_log_at_trx_commit ?innodb_support_xa?=?1????????????????????? ?#other ?character_set_server?=?utf8 ?default_storage_engine?=InnoDB ?ft_min_word_len?=?1 ?open_files_limit?=?65535 ?auto-increment-increment?=?10 ?auto-increment-offset?=?1? ?log_slave_updates=1??????????允許備庫將其重放的事件也記錄到自身的二進制日志中 ?read_only=0????????????????阻止任何沒有特權權限的線程修改數據 ?skip_slave_start? [client] ?socket?=?/data/3307/mysql.sock ?port?=?3307 |
8、創建多實例的啟動文件 。
? 放到/data/3306 ?| /data/3307 下
??腳本省略(mysqld)
?多實例啟動文件的啟動MySQL服務實質:
?
? ?
| 1 2 | mysqld_safe?--defaults-file=/data/3306/my.cnf?2>&1?>/dev/null?& mysqld_safe?--defaults-file=/data/3307/my.cnf?2>&1?>/dev/null?& |
??
?多實例啟動文件的停止MySQL服務實質:
| 1 2 | ?mysqladmin?-u?root?-p?passwd?-S?/data/3306/mysql.sock?shutdown ?mysqladmin?-u?root?-p?passwd?-S?/data/3306/mysql.sock?shutdown??平滑停止 |
9,授權MySQL用戶,和組管理整個多實例目錄
| 1 | ?chown?-R?mysql.mysql?/data |
10,配置MySQL全局環境變量
| 1 2 | ?echo?"export?PATH=$PATH:/usr/local/mysql/bin/"??>>?/etc/profile ?source??/etc/profile |
11,開始初始化數據庫
?
| 1 2 3 | ?cd/usr/local/mysql/scripts/ ?./mysql_install_db?--user=mysql??--datadir=/data/3306/data/?--basedir=/usr/local/mysql/ ?./mysql_install_db?--user=mysql??--datadir=/data/3307/data/?--basedir=/usr/local/mysql/ |
?什么初始化數據庫?
?a,初始化的主要目的就是創建基礎的數據庫文件,例如生成MySQL的庫表
?b,初始化后,產看目錄,可以看到一些表文件
12,啟動| 停止 MySQL服務
?如果有腳本,則使用腳本啟動
| 1 2 | /data/3306/mysql??start? /data/3307/mysql??start |
?如果沒有腳本,則使用以下啟動
| 1 | mysqld_safe?--defaults-file=/data/3306/my.cnf?2>&1?>/dev/null?& |
| 1 2 3 4 5 6 7 | mysqld_safe?--defaults-file=/data/3307/my.cnf?2>&1?>/dev/null?& 如果沒有腳本,則使用一下啟動停止 mysqladmin?-u?root?-p?passwd?-S?/data/3306/mysql.sock?shutdown mysqladmin?-u?root?-p?passwd?-S?/data/3306/mysql.sock?shutdown??平滑停止| |
13,檢查
? 登陸:
?mysql -S /data/3306/mysql.sock?
管理的話,在本地都是采用 -S /data/3306/mysql.sock,如果在遠程可以通過不同的端口連接上去坐管理操作。其他的和單實例的管理沒什么區別!
#######################################################################################
再來看第二種通過官方自帶的mysqld_multi來實現多實例實戰:
這里的mysql安裝以及數據庫的初始化和前面的步驟一樣,就不再贅述。
mysqld_multi的配置
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | vim?/etc/my.cnf [mysqld_multi] mysqld?=?/usr/local/mysql/bin/mysqld_safe mysqladmin?=?/usr/local/mysql/bin/mysqladmin user?=?admin password?=?password [mysqld1]? ?#general ?basedir?=?/usr/local/mysql/ ?datadir?=?/data/3306/data/ ?socket?=?/data/3306/mysql.sock ?user?=?mysql ?port?=?3306 ?server_id?=?1 ?log-error?=?/data/3306/ ?pid?=?/data/3306/ ?#binlog? ?log-bin??=?/data/3306/mysql-bin ?sync-binlog?=?1 ?#InnoDB ?innodb_flush_log_at_trx_commit ?innodb_support_xa?=?1????????????????????? ?#other ?character_set_server?=?utf8 ?default_storage_engine?=InnoDB ?ft_min_word_len?=?1 ?open_files_limit?=?65535 ?auto-increment-increment?=?10 ?auto-increment-offset?=?1? ?log_slave_updates=1??????????允許備庫將其重放的事件也記錄到自身的二進制日志中 ?read_only=0????????????????阻止任何沒有特權權限的線程修改數據 ?skip_slave_start? [client] ?socket?=?/data/3306/mysql.sock ?port?=?3306 [mysqld2] ?#general ?basedir?=?/usr/local/mysql/ ?datadir?=?/data/3307/data/ ?socket?=?/data/3307/mysql.sock ?user?=?mysql ?port?=?3307 ?server_id?=?2 ?log-error?=?/data/3307/ ?pid?=?/data/3307/ ?#binlog? ?log-bin??=?/data/3307/mysql-bin ?sync-binlog?=?1 ?#InnoDB ?innodb_flush_log_at_trx_commit ?innodb_support_xa?=?1????????????????????? ?#other ?character_set_server?=?utf8 ?default_storage_engine?=InnoDB ?ft_min_word_len?=?1 ?open_files_limit?=?65535 ?auto-increment-increment?=?10 ?auto-increment-offset?=?1? ?log_slave_updates=1??????????允許備庫將其重放的事件也記錄到自身的二進制日志中 ?read_only=0????????????????阻止任何沒有特權權限的線程修改數據 ?skip_slave_start? [client] ?socket?=?/data/3307/mysql.sock ?port?=?3307 [mysql] no-auto-rehash prompt=\\u@\\d?\\R:\\m> [mysqld_safe] open-files-limit?=?8192 |
mysqld_multi啟動
| 1 2 3 4 5 6 7 8 9 10 11 | /usr/local/mysql/bin/mysqld_multi?start?1 /usr/local/mysql/bin/mysqld_multi?start?2 ?? 停止MySQL實例 mysqladmin?-uroot?-p?-S?/data/3306/mysql.sock?shutdown mysqladmin?-uroot?-p?-S?/data/3307/mysql.sock?shutdown 更改原來密碼 mysqladmin?-uroot?password?'123456'?-S?/data/3306/mysql.sock mysqladmin?-uroot?password?'123456'?-S?/data/3307/mysql.sock |
測試登陸
| 1 2 | mysql?-uroot?-p?-S?/data/3306/mysql.sock? mysql?-uroot?-p?-S?/data/3307/mysql.sock |
#########################################################################################
多實例MySQL忘記密碼,修改密碼的方法:
1,停掉原有實例進程?
| 1 | mysqladmin?-uroot?-p?-S?/data/3306/mysql.sock?shutdown |
2,加參數登錄MySQL,此時跳過密碼驗證
| 1 | mysqld_safe??--defaults-file=/data/3306/my.cnf??--skip-grant-tables??& |
3,登錄,并修改密碼?
?
| 1 | mysql?-uroot?-p?-S?/data/3306/mysql.sock???登錄時空密碼 |
?修改密碼:
| 1 2 | update?mysql.user?set?passowrd=password("123456")?where?user='root'; flush?privileges; |
4,重啟MySQL,使用新密碼登錄
?
| 1 2 | mysqladmin?-uroot?-p?-S?/data/330/mysql.sock?shutdown mysqld_safe?--defaults-file=/data/3306/my.cnf?2>&1?>/dev/null?& |
本文轉自crazy_charles 51CTO博客,原文鏈接:http://blog.51cto.com/douya/1787516,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的mysql 多实例应用配置部署指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统中网络配置详解
- 下一篇: linux cmake编译源码,linu