主從復制
主從復制(Master-Slave Replication)在主從復制中,一個數(shù)據(jù)庫被指定為主數(shù)據(jù)庫(Master),而其他數(shù)據(jù)庫則被指定為從數(shù)據(jù)庫(Slave)轴捎。主數(shù)據(jù)庫接收客戶端的寫請求,將寫操作記錄到二進制日志(Binary Log)中糙捺,并將寫操作同步到從數(shù)據(jù)庫浓镜。從數(shù)據(jù)庫定期連接主數(shù)據(jù)庫,從主數(shù)據(jù)庫的二進制日志中讀取寫操作食零,并將這些操作應用到從數(shù)據(jù)庫中滑废,從而保證從數(shù)據(jù)庫與主數(shù)據(jù)庫的數(shù)據(jù)一致性蝗肪。
以下是主從復制的基本工作流程:
在主數(shù)據(jù)庫上啟用二進制日志(Binary Logging)功能,這將記錄所有的寫操作蠕趁。
配置從數(shù)據(jù)庫以連接到主數(shù)據(jù)庫薛闪,并將主數(shù)據(jù)庫的二進制日志復制到從數(shù)據(jù)庫。
從數(shù)據(jù)庫將主數(shù)據(jù)庫的二進制日志中的寫操作應用到自己的數(shù)據(jù)庫中妻导。
主從復制的優(yōu)點包括:
提高數(shù)據(jù)庫的可用性:當主數(shù)據(jù)庫發(fā)生故障時逛绵,可以快速切換到從數(shù)據(jù)庫,從而避免數(shù)據(jù)不可用的情況倔韭。
提高數(shù)據(jù)庫的性能:可以將讀操作分散到多個從數(shù)據(jù)庫上术浪,從而提高數(shù)據(jù)庫的讀性能。
數(shù)據(jù)備份和災難恢復:可以使用從數(shù)據(jù)庫進行數(shù)據(jù)備份寿酌,并在主數(shù)據(jù)庫發(fā)生故障時快速恢復數(shù)據(jù)胰苏。
主從復制的缺點包括:
數(shù)據(jù)同步延遲:從數(shù)據(jù)庫的數(shù)據(jù)更新可能會有一定的延遲,這可能會導致數(shù)據(jù)不一致的情況醇疼。
單點故障:主數(shù)據(jù)庫仍然是一個單點故障硕并,如果主數(shù)據(jù)庫發(fā)生故障,整個系統(tǒng)可能會受到影響秧荆。
配置和管理復雜度:配置和管理主從復制系統(tǒng)可能會比較復雜倔毙,需要一定的專業(yè)知識和經驗。
步驟
1.至少兩個實例
2.不同的server_id
3.主庫需要開啟二進制日志
4.主庫授權一個專用賬號
grant replication slave on *.* to repl@'%' identified by 'songjianjiang123';
5乙濒,主庫數(shù)據(jù)備份
主庫:mysqldump -uroot -psongjianjiang123 -A -E -R --triggers --master-data=2 --single-transaction > /data/backup/t_full.sql
從庫:set sql_log_bin=0
6陕赃,開啟專用復制線程
##告訴從庫復制信息
CHANGE MASTER TO
MASTER_HOST='10.0.0.51',
MASTER_USER='repl',
MASTER_PASSWORD='songjianjiang123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=14988,
MASTER_CONNECT_RETRY=10;
開啟線程
start slave;
##寫錯了
先stop slave
reset slave all;
##查看從庫狀態(tài)
show slave status\G
主從復制監(jiān)控及故障處理
#查看主庫線程
show processlist;
mysql> show processlist;
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
| 9 | song | 10.0.0.1:6601 | schools | Sleep | 168 | | NULL |
| 10 | song | 10.0.0.1:9705 | schools | Sleep | 4722 | | NULL |
| 13 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 22 | repl | 10.0.0.41:40804 | NULL | Binlog Dump | 256 | Master has sent all binlog to slave; waiting for more updates | NULL |
+----+------+-----------------+---------+-------------+------+---------------------------------------------------------------+------------------+
#從庫
從庫延時 3-6小時