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/분명히 구성 파일은 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组成员`
#启动脚本,需要配置jdk环境变量; #在注释后的第一行添加: JAVA_HOME=/usr/local/java/jdk1.8.0_131launcher는 시작 스크립트입니다. JAVA_HOME이 구성되어 있지 않으면 /etc/profile에 있어도 환경 변수가 구성되어 있으면 오류가 발생할 수 있습니다. 보고됨: jdk 환경 변수가 구성되지 않았습니다.
구성 파일도 있습니다: jvm.properties
#占用内存配置文件 # -Xss参数有最小值要求,必须大于228才能启动JVM #修改: JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
숙련된 운영 및 유지 관리는 jdk와 관련된 모든 것이 기본적으로 메모리를 조정한다는 것을 알고 있으며 아메바도 예외는 아닙니다. ;
시작한 후 이 컴퓨터의 8066 포트를 볼 수 있습니다:
이번에는 로컬 IP만 전달하면 됩니다. 포트 8066을 사용하고 데이터베이스에 연결하기 위해 구성 파일에 설정된 계정 및 비밀번호. 기록된 데이터는 마스터로 이동하고, 읽은 데이터는 슬레이브에서 읽혀집니다. 테스트:
마스터 데이터베이스를 닫아도 계속 읽을 수 있습니다. : select view 명령을 실행하거나슬레이브 데이터베이스를 닫아도 계속 쓸 수 있습니다. 업데이트 및 삽입 명령을 실행하세요.
위 내용은 mysql 데이터베이스 읽기와 쓰기를 분리하기 위해 아메바를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!