乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      mysql mycat搭建穩(wěn)定高可用集群,負(fù)載均衡,主備復(fù)制,讀寫分離

       goldbomb 2018-09-18
      Java編程精選


      作者:北島知寒

      https://www.cnblogs.com/crazyacking/p/5967246.html

      數(shù)據(jù)庫性能優(yōu)化普遍采用集群方式,oracle集群軟硬件投入昂貴,今天花了一天時(shí)間搭建基于mysql的集群環(huán)境。

      主要思路

      簡(jiǎn)單說,實(shí)現(xiàn)mysql主備復(fù)制-->利用mycat實(shí)現(xiàn)負(fù)載均衡。

      比較了常用的讀寫分離方式,推薦mycat,社區(qū)活躍,性能穩(wěn)定。

      測(cè)試環(huán)境

      MYSQL版本:Server version: 5.5.53,到官網(wǎng)可以下載WINDWOS安裝包。

      注意:確保mysql版本為5.5以后,以前版本主備同步配置方式不同。

      linux實(shí)現(xiàn)思路類似,修改my.cnf即可。

      A主mysql。

      192.168.110.1:3306, 用戶root,密碼root。操作系統(tǒng):win7 x64,內(nèi)存:4g

      安裝路徑:

      C:Program FilesMySQLMySQL Server 5.5in

      B備mysql。

      192.168.110.2:3306, 用戶root,密碼root。操作系統(tǒng):win2003 x64,內(nèi)存:1g

      安裝路徑:

      C:Program FilesMySQLMySQL Server 5.5in

      A主、B備的mysql中創(chuàng)建sync_test數(shù)據(jù)庫

      實(shí)現(xiàn)mysql主備復(fù)制

      主要思路:A主mysql開啟日志,B備mysql讀取操作日志,同步執(zhí)行。

      一般為主備同步,主主同步不推薦使用。

      配置A主mysql

      1)修改my.ini。需要在log-bin='C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log'的相關(guān)位置創(chuàng)建log目錄,以及mysql-bin.log文件。

      [mysqld]
      server-id=1 #主機(jī)標(biāo)示,整數(shù)
      port=3306    
      log-bin='C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log'  #確保此文件可寫
      read-only=0   #主機(jī),讀寫都可以
      binlog-do-db=sync_test   #需要備份數(shù)據(jù)庫,多個(gè)寫多行
      binlog-ignore-db=mysql #不需要備份的數(shù)據(jù)庫,多個(gè)寫多行

      2)允許MYSQL遠(yuǎn)程訪問

      #登錄mysql console
      進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot
      #授權(quán)。允許root用戶,從192.168.110.*的IP范圍 遠(yuǎn)程訪問A主mysql
      mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'root' WITH GRANT OPTION;
      #生效。該操作很重要!
      mysql>FLUSH PRIVILEGES;

      3)重啟A主mysql數(shù)據(jù)庫

      進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot
      mysql>net stop mysql;
      mysql>net start mysql;

      4)查看主mysql日志狀態(tài)

      mysql> show master statusG;
      *************************** 1. row ***************************
                  File: mysql-bin.000003
              Position: 107
          Binlog_Do_DB: sync_test
      Binlog_Ignore_DB: mysql
      1 row in set (0.00 sec)

      ERROR:
      No query specified

      配置B備mysql

      1)修改my.ini。需要在log-bin='C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log'的相關(guān)位置創(chuàng)建log目錄,以及mysql-bin.log文件。

      [mysqld]
      # add for sycn test
      server-id=2                       #從機(jī)標(biāo)識(shí)
      log-bin='C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log' #確保此文件可寫
      #master-host='192.168.110.1' #主機(jī)Ip
      #master-user=root                  #數(shù)據(jù)庫訪問用戶名
      #master-pass=root                     #數(shù)據(jù)庫訪問密碼
      #master-port=3306          #主機(jī)端口
      #master-connect-retry=60     #如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時(shí)間差(秒)
      replicate-do-db=sync_test     #只復(fù)制某個(gè)庫
      replicate-ignore-db=mysql     #不復(fù)制某個(gè)庫

      2)重啟B備mysql數(shù)據(jù)庫

      進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot
      mysql>net stop mysql;
      mysql>net start mysql;

      3)配置B備數(shù)據(jù)庫的數(shù)據(jù)來源,核實(shí)高亮處的狀態(tài)是否正常。

      mysql>change master to master_host='192.168.110.1',master_port='3306',master_user='root',master_password='root';
      mysql>slave start;
      mysql>show slave statusG;
      *************************** 1. row ***************************
                     Slave_IO_State: Waiting for master to send even
                        Master_Host: 192.168.110.1
                        Master_User: root
                        Master_Port: 3306
                      Connect_Retry: 60
                    Master_Log_File: mysql-bin.000003
                Read_Master_Log_Pos: 107
                     Relay_Log_File: wjt-1c698d8a032-relay-bin.00001
                      Relay_Log_Pos: 253
              Relay_Master_Log_File: mysql-bin.000003
                   Slave_IO_Running: Yes
                  Slave_SQL_Running: Yes
                    Replicate_Do_DB: sync_test
                Replicate_Ignore_DB: mysql
                 Replicate_Do_Table:
             Replicate_Ignore_Table:
            Replicate_Wild_Do_Table:
        Replicate_Wild_Ignore_Table:
                         Last_Errno: 0
                         Last_Error:
                       Skip_Counter: 0
                Exec_Master_Log_Pos: 107
                    Relay_Log_Space: 565
                    Until_Condition: None
                     Until_Log_File:
                      Until_Log_Pos: 0
                 Master_SSL_Allowed: No
                 Master_SSL_CA_File:
                 Master_SSL_CA_Path:
                    Master_SSL_Cert:
                  Master_SSL_Cipher:
                     Master_SSL_Key:
              Seconds_Behind_Master: 0
      Master_SSL_Verify_Server_Cert: No
                      Last_IO_Errno: 0
                      Last_IO_Error:
                     Last_SQL_Errno: 0
                     Last_SQL_Error:
        Replicate_Ignore_Server_Ids:
                   Master_Server_Id: 1
      1 row in set (0.00 sec)

      ERROR:
      No query specified

      驗(yàn)證同步配置結(jié)果

      • A主mysql:使用navicat工具,在sync_test庫中創(chuàng)建sync_table表,并添加一些數(shù)據(jù)

      • B備mysql:使用navicat工具,查看sync_test庫,可以看到sync_table表和數(shù)據(jù)已被同步

      實(shí)現(xiàn)讀寫分離

      主要思路:使用mycat中間件,轉(zhuǎn)發(fā)sql指令到后端mysql節(jié)點(diǎn)。mycat不負(fù)責(zé)數(shù)據(jù)庫同步。

      安裝mycat

      mycat是什么?可以認(rèn)為它是一個(gè)數(shù)據(jù)庫訪問中間件,但更像f5、ngnix等產(chǎn)品,具備訪問路由、多表分表分片操作等功能??傊軓?qiáng)大。

      下載:http://www./ ,本文使用的是:1.6-RELEASE

      解壓Mycat-server-1.6-RELEASE-20161012170031-win.tar,到D:dev-binmycat目錄

      確保java環(huán)境為jdk1.7以上,否則mycat將不支持

      安裝完畢

      配置mycat

      1)server.xml。配置訪問用戶及權(quán)限。修改高亮處信息,其中admin、user為訪問mycat的用戶,TESTDB為mycat虛擬的數(shù)據(jù)庫,供上層應(yīng)用訪問。

      user name='admin'>
              property name='password'>adminproperty>
              property name='schemas'>TESTDBproperty>
              
              
          user>
          user name='user'>
              property name='password'>userproperty>
              property name='schemas'>TESTDBproperty>
              property name='readOnly'>trueproperty>
          user>

      2)schema.xml。這部分不太好理解,精簡(jiǎn)了一下,主要分schema、dataNode、dataHost三個(gè)主要配置。

      節(jié)點(diǎn)定義了mycat的虛擬數(shù)據(jù)庫為TESTDB, balance='1':write操作路由到A機(jī),讀操作路由到B。



      mycat:schema xmlns:mycat='http://cat/'>
          schema name='TESTDB' checkSQLschema='false' sqlMaxLimit='100' dataNode='dn1'>
              
          schema>
          dataNode name='dn1' dataHost='localhost1' database='sync_test' />
          dataHost name='localhost1' maxCon='1000' minCon='10' balance='1'
                    writeType='0' dbType='mysql' dbDriver='native' switchType='1'  slaveThreshold='100'>

              heartbeat>select user()heartbeat>
              
              writeHost host='hostM1' url='192.168.110.1:3306' user='root'  password='root'>
                  
                  readHost host='hostS2' url='192.168.110.2:3306' user='root' password='root' />
              writeHost>
          dataHost>
      mycat:schema>

      啟動(dòng)mycat

      1)啟動(dòng)mycat

      D:dev-binmycatbin>startup_nowrap.bat

      后臺(tái)信息如下:

      D:dev-binmycatin>startup_nowrap.bat
      D:dev-binmycatin>REM check JAVA_HOME & java
      D:dev-binmycatin>set 'JAVA_CMD=C:Program Files (x86)Javajdk1.7.0_13/bin/java'
      D:dev-binmycatin>if 'C:Program Files (x86)Javajdk1.7.0_13' == '' goto noJavaHome
      D:dev-binmycatin>if exist 'C:Program Files (x86)Javajdk1.7.0_13injava.exe' goto mainEntry
      D:dev-binmycatin>REM set HOME_DIR
      D:dev-binmycatin>set 'CURR_DIR=D:dev-binmycatin'
      D:dev-binmycatin>cd ..
      D:dev-binmycat>set 'MYCAT_HOME=D:dev-binmycat'
      D:dev-binmycat>cd D:dev-binmycatin
      #如果啟動(dòng)失敗,請(qǐng)修改D:dev-binmycatinstartup_nowrap.bat文件中的以下參數(shù)。默認(rèn)占用內(nèi)存為2G
      D:dev-binmycatin>'C:Program Files (x86)Javajdk1.7.0_13/bin/java' -server -Xms512m -Xmx512m -XX:MaxPermSize=64M  -XX:+AggressiveOpts -XX:MaxDirectMemorySize=768m -DMYCAT_HOME=D:
      '..conf;..lib*' cat.MycatStartup
      MyCAT Server startup successfully. see logs in logs/mycat.log   #啟動(dòng)成功將看到如下信息。

      注意:如日志中出現(xiàn)192.168.110.2 not connected 等信息,請(qǐng)?jiān)试SB備mysql遠(yuǎn)程訪問。

      #登錄mysql console
      進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot
      #授權(quán)。允許root用戶,從192.168.110.*的IP范圍 遠(yuǎn)程訪問Bmysql
      mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'root' WITH GRANT OPTION;
      #生效,該操作很重要!
      mysql>FLUSH PRIVILEGES;

      測(cè)試讀寫分離

      驗(yàn)證是否同步

      使用navicat連接mycat,操作方式和連接物理mysql庫一致,用戶admin,密碼admin,端口8066

      在TESTDB虛擬庫中,創(chuàng)建新表test2,增加一些數(shù)據(jù)

      查看A節(jié)點(diǎn)、B節(jié)點(diǎn)數(shù)據(jù)已同步

      關(guān)閉B備mysql的同步,驗(yàn)證讀寫分離

      mysql> slave stop;
      Query OK, 0 rows affected (0.00 sec)

      mysql> show slave statusG;
      *************************** 1. row ***************************
                     Slave_IO_State:
                        Master_Host: 192.168.110.1
                        Master_User: root
                        Master_Port: 3306
                      Connect_Retry: 60
                    Master_Log_File: mysql-bin.000003
                Read_Master_Log_Pos: 478
                     Relay_Log_File: wjt-1c698d8a032-relay-bin.00001
                      Relay_Log_Pos: 624
              Relay_Master_Log_File: mysql-bin.000003
                   Slave_IO_Running: No
                  Slave_SQL_Running: No
                    Replicate_Do_DB: sync_test
                Replicate_Ignore_DB: mysql
                 Replicate_Do_Table:
             Replicate_Ignore_Table:
            Replicate_Wild_Do_Table:
        Replicate_Wild_Ignore_Table:
                         Last_Errno: 0
                         Last_Error:
                       Skip_Counter: 0
                Exec_Master_Log_Pos: 478
                    Relay_Log_Space: 936
                    Until_Condition: None
                     Until_Log_File:
                      Until_Log_Pos: 0
                 Master_SSL_Allowed: No
                 Master_SSL_CA_File:
                 Master_SSL_CA_Path:
                    Master_SSL_Cert:
                  Master_SSL_Cipher:
                     Master_SSL_Key:
              Seconds_Behind_Master: NULL
      Master_SSL_Verify_Server_Cert: No
                      Last_IO_Errno: 0
                      Last_IO_Error:
                     Last_SQL_Errno: 0
                     Last_SQL_Error:
        Replicate_Ignore_Server_Ids:
                   Master_Server_Id: 1
      1 row in set (0.00 sec)

      ERROR:
      No query specified

      3)使用navicat連接mycat,操作方式和連接物理mysql庫一致,用戶admin,密碼admin,端口8066

      連接成功后,將看到TESTDB數(shù)據(jù)庫和test數(shù)據(jù)表

      在test表中添加一些數(shù)據(jù),保存

      執(zhí)行select * from test查看test操作,將看到數(shù)據(jù)未更新

      原因:mycat將查詢sq路由到B,因此讀取的結(jié)果集不一致。

      最后,mycat使用可以參見官網(wǎng)的權(quán)威指南學(xué)習(xí)。雙主雙備架構(gòu)待后續(xù)更新。

      【點(diǎn)擊成為源碼大神】

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多