主从复制
1. 配置master
# log-bin
log-bin-index=master-bin.index
server-id=1
2. 配置slave
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
2. 重启mysql服务(net start mysql), 并连接至 master
change master to master_host='your-host-name',master_port=3306,master_user='repl_user',master_password='repl_user';
3. 启动 slave
start slave;
3. 测试主从复制
读写分离
daemon=true
proxy-skip-profiling=true
keepalive = true
log-level=debug
log-file=logs/mysql-proxy.log
proxy-lua-script=share/doc/mysql-proxy/rw-splitting.lua
proxy-address=localhost:4040
proxy-backend-addresses = 192.168.51.106:3306
proxy-read-only-backend-addresses = 192.168.51.110:3306
1. (注意:为方便测试,我们可以修改读写分离Lua脚本,Lua脚本默认最小4个最大8个以上的客户端连接才会实现读写分离(这是因为mysql-proxy会检测客户端连接, 当连接没有超过min_idle_connections预设值时,不会进行读写分离,即查询操作会发生到Master上),现改为最小1个最大2个(当多于2个连接才会进行读写分离,所以测的时候mysql -u proxy -p111111 -P4040 -h localhost,这个命令要第三次才能看到效果,这点很重要),我们修改{home}\share\doc\mysql-proxy\rw-splitting.lua脚本,改动内容如下所示:
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1,
max_idle_connections = 2,
is_debug = false
}
end
2. 连接master,并在其下创建 repl_test数据库,以及test数据库:
create database repl_test;
create table test(id int not null primary key auto_increment, name varchar(20));
insert into test(null,'gordon');
3. 观察slave, 直到主从复制成功,即在slave能查询到 test这张表的数据时 可以 关闭 slave,以 做测试:stop slave;
4. 启动cmd ,并 连接至 proxy : mysql -u proxy -P 4040 -h localhost -p(注意端口为 4040),然后再test表中插入数据:
insert into test(null,'gordon2');
并进行查询,可以看到test表中含有两条数据
5. 启动cmd, 并连接至 proxy, 同时查看test表中的数据,为1条, 说明配置成功!