windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程

时间:2022-09-20 15:15:57

配置环境:

1.mysql5.6

2.windowsXP

主从复制配置


主服务器配置


配置my.ini文件

查找my.ini地址

my.ini文件在MySQL Server 5.6目录下

我的my.ini路径:

C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.6

我的路径在一个Documents and Settings隐藏文件目录下,需要点击“工具”-“查看”-“显示所有文件和文件夹”就可以看到隐藏文件了


查看my.ini配置文件的方法:

在 “程序”-“MySQL”-“MySQLserver 5.6”-"MySQL 5.6 Command Line Client" 找到右键点击属性,在“目标”中 就是你的my.ini的路径了


编写my.ini文件


在[mysqld]下 添加

server-id=1

log-bin=mysql-bin

这两项是必须的,其他参数自己可选

#server-id=1  服务器标识id,必须是唯一的

#log-bin=mysql-bin  启动二进制日志


*这里在配置的过程中大家要注意,默认情况下my.ini配置文件中server-id 是等于1的,你可以在配置文件中找到这一项,主从配置ID必须不能相同否则Slave_IO_Running: No 这个会一直是No,而不会是Yes

查看当前server-id参数命令show variables like 'server_id'; 

修改server-id 命令  set global server_id=2;

如果相同可以自己修改,最好是在my.ini文件指定,以免每次重启mysql服务,都需要手动修改


配置好my.ini之后重启mysql服务器

net stop mysql  //关闭MySQL服务
net start mysql  //开启MySQL服务


重启之后,在主服务器输入show master status\G 命令,会出现如下图,记下File、position的值,这里的值在从服务器配置需要使用!


windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程


接下主服务器还需要给从服务器 给一个连接权限

GRANT REPLICATION SLAVE ON *.*TO 'root'@'192.168.1.104' IDENTIFIED BY 'root'; 

赋值权限的时候,指定REPLICATION 、SLAVE 两个权限即可

这是赋值该用户全部权限的命令:

GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.104'IDENTIFIED BY 'root'WITH GRANT OPTION;


到这里主服务器的配置就完成了。


下面来配置从服务器


同上在找到my.ini文件加上

server-id=2

log-bin=mysql-bin

这里server-id 不能和主服务器的ID一样,或者和其他从服务一样,这个ID必须是唯一的,可以参数可以自定义


配置成功重启服务器。


在下来输入如下命令,这里 master_log_file和之前的File对应,master_log_pos与position值对应 ,在执行该命令之前必须停止slave线程 

停止stop  slave;

change master to master_host='192.168.1.100',master_user='root',master_port=3306,master_password='mysql',master_log_file='mysql-bin.000004',master_log_pos=2416;


执行完成启动slave线程 
启动:start slave;

然后查看是否配置成功
show slave status\G

windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这个两个都为Yes,则 表示配置成功;


windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程

Slave_IO_Running: No 一直为No,看下下面的错误代码,进行相应的解决。


以上就是配置主从复制的全部过程。



Amoeba实现读写分离

1.需要环境要求:需要安装JDK

2.下载地址:

http://sourceforge.net/projects/amoeba/files/

3.Amoeba详细文档:

http://docs.hexnova.com/amoeba/rw-splitting.html

4.带红色标示是需要修改配置的部分

 

 

 

dbServers.xml配置说明

 

1.用户信息配置

<!-- mysql port  端口-->

<property name="port">3306</property>

<!-- mysql schema  项目名称-->

<property name="schema">beautiful</property>

<!-- mysql user  登录名-->

<property name="user">root</property>

<!-- mysql password  登录密码-->

<property name="password">root</property>

 

 

1.主从服务器配置

<!-- 1.dbServer name="server1" 服务器名称  

2.<property name="ipAddress">192.168.0.104</property>服务器地址

3.可以配置多个从服务器

 

-->

 

<dbServer name="server1"  parent="abstractServer">

<factoryConfig>

<!-- mysql ip -->

<property name="ipAddress">192.168.0.104</property>

</factoryConfig>

</dbServer>

 

 

 

<dbServer name="server2"  parent="abstractServer">

<factoryConfig>

<!-- mysql ip -->

<property name="ipAddress">192.168.0.106</property>

</factoryConfig>

</dbServer>


<dbServer name="server3"  parent="abstractServer">

<factoryConfig>

<!-- mysql ip -->

<property name="ipAddress">192.168.0.105</property>

</factoryConfig>

</dbServer>

 

2.定义一个从服务连接池

<!-- 1.dbServer name="multiPool"  连接池名称

2.<property name="poolNames">server2,server3,server4</property> 指定多个从服务器用“,”拼接,在拼接过程中可以指定从从服务器负载量,如设置成“Slave1,Slave1,Slave2”那么Amoeba将请求以两次Slave1,一次Slave2的顺序循环对这些数据库节点转发请求

-->

 

<dbServer name="multiPool" 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">server2</property>

</poolConfig>

</dbServer>

 

Amoeba.xml 配置说明

1.<property name="port">8066</property>默认端口

2. <property name="user">root</property><property name="password">root</property>

MySQL Proxy Service的认证器,user和passwd属性分别定义Amoeba对外服务的用户名和密码。你的程序或者数据库客户端需要使用该用户名和密码来通过Amoeba连接之前定义的dbServer

 

 

<service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService">

<!-- port -->

<property name="port">8066</property>

<!-- bind ipAddress -->

<!-- 

<property name="ipAddress">127.0.0.1</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">root</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>

 

 

 

 

 

1.读取dbServers.xml配置的信息

2.defaultPool配置了默认的数据库节点,一些除了SELECT\UPDATE\INSERT\DELETE的语句都会在defaultPool执行

 

3.writePool配置了数据库写库,配置主服务器Master。

 

4.readPool配置了数据库读库,配置Slave或者Slave组成的数据库池,如这里就配置之前的virtualSlave数据库池。

 

<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">server1</property>

<property name="writePool">server1</property>

<property name="readPool">multiPool</property>

<property name="needParse">true</property>

</queryRouter>



以上就是配置读写分离,有不懂的地方可以参照http://docs.hexnova.com/amoeba/rw-splitting.html


在mysql5.6启动log日志,只需要在my.ini把general-log,值为0改成1即可,general_log_file为日志名称

windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程


下面是基本的命令

添加服务命令 

sc create "Proxy" DisplayName= "MySQL Proxy" start= "auto" binPath= "C:\Program Files\MySQL\mysql-proxy-0.8.5-windows-x8"

删除服务器命令

sc delete Proxy


重启服务:
net stop mysql  //关闭MySQL服务
net start mysql  //开启MySQL服务


查看主从的状态

show slave status\G
show master status\G 


查看已启动的日志
show variables like 'log_%';

端口占用
首先按快捷键windows+R,在运行框里输入cmd,如图所示,进入黑色界面后,输入netstat -ano,查看端口。

常见代理
1.mysql proxy
2.amoeba
3.atlas


日志详解

http://blog.itpub.net/29065182/viewspace-1161787/