日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL主從配置的一些總結(jié)

【獨(dú)家特稿】一、做了MySQL主從也有一段時(shí)間了,這兩天檢查磁盤空間情況,發(fā)現(xiàn)放數(shù)據(jù)庫的分區(qū)磁盤激增了40多G,一路查看下來,發(fā)現(xiàn)配置好主從復(fù)制以來到現(xiàn)在的binlog就有40多G,原來根源出在這里,查看了一下my.cnf,看到binlog的 size是1G就做分割,但沒有看到刪除的配置,在MySQL里show了一下variables:

成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元滄州做網(wǎng)站,已為上家服務(wù),為滄州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

作者個(gè)人博客:andrewyu.blog.

 
 
 
  1. mysql>show variables like '%log%'; 

查到了,

 
 
 
  1. | expire_logs_days | 0 | 

這個(gè)默認(rèn)是0,也就是logs不過期,這個(gè)是一個(gè)global的參數(shù),所以需要執(zhí)行

 
 
 
  1. set global expire_logs_days=8; 

這樣8天前的log就會(huì)被刪除了,如果有回復(fù)的需要,請(qǐng)做好備份工作,但這樣設(shè)置還不行,下次重啟mysql了,配置又恢復(fù)默認(rèn)了,所以需在my.cnf中設(shè)置,

 
 
 
  1. expire_logs_days = 8 

這樣重啟也不怕了。

現(xiàn)在我在生產(chǎn)環(huán)境下的做法是將此時(shí)間設(shè)為0,然后備份mysql日志文件,然后再手動(dòng)清理此文件。

想要恢復(fù)數(shù)據(jù)庫以前的資料,執(zhí)行

 
 
 
  1. mysql>show binlog events; 

由于數(shù)據(jù)量很多,查看起來很麻煩,光打開個(gè)文件就要閃半天,所以應(yīng)該適當(dāng)刪除部分可不用的日志。

并且如果使用的時(shí)間足夠長的話,會(huì)把我的硬盤空間都給吃掉。

1、登錄系統(tǒng),/usr/bin/mysql

使用mysql查看日志:

 
 
 
  1. mysql>show binary logs; 
  2. +—————-+———–+ 
  3. | Log_name | File_size | 
  4. +—————-+———–+ 
  5. | ablelee.000001 | 150462942 | 
  6. | ablelee.000002 | 120332942 | 
  7. | ablelee.000003 | 141462942 | 
  8. +—————-+———–+ 

2、刪除bin-log(刪除ablelee.000003之前的而沒有包含ablelee.000003):

 
 
 
  1. mysql> purge binary logs to ′ablelee.000003′; 
  2. Query OK, 0 rows affected (0.16 sec) 

3、查詢結(jié)果(現(xiàn)在只有一條記錄了):

 
 
 
  1. mysql> show binlog events\G  
  2. *************************** 1. row ***************************  
  3. Log_name: ablelee.000003  
  4. Pos: 4  
  5. Event_type: Format_desc  
  6. Server_id: 1  
  7. End_log_pos: 106  
  8. Info: Server ver: 5.1.26-rc-log, Binlog ver: 4  
  9. 1 row in set (0.01 sec)  
  10. (ablelee.000001和ablelee.000002已被刪除)  
  11. mysql> show binary logs;  
  12. +—————-+———–+  
  13. | Log_name | File_size |  
  14. +—————-+———–+  
  15. | ablelee.000003 | 106 |  
  16. +—————-+———–+  
  17. 1 row in set (0.00 sec)  
  18. (刪除的其它格式運(yùn)用!)  
  19. PURGE {MASTER | BINARY} LOGS TO ‘log_name’  
  20. PURGE {MASTER | BINARY} LOGS BEFORE ‘date’  

用于刪除列于在指定的日志或日期之前的日志索引中的所有二進(jìn)制日志。這些日志也會(huì)從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為***個(gè)。

例如:

 
 
 
  1. PURGE MASTER LOGS TO 'mysql-bin.010'; 
  2. PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00'; 

