一、主从数据库配置 可实现读写分离
1、MySQL任何一台数据库服务器都可以作为主数据库服务器,打开MySQL的配置文件(对于windows就是MySQL安装目录下的my.ini文件,对于linux通常就是/etc/my.cnf文件)
[mysqld]
server-id=1
datadir=/var/lib/mysql
log-bin=/var/lib/mysql/mysql-bin
socket=/var/lib/mysql/mysql.sock
MySQL进行主从复制是通过二进制的日志文件来进行,所以我们必须开启MySQL的日志功能,同时每一台数据库服务器都需要指定一个唯一的server-id,通常主数据库服务器我们指定为1。
重启服务
主数据库服务器上创建一个可以进行复制的用户账号
GRANT replication slave ON *.* TO ‘repuser‘@‘%‘ IDENTIFIED BY ‘123456‘;
flush privileges;
%可以直接指定复制的IP地址!
replication slave是MySQL数据库中表示复制的权限名称,repuser则是表示从数据库服务器登陆到主数据库服务器时用到的用户名称
查询主机日志和position
show master STATUS;
2、配置从机器
[mysqld]
server-id=2 #区别于主机
log-bin=/var/lib/mysql/mysql-bin
配置同步SQL 需要主IP 复制的用户名密码 logfile和Position
mysql>change master to
master_host=‘192.168.1.12‘,
master_user=‘repuser‘,
master_password=‘123456‘,
master_log_file=‘mysql-bin.000001‘,
master_log_pos=1006;
启动Slave同步进程
mysql> start slave;
主从同步检查
mysql> show slave status\G
==================================
Slave_IO_State:
Master_Host: 192.168.1.12
Master_User: repuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 415
Relay_Log_File: localhost-relay-bin.000008
Relay_Log_Pos: 561
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: YES
Slave_SQL_Running: YES
Replicate_Do_DB:
……………省略若干……………
Master_Server_Id: 1
1 row in set (0.01 sec)
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
二、双主热备,双主+HAProxy!
1、在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset和auto_increment_increment。
在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,
而要把auto_increment_offset分别配置为1和2.
这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。
log-bin-index[=file] 设置此参数是指定二进制索引文件的路径与名称。
log-bin [=file_name] 设置此参数表示启用binlog功能,并制定路径名称。
binlog_format: STATEMENT模式(SBR) ROW模式(RBR) MIXED模式(MBR)
sync_binlog =1
sync_master_info = 1
sync_replay_log = 1
sync_relay_long_info =1 #以上4个参数最好加上!
2、详细设置A
server-id=1
datadir=/var/lib/mysql
log-bin=/var/lib/mysql/mysql-bin
binlog_format = MIXED
relay_log = /var/lib/mysql/relay-log
auto-increment-increment = 2
auto-increment-offset = 1
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
详细设置B
server-id=2
basedir=C:\mysql-5.6.30-winx64
datadir=C:\mysql-5.6.30-winx64\data
log-bin=C:\mysql-5.6.30-winx64\data\mysql-bin
binlog_format = MIXED
relay_log = C:\mysql-5.6.30-winx64\data/relay-log #注意如果在Sql下 \r 不对 应该写/r
auto-increment-increment = 2
auto-increment-offset =2
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
3、在两台机器上同时新建同步用户
GRANT replication slave ON *.* TO ‘repuser‘@‘%‘ IDENTIFIED BY ‘123456‘;
flush privileges;
配置同步
change master to
master_host=‘192.168.1.13‘,
master_user=‘repuser‘,
master_password=‘123456‘,
master_log_file=‘mysql-bin.000007‘,
master_log_pos=402;
开启同步
start slave;
4、Haproxy配置
相关资源
利用keepalived和haproxy配置mysql的高可用负载均衡
http://www.cnblogs.com/tae44/p/4717334.html
Azure SLB + httpd + ILB + HAProxy + Atlas + MySQL
http://www.cnblogs.com/hengwei/p/4754420.html