一情妖、理論篇
1、企業(yè)中單臺MySQL問題
1)單點故障
2)服務不可用無法處理大量的高并發(fā)數據請求
3)數據丟是沒有辦法恢復
4)數據丟失導致前端無法正常工作
解決辦法
1电爹、增加MySQL數據庫服務器料睛,對數據進行備份摇邦,形成主備
2屎勘、確保準備的MySQL數據庫服務器是一樣的
3、主服務器宕機丑慎,備份服務器繼續(xù)工作瓤摧,數據有保證
MySQL主從復制與讀寫分離是密切相關的
讀寫分離是基于主從復制來實現的
二、主從服務器工作原理
MySQL主從復制的類型:
1)基于語句的復制
2)基于行的復制
3)混合類型的復制
工作步驟:
1照弥、MySQL從服務器開啟I/O線程,項主服務器請求數據同步(獲取主服務器上的二進制日志)
2捂掰、MySQL主服務器開啟I/O線程回應從服務器
3曾沈、從服務器得到主的二進制日志寫入中繼日志中
4、從服務器開啟SQL線程將二進制日志內容執(zhí)行塞俱,實現數據同步障涯。
實驗一、使用三臺服務器器唯蝶,一臺主兩臺從
mysql-master192.168.11.102
MySQL-slave1192.168.11.103
mysql-slave2192.168.11.106
一、首先在主MySQL上安裝時間同步工具ntp
1鼓蜒、yum -y install ntp
2征字、編輯/etc/ntp.conf配置文件
vim/etc/ntp.conf
添加下面兩句
server127.127.1.0
fudge127.127.1.0 startum 8
sed -n '25,28p' /etc/ntp.conf查看
3、重啟ntp服務
service ntp restart?
4匙姜、在兩臺從MySQL上安裝ntpdate工具
yum -y install ntpdate
1、在兩臺從服務器上輸入ntpd +主MySQL的IP地址
ntpdate 192.168.11.102將自己的時間同步到主MySQL上
2框杜、多刷新幾次后發(fā)現時間差越來越小
因為時間在前行的時候會有偏差。所以時間同步命令要不時的去執(zhí)行。所以就要設置一個周期性計劃任務來解決
這樣三臺服務器的時間就是同步的了
二昭伸、安裝MySQL服務
在主MySQL上配置
1、cp /usr/share/doc/mysql-server-5.1.71/my-medium.cnf
/etc/my.cnf
vim /etc/my.conf
【mysqld】中
添加log-slave-updates=true
修改server-id= 11
2选调、重啟MySQL
如果遇到這個錯誤就是說明你只裝了服務端而沒有主客戶端
3灵份、在主上給從服務器授權
grant replication slave on *.* to
'mysqlslave'@'192.168.11.%' identified b y '123123';
flush privileges;
4、查看授權表:mysql> show
master status;
三弦聂、編輯從服務器兩臺配置一樣氛什,但是server-id的數字不能一樣
1、修改配置文件指定從日志索引
[root@localhost ~]# vim /etc/my.conf
添加
relay-log=relay-log-bin
relay-log-index=salve-relay-bin.index
修改server-id= 12
2枪眉、重啟
/etc/init.d/mysqld restart
3贸铜、登陸MySQL授權
mysql -uroot -p123123
change
master to master_host='192.168.11.102',master_user='myslave',master_password='123123'
,master_log_file='mysql-bin.000003',master_log_pos=550;
start slave;
show slave status\G;
在主MySQL上創(chuàng)建一個庫
查看從服務器,操作是否同步蒿秦。