二、現(xiàn)在手上蠻多項(xiàng)目的數(shù)據(jù)庫用的是MySQL,由于權(quán)限等原因,暫時(shí)不方便部署Nagios監(jiān)控MySQL主從復(fù)制,所以我一般在從機(jī)上配置了SHELL腳本用來監(jiān)控MySQL的主從狀態(tài)(設(shè)置為每十分鐘運(yùn)行一次),并且每次出問題時(shí)將確切日期寫進(jìn)錯(cuò)誤日志,方便事后排查原因,腳本內(nèi)容如下:

 
 
 
  1. #!/bin/bash 
  2. #check MySQL_Slave Status 
  3. #crontab time 00:10 
  4. MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'` 
  5. MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'` 
  6. STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running") 
  7. IO_env=`echo $STATUS | grep IO | awk ' {print $2}'` 
  8. SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'` 
  9.  
  10.  
  11. if [ "$MYSQLPORT" == "3306" ] 
  12. then 
  13. echo "mysql is running" 
  14. else 
  15. mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com 
  16. fi 
  17.  
  18. if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ] 
  19. then 
  20. echo "Slave is running!" 
  21. else 
  22. echo "####### $date #########">> /data/data/check_mysql_slave.log 
  23. echo "Slave is not running!" >> /data/data/check_mysql_slave.log 
  24. mail -s "warn! $MySQLIP_replicate_error" yuhongchun027@163.com << /data/data/check_mysql_slave.log 
  25. fi 

建議每十分鐘運(yùn)行一次。

 
 
 
  1. */10 * * * * root /bin/sh /root/mysql_slave.sh  

記得在每臺(tái)MySQL從機(jī)上分配一個(gè)yuhongchun的用戶,權(quán)限大些也沒關(guān)系,只限定在本地運(yùn)行,如下所示:

 
 
 
  1. grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101"; 
  2. grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101"; 

腳本設(shè)計(jì)思路:

1、此腳本應(yīng)該能適應(yīng)各種各樣不同的內(nèi)外網(wǎng)環(huán)境,即IP不同的環(huán)境;

2、讓腳本也順便監(jiān)控下MySQL是否正常運(yùn)行;

三、innodb_buffer_pool_size的設(shè)置。

這個(gè)參數(shù)定義了InnodDB存儲(chǔ)引擎的表數(shù)據(jù)和索引數(shù)據(jù)的***內(nèi)存緩沖區(qū)大小。和MyISAM存儲(chǔ)引擎不同,MyISAM的key_buffer_size只緩存索引鍵,而innodb_buffer_pool_size卻是同時(shí)為數(shù)據(jù)塊和索引塊 做緩存,這個(gè)特征和Oracle是一樣的,這個(gè)值設(shè)得越高,訪問表中數(shù)據(jù)需求的I/O就越少。在一個(gè)專用的數(shù)據(jù)庫服務(wù)器,可以設(shè)置這個(gè)參數(shù)達(dá)機(jī)器物理內(nèi)存的80%,我現(xiàn)在一般的做法是配置成物理內(nèi)存的 1/4,比如8G內(nèi)存的生產(chǎn)數(shù)據(jù)庫,我一般會(huì)配置成2G左右。

四、測試了很長一段時(shí)間的MySQL的負(fù)載均衡,***綜合了老男孩和其它技術(shù)高手的意見,最終決定還是用LVS+Keepalived來作為MySQL的負(fù)載均衡,這是因?yàn)楹蠖藱C(jī)器超過10臺(tái)時(shí),LVS的性能還是***的;如果在3-5臺(tái)左右,HAProxy也可以很輕松的搞定工作。

五、大家都很清,磁盤I/O總會(huì)成為數(shù)據(jù)庫的性能瓶頸,這時(shí)候我們應(yīng)該如何在生產(chǎn)環(huán)境下選擇合適的RAID級(jí)別呢?

1、如果數(shù)據(jù)讀寫都很頻繁,可靠性要求也很高,***選擇RAID10;

2、如果數(shù)據(jù)讀很頻繁,寫相對(duì)較少,對(duì)可靠性有一定要求,可以選擇RAID5;

3、如果數(shù)據(jù)讀寫都很頻繁,但可靠性要求不高,可以選擇RAID0。

4、對(duì)于核心業(yè)務(wù)的數(shù)據(jù)庫主從同步,建議從機(jī)的備份時(shí)間往后延遲一段時(shí)間,通常的做法是延遲一天左右。

作者介紹:

余洪春(撫琴煮酒),《構(gòu)建高可用Linux服務(wù)器》一書作者,一拍網(wǎng)系統(tǒng)架構(gòu)師、資深項(xiàng)目管理工程師,ChinaUnix集群和高可用版版主。


網(wǎng)站題目:MySQL主從配置的一些總結(jié)
鏈接地址:http://www.dlmjj.cn/article/ccohipc.html