MySQL使用Amoeba主從分離的一點點經驗

2021-06-21 13:33:33 字數 1717 閱讀 6963

專案開發完畢,移植到伺服器的主從分離環境中時,出現了點問題。

問題一: 埠被占用  (與tomcat的監聽埠衝突)

解決方案:修改埠號。修改tomcat的衝突埠號。

問題二: 無法正常連線資料庫 : error 1129 (hy000): host '***.***.***.***' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 

解決過程:

1. 按照提示 flush-host ,但是隔一會又無法正常連線資料庫。

2. 檢視mysql的當前連線 show processlist 發現只有幾個連線,而最大連線上百個,所以,不是正常連線造成的。

3. 執行命令 natstat -antl 檢視埠占用情況,發現很多連線處在time_wait狀態,並且某些ip位址是同一網段的其他主機(這個同一網段的其他主機其實不是其他主機),

懷疑是埠拒絕服務攻擊,所以,折騰了幾天,修改iptables也沒有效果。

後來有同事通過和  lsof -i:3306 的結果對比,發現ipv6的情況下netstat 的結果中ip位址會出現截斷顯示的情況。

4. 由於是大量time_wait連線產生的情況,參照了網上的通用解決辦法:

通過調整核心引數解決   

一、 開啟檔案 vi /etc/sysctl.conf

二、 編輯檔案,加入以下內容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

5. 調整的amoeba的最大啟用連線數、最大空閒連線數 等引數,減少amoeba產生的連線。通過上述的表現狀況來看,有可能amoeba在斷開資料連線的方式是強行斷開,

造成作業系統底層產生time_wait狀態的連線,長時間等待資料,實際上那些連線中有些已經單方斷開了。

問題三: 資料庫漢字的亂碼問題

我這裡打算統一採用utf-8編碼,當然,一般沒有韓文、蒙文等除了漢字英文本元的專案統一選用gbk編碼還是最佳的選擇,我們專案可能會有南韓歌曲名稱要儲存。

在配置專案的jdbc連線時,加上編碼引數  例如:jdbc:mysql://localhost:3306/test?characterencoding=utf8

在資料庫my.cnf檔案中新增 default-character-set=utf8 來設定編碼。設定完成後,發現mysql無法正常啟動了。

控制台出現 starting mysql... error! the server quit without updating pid file (/home/data/mysql/localhost.pid). 這個字樣的提示,其實並不是由於還有其他程序鎖定了檔案。通過檢視 localhost.localdomain.err 檔案,發現沒有識別 default-character-set=utf8 這個配置引數,導致資料庫系統無法正常啟動。

我們知道my.cnf裡面有好幾個section節,用中括號括起來表明乙個小節的名稱。

無法識別是因為[mysqld]這裡沒有這個引數,要配就配在[client]和[mysql](後面沒有d這個字元)這兩個節裡面。

當然,改過編碼以後,資料庫原有的漢字資訊就全是亂碼了,這個目前沒有什麼好的手段。只能在更改編碼前全庫匯出,改編碼後,再匯入。

mysql 主從維護 MYSQL主從的維護

分類 mysql postgresql 1.m上把事件從二進位制日誌中過濾 引數 binlog do db binlog ignore db 2.s上事件從中繼日誌中過濾 引數 replicate do db replicte do table repicate ingore db repliaca...

Mysql 主從備份

複製解決的基本問題就是讓一台伺服器的資料與其他伺服器保持一致。mysql支援 行的複製 和 基於語句 的複製。這兩種方式都是通過再主庫上記錄二進位制日誌,再備庫重放日誌來實現非同步的資料資料複製。在同一時間點,會造成主備庫資料不一致 mysql的複製大部分支援向後相容,新版本伺服器可以作為老版本伺服...

MySQL主從架構

1.使用yum安裝部署mysql兩台 yum y install mariadb mariadb server2.關閉防火牆和selinux systemctl stop firewalld.service setenforce 0 3.修改配置兩台mysql的主配置檔案 機器1 vim etc m...