<form id="fjn3d"></form>

<address id="fjn3d"></address>

            1.4.?雙機備份

            1.4.1. 數據庫雙機備份配置使用步驟
            1.4.2. 服務器雙機備份配置使用步驟

            1.4.1.?數據庫雙機備份配置使用步驟

            1.4.1.1.?網絡配置和安裝

            1.4.1.1.1.?網絡配置

            需要三臺機器,分別配置對應/etc/hosts,其中一臺作為主機master(192.168.1.64)、一臺作為備機backup(192.168.1.62),一臺作為虛擬ip所在的機器vip(192.168.1.63),最后一行增加如下內容并保存:

            192.168.1.64 master
            192.168.1.62 slave
            192.168.1.63 vip

            注意

            保證主備機可以互相ping通,并且關閉防火墻。

            1.4.1.1.2.?安裝

            在主機master和備機backup上:

            1. 首先檢測uxpool工具安裝包是否存在。

            2. 如果存在,則檢測uxpool是否安裝,如果沒安裝,則安裝uxpool到/home/uxdb/uxdbinstall路徑下,如果已經安裝,則跳過進行下一步;如果不存在,拷貝uxpool安裝包,然后解壓安裝包,安裝uxpool。

            1.4.1.2.?流復制配置

            1.4.1.2.1.?主備集群配置

            提示用戶輸入當前機器角色【master/backup】。

            1. 如果是master機器

              在master機器上連接uxkms數據庫,創建repuser用戶:

              create user repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '1qaz!QAZ';

              修改/home/uxdb/.uxkms/database/uxkmsdb/ux_hba.conf,最后一行增加如下內容并保存:

              host   replication   all   slave   trust

              修改/home/uxdb/.uxkms/database/uxkmsdb/uxsinodb.conf配置如下:

              listen_addresses = '*' 
              port = 6556  //uxkmsdb集群的端口
              wal_level = replica 
              archive_mode = on 
              archive_command = 'cd ./' 
              hot_standby = on
              max_wal_senders = 3
              wal_keep_segments = 64 
              full_page_writes = on 
              wal_log_hints = on

              配置完成后,重啟master數據庫:

              ux_ctl -D master restart
            2. 如果是backup機器

              修改slave中/home/uxdb/.uxkms/database/uxkmsdb/uxsinodb.conf配置如下:

              listen_addresses = '*' 
              port = 6556  //uxkmsdb集群的端口
              wal_level = replica 
              archive_mode = on 
              archive_command = 'cd ./' 
              hot_standby = on
              max_wal_senders = 3
              wal_keep_segments = 64 
              full_page_writes = on 
              wal_log_hints = on

              配置完成后,重啟slave數據庫:

              ux_ctl -D slave restart
            1.4.1.2.2.?ux_basebackup 創建備庫

            在slave節點執行以下操作:

            ./ux_basebackup -D /home/uxdb/.uxkms/database/slave/ -Fp -Xs -v -P -h master -p 6556 -U repuser

            修改slave節點/home/uxdb/.uxkms/database/uxkmsdb/ux_hba.conf,最后一行增加如下內容并保存(是trust模式還是md5模式,需要和主機保持一致):

            host   replication   all   master   trust
            1.4.1.2.3.?配置recovery.conf
            1. Master端配置如下:

              cp /home/uxdb/uxdbinstall/share/recovery.conf.sample /home/uxdb/.uxkms/database/uxkmsdb/recovery.done
              
              #編輯內容如下 
              recovery_target_timeline = 'latest' 
              standby_mode = on 
              primary_conninfo = 'application_name=master host=slave port=6556 user=repuser password=1qaz!QAZ' 
              trigger_file = '/home/uxdb/uxdbinstall/dbsql/bin/master/trigger_file'
            2. Salve端配置如下:

              cp /home/uxdb/uxdbinstall/share/recovery.conf.sample /home/uxdb/.uxkms/database/uxkmsdb/recovery.conf
              
              #編輯內容如下 
              recovery_target_timeline = 'latest'
              standby_mode = on 
              primary_conninfo = 'application_name=slave host=master port=6556 user=repuser password=1qaz!QAZ' 
              trigger_file = '/home/uxdb/uxdbinstall/dbsql/bin/slave/trigger_file'
            1.4.1.2.4.?配置 .uxpass

            master上配置訪問slave參數。在 ~目錄下創建并配置 .uxpass文件,保存并修改權限:

            slave:6556:uxdb:repuser:1qaz!QAZ
            chmod –R 600 .uxpass

            slave上配置訪問master參數。在 ~目錄下創建并配置 .uxpass文件,保存并修改權限:

            master:6556:uxdb:repuser:1qaz!QAZ
            chmod –R 600 .uxpass
            1.4.1.2.5.?流復制數據同步測試

            分別啟動master,slave數據庫:在master上創建一個數據庫和臨時表;在slave上查詢剛才創建的表和數據,判定是否有數據同步。

            另外可以在主機上通過下面的命令查詢主備復制的狀態:

            select * from ux_stat_replication;

            到此可見,從庫已經同步了主庫的數據,到此可以說UXDB流復制熱備已經創建完成。

            1.4.1.3.?初始化集群及uxpool配置

            基于uxpool的雙機集群:uxdb主節點和備節點實現流復制熱備,uxpool1,uxpool2作為中間件,將主備master節點加入集群,實現讀寫分離,負載均衡和HA故障自動切換。兩uxpool節點可以委托一個虛擬ip節點作為應用程序訪問的地址,兩節點之間通過watchdog進行監控,當uxpool1宕機時,uxpool2會自動接管虛擬ip繼續對外提供不間斷服務。

            1.4.1.3.1.?設置主備切換時需要執行的命令的權限
            vim ~/.uxpass
            sudo chmod u+s /sbin/ifconfig
            sudo chmod u+s /usr/sbin
            1.4.1.3.2.?配置ssh秘鑰
            1. 在master、slave機器上都生成ssh,默認保存在~/.ssh目錄中,使用UXDB用戶登錄,進入/home/uxdb目錄,如下執行命令:

              ssh-keygen -t rsa
            2. 兩個節點同時配置互信。

              主庫:

              ssh-keygen -t rsa
              cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_key64

              備庫:

              ssh-keygen -t rsa
              將主庫authorized_key64拷貝到備庫
              cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_key62 
              此時文件中有主庫和備庫的公鑰信息,將備庫的authorized_key62 再次拷貝到主庫

              修改權限,進入/home/uxdb目錄,執行命令:

              chmod 600 ~/.ssh/authorized_keys64 
              chmod 600 ~/.ssh/authorized_keys62

              分別將master的公鑰復制到slave,slave的公鑰復制到master,然后分別修改公鑰名稱為authorized_keys:

              scp authorized_key64 uxdb@192.168.1.62:/home/uxdb/.ssh/
              scp authorized_key62 uxdb@192.168.1.64:/home/uxdb/.ssh/

              驗證ssh配置是否成功:

            1.4.1.3.3.?配置uxpool

            uxpool的配置項很多,安裝完成后有三個模板文件,都存放在安裝目錄的etc目錄下,一般在配置之前,先拷貝這個模板文件,然后在此基礎上進行配置。進入/home/uxdb/uxpool/etc目錄,執行以下命令:

            cp pool_hba.conf.sample pool_hba.conf
            cp uxpool.conf.sample uxpool.conf
            cp pcp.conf.sample pcp.conf
            1. 配置pool_hba.conf(master和slave)

              pool_hba.conf用于對登錄用戶進行驗證,要和ux_hba.conf保持一致,要么都是trust,要么都是md5驗證方式,這里采用了trust驗證方式如下設置:

              vim pool_hba.conf
              
              #編輯內容如下
              # "local" is for Unix domain socket connections only
              local   all   all                 trust
              # IPv4 local connections :
              host   all   all   127.0.0.1/32   trust
              host   all   all   ::1/128        trust
            2. 配置pcp.conf(master和slave)

              pcp.conf配置用于uxpool登錄管理,一些操作uxpool的工具會要求提供密碼等,配置如下:

            3. 配置uxpool環境變量(master和slave)

              查看本機網卡:ifconfig

              對/hom/uxdb/uxdbinstall/uxpool/etc目錄下uxpool.conf進行編輯。編輯內容如下:

              master配置:
              # - uxpool Connection Settings -
              listen_addresses = '*'
              port = 9999
              pcp_listen_addresses = '*'
              pcp_port = 9898
              # - Backend Connection Settings -
              backend_hostname0 = 'master'    #主機master的hostname或者ip
              backend_port0 = 6556
              backend_weight0 = 1
              backend_data_directory0 = '/home/uxdb/.uxkms/database/uxkmsdb'
              backend_flag0 = 'ALLOW_TO_FAILOVER'
              backend_hostname1 = 'slave'
              backend_port1 = 6556
              backend_weight1 = 1
              backend_data_directory1 = '/home/uxdb/.uxkms/database/uxkmsdb '
              backend_flag1 = 'ALLOW_TO_FAILOVER'
              # - Authentication -
              enable_pool_hba = on
              pool_passwd = 'pool_passwd'
              pid_file_name = '/home/uxdb/uxdbinstall/uxpool/uxpool.pid'
              logdir = '/home/uxdb/uxdbinstall/uxpool/log'
              replication_mode = off
              load_balance_mode = on
              master_slave_mode = on
              master_slave_sub_mode = 'stream'
              # - Streaming -
              sr_check_period = 5
              sr_check_user = 'repuser'
              sr_check_password = '123456'
              sr_check_database = 'uxdb'                               
              #------------------------------------------------------------------------------
              # HEALTH CHECK GLOBAL PARAMETERS
              #------------------------------------------------------------------------------
              health_check_period = 10
              health_check_timeout = 20
              health_check_user = 'uxdb'
              health_check_password = '123456'
              health_check_database = 'uxdb'
              health_check_period0 = 10
              health_check_timeout0 = 20
              health_check_user0 = 'uxdb'
              health_check_password0 = '123456'
              health_check_database0 = 'uxdb'
              #必須設置,否則primary數據庫down了,uxpool不知道,不能及時切換。從庫流復制還在連接數據,報連接失敗。
              #只有下次使用uxpool登錄時,發現連接不上,然后報錯,這時候,才知道掛了,uxpool進行切換。
              failover_command = '/home/uxdb/uxdbinstall/uxpool/failover_stream.sh %H '
              # - Enabling - 
              use_watchdog = on 
              # - Watchdog communication Settings - 
              wd_hostname = 'master' 
              wd_port = 9000 
              delegate_IP = 'vip' 
              if_cmd_path = '/sbin' 
              if_up_cmd = 'ifconfig ens33:0 inet $_IP_$ netmask 255.255.254.0' 
              if_down_cmd = 'ifconfig ens33:0 down' 
              arping_cmd = 'arping -fqbDUV -w 1 $_IP_$'
              wd_heartbeat_port = 9694
              wd_heartbeat_keepalive = 2
              wd_heartbeat_deadtime = 30
              heartbeat_destination0 = 'slave'
              heartbeat_destination_port0 = 9694
              heartbeat_device0 = 'ens33'
              other_pgpool_hostname0 = 'slave' #對端
              other_pgpool_port0 = 9999
              other_wd_port0 = 9000
              
              Slave節點配置(該節點的配置與master節點基本相同,此處僅將配置不同的參數列出來):
              wd_hostname = 'slave'                 #本端
              heartbeat_destination0 = 'master'     #對端
              other_pgpool_hostname0 = 'master'     #對端

              uxpool.conf配置文件里,故障處理配置的是:

              failover_command = '/home/uxdb/uxdbinstall/uxpool/failover_stream.sh %H '

              因此,需要在/home/uxdb/uxdbinstall/uxpool/目錄中新建failover_stream.sh腳本,寫入如下內容并保存:

              賦予failover_stream.sh可執行權限:

              chmod 777  /opt/pgpool/failover_stream.sh
            4. 分別在master機器和slave機器的集群下(/home/uxdb/uxdbinstall/uxpool)創建一個日志文件路徑,即log文件夾(uxpool.conf中配置的)。

            1.4.1.4.?集群管理

            1.4.1.4.1.?啟動集群
            1. 分別啟動兩個集群,master和slave。

            2. 分別啟動uxpool命令。

              uxpool -n -d -D > /home/uxdb/uxdbinstall/uxpool/log/uxpool.log 2>&1 & 

              master機器:

              backup機器:

              啟動uxpool后,查看集群節點狀態命令:

              show pool_nodes;

              快速終止uxpool命令:

              uxpool -m fast stop
            1.4.1.4.2.?uxpool的主備切換
            1. 模擬master端uxpool宕機。

              停止主機uxpool后,稍等片刻,繼續訪問vip地址,訪問成功查看主機節點狀態。

            2. 模擬master端ux primary宕機。

              停止當前主節點服務,然后稍等幾秒鐘,重新連接虛擬節點vip,發現連接成功,查看節點狀態,slave節點已經切換為主節點。

            3. 修復master節點重新加入集群。

              啟動主機集群,并加入加群管理節點后,查詢節點狀態:

              pcp_attach_node -d -U uxdb -h vip -p 9898 -n 0
            4. 同步數據時間線。

              如果宕機后導致兩個節點數據時間線不一致,需要做數據同步操作:

              ./ux_ctl -D slave/ stop   #停掉需要做同步的節點uxdb服務
              ./ux_rewind  --target-uxdata=/home/uxdb/.uxkms/database/uxkmsdb --source-server='host=master port=6556 user=uxdb dbname=uxdb password=123456'   #同步master節點上時間線

              修改ux_hba.conf如下:

              # "local" is for Unix domain socket connections only
              local   all           all                  md5
              # IPv4 local connections :
              host    all           all   0.0.0.0/0      md5
              # IPv6 local connections :
              host    all           all   ::1/128        md5
              # Allow replication connections from localhost, by a user with the replication privilege.
              local   replication   all                  md5
              host    replication   all   127.0.0.1/32   md5
              host    replication   all   ::1/128        md5
              host    replication   all   master         trust
              #更名recovery.conf為recovery.done
              mv recovery.conf recovery.done
              #重啟uxdb服務
              ux_ctl -D slave/ start
              #重新加入集群
              pcp_attach_node -d -U uxdb -h vip -p 9898 -n 0
              #查看集群節點狀態,數據時間線一致
              show pool_nodes;

            1.4.2.?服務器雙機備份配置使用步驟

            1. 安裝uxkms時,根據安裝包提示,輸入主服務器ip、備服務器ip、網卡名、虛擬 ip,輸入完成后會自動啟動nginx服務和keepalived服務。

            2. 安裝完成并啟動uxkms后,使用ipaddr命令查看虛擬ip是否綁定成功,如果虛擬ip沒綁定成功,手動執行如下命令:

              ifconfigens33:1192.168.1.65 netmask255.255.254.0up

              up表示立即啟用這個VIP;ens33:1表示這個VIP綁定的目標網卡設備;192.168.1.65表示vip的值;255.255.254.0表示子網掩碼(主備機器都要執行)。

            3. 在瀏覽器訪問https://vip:7012,如果可以正常訪問,停掉主服務器的uxkms服務,然后再次訪問https://vip:7012,如果可以正常訪問,則雙機備份功能正常;如果不能正常訪問,用root用戶手動修改/usr/local/keepalived/etc/keepalived/keepalived.conf配置文件的stat值和virtual_ipaddress值(主備機器都要執行)。

            91竞彩之家