今天我们就来搭建一个读写分离,负载均衡的MySQL集群。想了解高可用理论方面内容的童鞋可以阅读理论篇。奥兹·杰克:MySQL高可用方案:理论篇zhuanlan.zhihu.com
搭建的集群的基本架构如下:
假设该集群下各机器的IP地址如下:
Master: 192.168.1.1
route:192.168.1.2
slave1:192.168.1.3
slave2:192.168.1.4
首先,我们需要通过主从复制搭建起最基本的一主三从集群。
配置master先在主数据库中创建主从复制使用的用户repli
GRANT REPLICATION SLAVE ON *.* TO 'repli'@'%' IDENTIFIED BY 'password';
然后修改my.cnf文件,在[mysqld]下添加如下配置:
[mysqld]
server-id=1 # id必须唯一
log-bin=mysql-bin # 二进制文件名
log-bin-index=master-bin.index # 显示master状态
binlog-do-db=DATABASE_NAME # 主从复制哪些数据库
sync_binlog=N # 每执行N次写入后与硬盘同步一次
值得一提的是,sync_binlog参数用于控制数据库的binlog与磁盘同步,默认情况下,sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。1是最安全的,但是也是最慢的。因此,可以视具体情况选择合适的sync_binlog值。
重启mysqld服务之后,通过SHOW MASTER STATUS;可以查看主服务器