>  기사  >  데이터 베이스  >  mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법

mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법

little bottle
little bottle앞으로
2019-05-07 09:08:312034검색

mysql에는 읽기-쓰기 분리 아키텍처가 많이 있습니다. Baidu는 거의 모두 mysql_proxy를 사용하여 이를 구현합니다. 프록시는 Lua 스크립트 언어를 기반으로 구현되므로 인터넷의 많은 네티즌들은 프록시가 효율적이지 않고 불안정하며 프로덕션 환경에서 사용하지 않는 것이 좋다고 말했습니다.
amoeba는 에서 개발한 데이터베이스 읽기-쓰기 분리 프로젝트입니다. 알리바바(읽기-쓰기 분리) 그 중 작은 기능일 뿐입니다. 자바 기반으로 작성되었기 때문에 실행 환경에 jdk를 설치해야 합니다.

관련 튜토리얼: mysql 비디오 튜토리얼

준비 작업:
1 . 두 개의 데이터베이스, 하나의 마스터와 하나의 슬레이브 동기화
마스터: 172.22.10.237:3306; 메인 라이브러리는 쓰기 작업을 담당합니다.
슬레이브 라이브러리는 읽기 작업을 담당합니다. ;
amoeba: 172.22.10.237:8066; 메인 라이브러리가 있는 서버에 설치했습니다. 물론 세 번째 서버에도 설치할 수 있습니다.
모든 서버 운영 체제는 centos7입니다. amoeba가 있는 서버에 jdk를 설치했습니다.
경로는 JAVA_HOME=/usr/local/java/jdk1.8.0_131

위 항목은 반드시 직접 빌드하고 구성하세요. 슬레이브는 정상적으로 작동합니다. jdk 환경 변수를 추가하세요: /etc/profile;

amoeba를 설치하는 방법은 다음과 같습니다. 그래서 설치에 시간을 낭비하지 않을 것입니다. 여기서는 amoeba-mysql- 설치 패키지를 다운로드했습니다. 3.0.5-RC 배포판이며 압축을 풀어 직접 사용할 수 있습니다.

압축 해제 디렉터리: /usr/local/amoeba/


mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법분명히 구성 파일은 conf에 있고 시작 프로그램은 bin에 있습니다. 방금 언급했듯이 amoeba에는 읽기 및 쓰기 분리 기능보다 더 많은 기능이 있지만 읽기 및 쓰기 분리 기능만 사용하는 경우 다음 몇 가지 파일만 구성하면 됩니다: conf/ dbServers.xml conf/amoeba.xml 및 bin/launcher;

conf/dbServers.xml:

`<property name="port">3306</property>  
           #设置Amoeba要连接的mysql数据库的端口,默认是3306
    <property name="schema">testdb</property>  
          #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver
    <property name="user">test1</property>  
             #设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接
    <property name="password">111111</property>

    <property name="maxActive">500</property>  #最大连接数,默认500
    <property name="maxIdle">500</property>    #最大空闲连接数
    <property name="minIdle">1</property>    #最新空闲连接数

    <dbServer name="writedb"  parent="abstractServer">  #设置一个后端可写的数据库,这里定义为writedb,这个名字可以任意命名,后面还会用到
        <property name="ipAddress">172.22.10.237</property> #设置后端可写dbserver的ip

    <dbServer name="slave01"  parent="abstractServer">  #设置后端可读数据库
        <property name="ipAddress">10.4.66.58</property>

     <dbServer name="myslave" virtual="true">  #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave
            <property name="loadbalance">1</property>  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1
            <property name="poolNames">slave01</property>  #myslave组成员`

conf/amoeba.xml:
       #启动脚本,需要配置jdk环境变量;
        #在注释后的第一行添加:
        JAVA_HOME=/usr/local/java/jdk1.8.0_131

launcher는 시작 스크립트입니다. JAVA_HOME이 구성되어 있지 않으면 /etc/profile에 있어도 환경 변수가 구성되어 있으면 오류가 발생할 수 있습니다. 보고됨: jdk 환경 변수가 구성되지 않았습니다.

구성 파일도 있습니다: jvm.properties

  #占用内存配置文件
        # -Xss参数有最小值要求,必须大于228才能启动JVM
        #修改:
            JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

숙련된 운영 및 유지 관리는 jdk와 관련된 모든 것이 기본적으로 메모리를 조정한다는 것을 알고 있으며 아메바도 예외는 아닙니다. ;

이제 시작할 수 있습니다:


시작한 후 이 컴퓨터의 8066 포트를 볼 수 있습니다: mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법


이번에는 로컬 IP만 전달하면 됩니다. 포트 8066을 사용하고 데이터베이스에 연결하기 위해 구성 파일에 설정된 계정 및 비밀번호. 기록된 데이터는 마스터로 이동하고, 읽은 데이터는 슬레이브에서 읽혀집니다. mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법테스트:

마스터 데이터베이스를 닫아도 계속 읽을 수 있습니다. : select view 명령을 실행하거나

슬레이브 데이터베이스를 닫아도 계속 쓸 수 있습니다. 업데이트 및 삽입 명령을 실행하세요.

위 내용은 mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제