mysql-proxy篇一
mysql-proxy是MySQL的代理服务,本服务可以实现的是MySQL的主从分离。好处是:
1、 分摊负载,提高服务器的相应的效率。
2、 提高服务器的稳定性,当主服务器发生宕机之后,从服务器依然能够提供服务。
在主从架构中,一般主服务器可以实现既可以读又可以写的操作,从服务器可以实现读的操作,因为主服务器不能复制数据到从服务器中,所以从服务器不能实现写操作。
下面结合MySQL5.6来演示下主从分离。
环境说明:192.168.5.1(master-server),192.168.5.2(slave-server),192.168.5.3(MySQL-proxy)。
1、安装MySQL5.6的过程忽略,如果有不太清楚的同学,可以参考我的编译安装MySQL5.5.28,方法基本一致。
2、修改配置文件
vi /etc/my.cnf
[mysqld]
datadir=/data/mydata //指定数据目录
port=3306
socket=/tmp/mysql.sock
server_id=1 //保证主和从的server_id一定是唯一的。
log-bin=master-bin
binlog-format=ROW //二进制日志的格式,有ROW,STATEMENT,mixed三种,建议使用的是ROW或者是mixed
log-slave-updates=true //当slave应用复制的二进制日志信息时,是否把相应的信息记录到自己的二进制日志中去。
gtid-mode=on //MySQL5.6之后提供了GTID就是多进程复制。on表示打开。
enforce-gtid-consistency=true //强制打开gtid一致性
master-info-repository=TABLE //master-server用于记录每个slave主机复制的文件名称,文件位置,以及slave登录的用户名密码都信息,有两种方式,FILE或者是TABLE,如果是是file的话那么在数据库的数据目录底下会有相应的文件。TABLE的时候在MySQL库里面有相应的表存储相应的信息。
relay-log-info-repository=TABLE //slave连接的master的信息。复制的文件的名称,以及文件的位置等。
sync-master-info=1 //指定当事务提交之后,立刻同步到二进制日志文件中。
slave-parallel-workers=2 //开启的复制进程的数量。每一个库在复制的过程中只能使用一个复制进程。
binlog-checksum=CRC32
master-verify-checksum=1 //校验的参数。
binlog-rows-query-log_events=1
report-port=3306 //slave主机通告给master自己的参数
report-host=master.hello.com //主机的名称。
slave-server的配置
mysqld]
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11 //确保和master的不一样。
report-port=3306
port=3306
log-bin=mysql-bin.log //如果需要从服务器时刻保持有可能成为主服务器的可能,那么就打开二进制日志的功能,否则不开启。
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=slave.hello.com
下面启动MySQL
service mysqld start
3、 在处服务器上面建立复制的账号,并在从slave上面开启复制
mysql> grant replication slave on *.* to‘repluser’@’192.16.8.5.2’ identified by ‘replpass’;
mysql>flush privileges;
从服务器上面开始复制
mysql>change master to
master_host=’192.168.5.1’,
master_user=’replpass’,
master_password=’replpass’,
master_auto_position=1;
mysql>start slave //开启slave的复制。
note:mysql5.5和MySQL5.6的不同在于,MySQL5.5没有gtid的功能所以在连接到master上面的时候,需要指定二进制日志的文件名称和位置:
master_log_file=master-bin.000000X
master_log_postion=num //在复制之前在主上面showmaster status查看。
连接后就可以进行复制了。另外可以再主serve上面show slave hosts进行查看连接的从服务器的情况。另外show master status可以显示已经执行了事务的情况。(包括执行了多少个事务)
ending…MySQL-proxy的功能见下面的博客。