现在一般做网站都是去哪家做的,网站的服务器,手机网站建设免费空间,自动的东莞网站制作公司主从复制只是一个同步数据的方式读写分离#xff1a;只在主的上面写#xff0c;只在从的上面读读写分离方案#xff1a;【1】基于程序代码内部 (生产环境中应用最广泛#xff0c;性能最好#xff0c;需要开发人员来实现)【2】基于中间代理层的实现amoeda 是阿里巴巴使用的…主从复制只是一个同步数据的方式读写分离只在主的上面写只在从的上面读读写分离方案【1】基于程序代码内部 (生产环境中应用最广泛性能最好需要开发人员来实现)【2】基于中间代理层的实现amoeda 是阿里巴巴使用的产品实验要求5台机器web服务器 1台 192.168.200.66amoeba 服务器一台192.168.200.67数据库3台 数据库A 192.168.200.68 (mysql主服务器) 数据库B 192.168.200.69 (mysql从服务器) 数据库C 192.168.200.70 (mysql从服务器)amoeba 67chmod x jdk-6u31-linux-x64.bin./jdk-6u31-linux-x64.binmv jdk1.6.0_31/ /usr/local/jdk1.6安装amoeba 不仅需要amoeba软件包还需要有jdk-6u31-linux-x64.bin/amoeba 软件是基于jdk1.5版本开始的。lsmv jdk1.6.0_14/ /usr/local/jdk1.6vim /etc/profileexport JAVA_HOME/usr/local/jdk1.6export CLASSPATH$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH$PATH$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/binexport AMOEBA_HOME/usr/local/amoedaexport PATH$PATH:$AMOEBA_HOME/bin保存退出source /etc/profilejava -versionrm -rf /usr/bin/javasource /etc/profilejava -versionmkdir /usr/local/amoebatar xf amoeba........tat.gz -C /usr/local/amoebachmod -R 755 /usr/local/amoeba---------------------------------------------3台数据库服务器都要做授权让amoeba可以进行访问grant all on *.* to test192.168.200.% identified by 123.com; //用户名是test 密码是123.comflush privileges;----------------------------------------------修改amoeba的配置文件主机amoeba 67 操作cd /usr/local/amoeba/lscd conflscp amoeba.xml{,.bak}vim amoeba.xml //修改30行左右的文件内容amoeba123456 //指定客户端连接时的用户名和密码///115行左右master去掉以下两行的注释master //写交合主 slaves //读交给从slaves是从的组里面包含slave1和slave2保存退出cp dbServers.xml{,.bak}vim dbServers.xml //找到以下内容进行修改test/去掉注释的mysql password 改为以下内容123.com找到dbServer192.168.200.68192.168.200.69192.168.200.70声明slaves组 找到以下内容1slave1,slave2保存退出cdnohup /usr/local/amoeba/bin/amoeba start ///不依赖于任何终端放到后台执行netstat -lnpt //查看端口是否开启注意cat nohup.outps aux |grep amoeba //查看端口8066---------------------------------------------------------------------------web 服务器66yum -y install mariadbmysql -u amoeba -p123456 -h 192.168.200.67 -p 8066 //客户机做连接测试amoeba是否能进行读写分离【1】在数据库主服务器上创建create database db_test;use db_test;create table student(id int(10),name varchar(10),address varchar(20));show databases;【2】在两台数据库从服务器上进行检测看是否同步show databases;【3】先把两台数据库从服务器的复制功能停止stop slave;【4】在主数据库中插入数据insert into student values(1,crushlinux,this_is_master);【5】在slave1 slave2中分别插入以下数据-----slave1use db_test;insert into student values(2,crushlinux,this_is_slave1);-----slave2use db_test;insert into student values(3,crushlinux,this_is_slave2);【6】web客户端查询测试use db_test;select * from student;///测试结果是能够看到里面内容是轮询的。 而且只能看到从数据库上面的内容。【7】web客户端插入数据use db_test;insert into student values(4,crushlinux,this_is_web);【8】web客户端检查use db_test;select * from student;【9】主数据库中查看是否有4的数据use db_test;select * from student;【10】开启两台从数据库的主从复制功能start slave;show slave status; //查看是否开启【11】在web客户端查看use db_test;select * from student; //会看到124 或者134 的数据在插入一条数据insert into student values(5,crushlinux,this_is_web);///结果是1245或者是1345 总之从服务器的数据不会同时出现。完成