项目基于上一篇的mysql主从备份
资料准备
1、服务器:192.168.1.52部署安装Amoeba
2、Amoeba版本:amoeba-mysql-3.0.5-RC-distribution
3、JDK:jdk-10_windows-x64
安装JDK
直接双击安装jdk-10_windows-x64_bin.exe,完成后,配置JAVA_HOME和PATH即可。
打开cmd命令,执行java -version查看版本,执行where java查看JAVA_HOME和PATH配置是否正确。
安装Amoeba
直接解压,然后在conf文件夹,打开dbServers.xml文件,修改内容如下:
<!-- mysql port --> <property name="port">3306</property> <!-- mysql schema --> <property name="schema">ms_test</property> <!-- mysql user --> <property name="user">amoebaUser</property> <property name="password">123456</property>
这里指定数据库名称和端口,以及访问数据库使用的账户和密码,这里的账户要特别注意,必须是主从允许远程访问的用户,不是主从的本地用户。
配置主从库:
<dbServer name="master" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.0.30</property> </factoryConfig> </dbServer> <dbServer name="slave1" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.1.52</property> </factoryConfig> </dbServer> <dbServer name="virtualSlave" virtual="true"> <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> <property name="loadbalance">1</property> <!-- Separated by commas,such as: server1,server2,server1 --> <property name="poolNames">slave1</property> </poolConfig> </dbServer>
打开amoeba.xml文件,修改内容如下:
<!-- service class must implements com.meidusa.amoeba.service.Service --> <service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService"> <!-- port --> <property name="port">8066</property> <!-- bind ipAddress --> <property name="ipAddress">192.168.1.52</property> <property name="connectionFactory"> <bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory"> <property name="sendBufferSize">128</property> <property name="receiveBufferSize">64</property> </bean> </property> <property name="authenticateProvider"> <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator"> <property name="user">root</property> <property name="password">123456</property> <property name="filter"> <bean class="com.meidusa.toolkit.net.authenticate.server.IPAccessController"> <property name="ipFile">${amoeba.home}/conf/access_list.conf</property> </bean> </property> </bean> </property> </service>
设定IP和端口,以及用户和密码,这是对外代理使用的,客户端程序只需要连接这个IP和端口,使用这个的用户和密码即可。
配置路由:
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"> <property name="ruleLoader"> <bean class="com.meidusa.amoeba.route.TableRuleFileLoader"> <property name="ruleFile">${amoeba.home}/conf/rule.xml</property> <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property> </bean> </property> <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property> <property name="LRUMapSize">1500</property> <property name="defaultPool">master</property> <property name="writePool">master</property> <property name="readPool">virtualSlave</property> <property name="needParse">true</property> </queryRouter>
配置完成,运行bin目录下的launcher.bat即可。
如果提示The stack size specified is too small, Specify at least....
则需要修改amoeba-mysql-3.0.5-RC目录下的jvm.properties
JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
并且修改bin目录下lanucher.bat里面的:
set DEFAULT_OPTS=-server -Xms256m -Xmx1024m -Xss256k