(2)配置Master-Master複製
在db1(master1)、db2(master2)、db3(slave)上編譯my.conf
#vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#下面爲新添加的內容
default-storage-engine = innodb
replicate-ignore-db = mysql
binlog-ignore-db = mysql
server-id = 1 #每臺服務器不能相同
log-bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-bin.relay
relay_log_index = /var/log/mysql/mysql-bin.relay.index
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
注意:
1)server-id在每臺服務器上的值都是不一樣,在這裏依次爲1、2、3、4。
2)因爲在這裏把log文件配置到了/var/log/mysql下,而mysql默認的目錄是在/var/lib/mysql,所以首先要新建mysql文件夾,Mkdir /var/log/mysql,然後用chown -R mysql.mysql /var/log/mysql mysql命令將mysql的所有者修改爲用戶mysql。其次要保證,mysql文件夾的權限755(即-rwxr-xr-x)。
如果沒有修改權限和所有者,重啓服務時就會在錯誤日誌中出現找不到mysql-bin.log或者mysql-bin.log.index的錯誤(/usr/libexec/mysqld: File '/var/log/mysql/mysql-bin.log.index' not found (Errcode: 13))。
完成編譯後重啓MYSQL服務
檢查複製狀態,如下圖:
show master status;
檢查日誌是否生成道新目錄,如下
# ls /var/log/mysql
使用mysql-mmm時一共需要三個用戶: replication、mmm_agent和mmm_monitor(管理服務器上用來監控cluster狀態的用戶,所以可以限定只能從管理服務器登錄)。使用下面三條命令新建這三個用戶並分配相應的權限
GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.0.0.%' IDENTIFIED BY 'monitor';
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.0.0.%' IDENTIFIED BY 'agent';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.%' IDENTIFIED BY 'replication';
接下來再db1和db2分別執行下面命令修改複製賬戶和密碼。並啓動SLAVE進程。
change master to master_host='10.0.0.4', master_port=3306, master_user='replication', master_password='replication';start slave;
change master to master_host='10.0.0.5', master_port=3306, master_user='replication', master_password='replication';start slave;
檢查複製狀態,如下圖:
show slave status\G