服務(wù)器:主服務(wù)器ip 172.31.242.249 、從服務(wù)器ip 172.31.242.250 兩臺服務(wù)器的MySQL版本保持一致
原理:MySQL要做到主從復(fù)制,其實依靠的是二進(jìn)制日志,即:假設(shè)主服務(wù)器叫A,從服務(wù)器叫B;主從復(fù)制就是 B跟著A學(xué),A做什么,B就做什么。那么B怎么同步A的動作呢?現(xiàn)在A有一個日志功能,把自己所做的增刪改查的動作全都記錄在日志中,B只需要拿到這份日志,照著日志上面的動作施加到自己身上就可以了。
1、首先修改mysql的配置文件,使其支持二進(jìn)制日志功能
打開主服務(wù)器的mysql配置文件:my.conf
vi /etc/my.cnf
加入如下三行代碼:
#將mysql二進(jìn)制日志取名為mysql-bin
log-bin=/var/lib/mysql/bin-log/mysql-bin
#二進(jìn)制日志的格式,有三種:statement/row/mixed,具體分別不多做解釋,這里使用mixed
binlog_format=mixed
#為服務(wù)器設(shè)置一個獨一無二的id便于區(qū)分,這里使用ip地址的最后一位充當(dāng)server-id
server-id=249
配置完成 :wq 保存,重啟MySQL
systemctl restart mysqld.serivce
同樣的,進(jìn)入從服務(wù)器,配置從服務(wù)器的my.cnf,重復(fù)步驟1即可。
唯一的區(qū)別是,server-id要改成從服務(wù)器的ip尾位,即server-id=250;其他兩項是一樣的,保存,并重啟MySQL;
2、在主服務(wù)器上為從服務(wù)器分配一個賬號
進(jìn)入主服務(wù)器的mysql界面,
mysql -u root -proot #我這里mysql賬號是root,密碼是root
在mysql操作界面下,輸入下面一行命令:
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY 'root';
3、查看主服務(wù)器BIN日志的信息
進(jìn)入主服務(wù)器的mysql界面,
show master status #記錄下file、position這兩個值
進(jìn)入從服務(wù)器mysql
mysql -u root -proot
關(guān)閉slave(如果你以前配置過主從的話,一定要先關(guān)閉)
stop slave;
4、開始配置主從同步
從服務(wù)器MySQL命令行下輸入下面代碼即可:
CHANGE MASTER TO
MASTER_HOST="172.31.242.249",
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin00001", #show master status 中的file值
MASTER_LOG_POS=250; #show master status 中的position值
備注:
MASTER_HOST : 設(shè)置要連接的主服務(wù)器的ip地址
MASTER_USER : 設(shè)置要連接的主服務(wù)器的用戶名
MASTER_PASSWORD : 設(shè)置要連接的主服務(wù)器的密碼
MASTER_LOG_FILE : 設(shè)置要連接的主服務(wù)器的bin日志的日志名稱,即第3步得到的信息
MASTER_LOG_POS : 設(shè)置要連接的主服務(wù)器的bin日志的記錄位置,即第3步得到的信息(這里注意,最后一項不需要加引號。)
啟動從服務(wù)器開始復(fù)制:
start slave;
5、查看是否配置成功
show slave status \G #\G可以讓執(zhí)行結(jié)果格式化,代替;號是個不錯的選擇

Slave_IO_Running、Slave_SQL_Running均為Yes代表成功
特別強(qiáng)調(diào)。
MySQL的主從復(fù)制無法保證100%永遠(yuǎn)不出問題,主從一旦斷開,程序無法及時發(fā)現(xiàn)將是巨大災(zāi)難,強(qiáng)烈建議各位程序員對從服務(wù)器加監(jiān)聽(死循環(huán)show slave status),一旦發(fā)現(xiàn)異常,直接將從切換至主,保證數(shù)據(jù)的一致性。