17mysql復(fù)制
=================
使用mysql復(fù)制的好處
避免主庫故障后無法對(duì)外提供服務(wù)
避免主庫備份時(shí)的鎖定,同步后備份再叢庫上進(jìn)行
保持多份數(shù)據(jù)副本,避免丟失數(shù)據(jù)
叢庫提供讀功能,分散主庫壓力
基本原理:
主庫叢庫經(jīng)過初始化保證數(shù)據(jù)相同后主庫通過二進(jìn)制日志保持對(duì)數(shù)據(jù)庫變化的跟蹤
從庫根據(jù)相同的日志重演主庫中數(shù)據(jù)的變化
---------
配置:
第一步:
授權(quán)從庫可以連接主庫并進(jìn)行更新
這個(gè)可以在主庫上進(jìn)行,方法是創(chuàng)建一個(gè)從庫的賬戶也可以使用grant replication
grant replication slave on *.* to repadmin@slave identified by 'xxxxx';
第二步:
從主庫復(fù)制到從庫,實(shí)際上就是初始化,保證兩邊一致
第三步:
配置主庫,給主庫一個(gè)復(fù)制id編號(hào),主從的id號(hào)都必須是唯一的
同時(shí)需要設(shè)定主庫使用二進(jìn)制日志文件
server-id=1
log-bin=binary_log
第四步:
關(guān)機(jī)并重啟主庫,使新的設(shè)置生效
第五步:
登錄從庫,給定從庫一個(gè)復(fù)制id編號(hào)并修改其他參數(shù)
server-id=2
master-host=master
master-user=repadmin
master-password=xxxxx
第六步:
修改完從庫后重啟從庫和服務(wù)器,使其生效
從庫將在數(shù)據(jù)目錄中創(chuàng)建master.info文件,記錄有關(guān)復(fù)制的信息
-------------
管理復(fù)制過程
change master命令
change master to
master_host='master_name',
master_user='slave_name',
master_password='slave_password',
master_port='prot_number',
master_log_file='binlog_filename',
master_connect_rettry='value',
relay_log_file='relaylog_filename',
relay_log_pos='value';
各個(gè)參數(shù)含義:
master_host 主服務(wù)器主機(jī)名
master_user 連接主服務(wù)器時(shí)使用的用戶名
master_password 連接主庫使用的密碼
master_port 連接主庫使用的端口
master_log_file 復(fù)制開始時(shí)讀取的主庫的二進(jìn)制日志文件名
master_log_pos 復(fù)制開始時(shí)讀取的主庫的二進(jìn)制日志文件的位置
master_connect_rettry 連接操作之間等待的秒數(shù)
relay_log_file 開始復(fù)制時(shí)執(zhí)行的從庫中繼日志名
relay_log_pos= 開始復(fù)制時(shí)執(zhí)行的從庫中繼日志位置
--------
purge master命令
刪除主庫上的熱進(jìn)制日志
purge master logs to binary-log
purge master logs before date
例:
mysql>purge master logs to bin_log.999;
mysql>purge master logs to now();
-------
start slave命令
開始恢復(fù)復(fù)制
show slave status可以監(jiān)督從庫的活動(dòng)
---------
stop slave命令
終止或者結(jié)束復(fù)制
show slave status提供的信息
connect_regry 試圖連接主庫的次數(shù)
read_master_log_pos 主庫二進(jìn)制日志的位置
relay_log_file 當(dāng)前中繼日志文件
relay_log_pos 當(dāng)前中繼日志文件位置
relay_log_space 所有中繼文件的大小
----------
show slave hosts命令
server_id 從庫的復(fù)制id
master_id 主庫的復(fù)制id
host 從庫的主機(jī)名
port 從庫的連接端口
----------
show processlist
state 包含有關(guān)服務(wù)器正在處理內(nèi)容的信息
db 線程數(shù)據(jù)庫
command 線程執(zhí)行的當(dāng)前語句
time 線程執(zhí)行的時(shí)間
----------
load data from master
從庫從主庫中獲取數(shù)據(jù)
但是有有些限制,
-----------
show binlog events
顯示日志事件
log_name 二進(jìn)制文件名
pos 日志中事件的位置
event_type 事件類型
------------
show master status
file 二進(jìn)制更新日志文件名
position 在主庫正在寫的二進(jìn)制日志中的當(dāng)前位置
binlog_do_db 二進(jìn)制更新日志中記錄的數(shù)據(jù)庫列表
binlog_ignore_db 二進(jìn)制更新日志中忽略和沒有記錄的數(shù)據(jù)庫列表