先配置靜態IP
配置my.cnf
先關閉防火牆
2臺機器除了server-id不同之外,配置項基本一樣(把a改爲b)。
在[mysqld]部分添加如下:
#add log-bin=master-a-bin server-id=1 relay-log=master-a-relay-bin log_slave_updates=1
sync_binlog=1
#add
配置項說明
兩臺MySQL均要開啓binlog日誌功能
兩臺MySQL的server-ID不能一樣,需將其中一臺修改爲2
log_slave_updates表示slave將複製事件寫進自己的二進制日誌
sync_binlog=1。每進行1次事務提交之後,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。
修改配置後重啓mysqld
service mysqld restart
其它配置項:待查
1.主服務器A(123.1.1.123)創建用戶並清空日誌
grant replication slave on *.* to 'root'@'%' identified by 'pwd'; flush privileges;
爲了安全,最好將“%”改爲具體的IP地址(如123.1.1.124),使該帳戶只能在指定的從服務器上使用。
flush tables with read lock; show binary logs; reset master; show binary logs; unlock tables;
記錄下 FILE 及 Position 的值,在後面進行從服務器操作的時候需要用到。
從服務器B清空日誌
show binary logs;
reset master;
show binary logs;
從服務器通過change master to命令修改設置
change master to master_host='123.1.1.123', master_user='root', master_password='pwd',
master_port=3306, master_log_file='master-a-bin.000001',master_log_pos=106;
以上全部複製後修改並粘貼 show slave status \G;
在輸出的信息中:
Slave_IO_Running: No Slave_SQL_Running: No
需要使其值爲Yes
start slave; show slave status \G;
錯誤:
2.設置從服務器B
在“從機”B上設置複製帳號
grant replication slave on *.* to 'root'@'%' identified by 'pwd';
flush privileges;
清空“從機”日誌:
show binary logs;
reset master;
show binary logs;
在原主服務器A上通過change master to命令修改設置,可以全部複製並粘貼:
change master to master_host='123.103.58.124', master_user='root', master_password='pwd', master_port=3306, master_log_file='master-b-bin.000001', master_log_pos=106;
先
show slave status \G;
看看
Slave_IO_Running: No Slave_SQL_Running: No
需要使其值爲Yes
start slave; show slave status \G;
應該有
Slave_IO_Running: Yes Slave_SQL_Running: Yes
設置完後重啓:service mysqld restart
如果數據不匹配
測試
show databases; create database a1; use a1; create table t1(id int auto_increment primary key,name varchar(30)); insert into t1(name) values('appBox1');
可以發現數據庫已同步,但2臺皆可寫。
下一節將實現讀寫分離。