慢查詢指的是資料庫中查詢時間超過了指定的閾值的SQL,這類SQL通常伴隨著執行時間長、伺服器資源占用高、業務響應慢等負面影響。隨著攜程酒店業務的不斷擴張,再加上大量的SQLServer轉MySQL項目的推進,慢查詢的數量正在飛速增長,每日的報警量也居高不下,因此慢查詢的治理優化已經是刻不容緩,此文主... ...
在工作環境中,我們可能會遇到主機硬體損壞無法在短時間內修複,故障主機的primary和mirror實例無法使用。此時屬於該主機的primary實例是單實例狀態,如果單實例再次宕機集群將變成"雙宕”,無法使用有很大的風險。
這時就需要用到備機替換,用一臺正常主機替換故障主機。具體步驟如下。
前提條件:此文章所用的主機“正常主機”是之前被替換下來的備機,所以環境都是準備好的,如果是一臺剛裝好的主機,需要按照安裝教程,一直做到資料庫初始化的上一步。
集群正常運行,無實例宕機。
用gps01(192.168.210.11,備)替換gps02(192.168.210.35,舊)
1.核查兩台主機的文件內容是否一致,如果不一致以舊主機為主修改。
cat /etc/security/limits.conf
cat /etc/security/limits.d/20-nproc.conf
cat /etc/selinux/config
cat /etc/sysctl.conf
資料庫安裝目錄版本
2.備機不能有gp實例在運行,元數據目錄不能有殘留文件。
gps01無greenplum實例
data1 data2目錄下有殘留文件
3.登錄gps01修改主機名
sudo hostname gps02
sudo cp /etc/sysconfig/network /etc/sysconfig/network220615. bak
sudo vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= gps02
hostnamectl --static set-hostname gps02
重新連接主機使修改生效
4.備份集群所有主機的/etc/hosts文件(在master節點)
gpssh -f all_hosts
=> sudo cp /etc/hosts /etc/hosts.bak220615
=> exit
單獨備份備機hosts文件(備機操作)
sudo cp /etc/hosts /etc/hosts.bak220615
5.修改hosts文件。
sudo vi /etc/hosts
將原本的
192.168.210.35 gps02
更改為
192.168.210.11 gps02
這一步用sudo許可權輸入root密碼,或者做主機間root用戶的互信傳文件,生產上嘗試能否傳輸到/etc下 不能直接傳的話 就先傳到家目錄下 再sudo覆蓋
gpscp -f ~/all_hosts /etc/hosts =:/etc/hosts
備機單獨傳輸
scp /etc/hosts 192.168.210.11: /etc/hosts
確認hosts文件分發成功(在master節點),備機單獨確認。
gpssh -f ~/all_hosts
=>cat /etc/hosts | grep gps02
=>exit
7.集群做互信(將master主機的hosts文件中的ip修改後就可以做互信)
先將master的known_hosts文件重命名 再做互信
cd /home/gpadmin/.ssh
mv known_hosts known_hosts220615.bak
gpssh-exkeys -f ~/all_hosts
8.查看元數據目錄路徑,確認建立相應的文件(root許可權,master主機)
1.先查到gps02主機的dbid
2.再根據dbid查路徑。
9.在gps01(備)建立目錄,並修改許可權。
mkdir -p /data1/primary/default
mkdir -p /data1/mirror/default
mkdir -p /data1/primary/gpfs
mkdir -p /data1/mirror/gpfs
mkdir -p /data2/primary/default
mkdir -p /data2/mirror/default
mkdir -p /data2/primary/gpfs
mkdir -p /data2/mirror/gpfs
chown -R gpadmin:gpadmin /data*
10.聯繫應用側停調度進行全量恢復(在master節點),需要先將gps02(192.168.210.35)上的實例全部宕停192.168.210.11上如果有gp的實例也需全部宕停。
192.168.210.11上無實例
11.將殘餘進程清理乾凈
psql -c “chekpoint”
gpstop -M fast
12.以維護模式啟動資料庫
gpstart -R
gprecoverseg -F
使用gpstate -e查看同步進度
13.等到數據同步完成需要重啟資料庫切換角色(gp4版本)
停止資料庫
gpstop
14.啟動資料庫gpstart
查看資料庫狀態確認沒問題gpstate -e
可能會遇到的問題:
備機替換無法建立互信,需要輸入密碼,可能是master節點的known_hosts有舊的主機互信,需嘗試刪除。
如果發現宕停的實例不足12個,嘗試重啟主機恢復正常。
如果發現有的主機不能傳文件,可能是scp命令沒有x許可權,賦權即可。