### Mysql-replication(主從復(fù)制)
概念:主從復(fù)制AB復(fù)制碱妆,允許將來自一個(gè)Mysql數(shù)據(jù)庫服務(wù)器(主服務(wù)器)的數(shù)據(jù)復(fù)制到一個(gè)或多個(gè)Mysql數(shù)據(jù)庫服務(wù)器(從服務(wù)器)
根據(jù)配置,您可以復(fù)制數(shù)據(jù)庫中的所有數(shù)據(jù)庫需频,所選數(shù)據(jù)庫甚至選定的表
Mysql主從復(fù)制優(yōu)點(diǎn):
1.橫向策略,可以添加多臺(tái)從服務(wù)器。主服務(wù)器負(fù)責(zé)寫入和更新。從服務(wù)器復(fù)制冶匹,提高讀取速度。
2.數(shù)據(jù)安全咆瘟。主服務(wù)器宕機(jī)嚼隘,從服務(wù)器可頂替主服務(wù)器繼續(xù)工作
3.分析數(shù)據(jù)
4.備份,減輕主服務(wù)器壓力
*Replication原理:*
主服務(wù)器上邊的任何修改都會(huì)保存在二進(jìn)制日志(Bin-log)日志里面*
*從服務(wù)器上面啟動(dòng)一個(gè)I/O線程搞疗,連接到主服務(wù)器上面請(qǐng)求讀取二進(jìn)制日志嗓蘑,將讀取的二進(jìn)制日志寫在本地的Realy-log(中繼日志)里面。*
*開啟SQL線程匿乃,讀取中繼日志Realy-log,發(fā)現(xiàn)有更新立即把更新內(nèi)容在本機(jī)的數(shù)據(jù)庫上邊執(zhí)行一遍*
執(zhí)行步驟:
1.在主從服務(wù)器上進(jìn)行解析:
例:主服務(wù)器: 192.168.1.2? mysql-master
? ? ? ? 從服務(wù)器: 192.168.1.3? mysql-slave
分別加入到兩臺(tái)服務(wù)器的解析中:
vim /etc/hosts
192.168.1.2? mysql-master
192.168.1.3? mysql-slave
2.開啟主服務(wù)器二進(jìn)制日志并配置唯一的服務(wù)器ID:指定日志位置并授予權(quán)限桩皿,重啟主服務(wù)器數(shù)據(jù)庫服務(wù)
vim /etc/my.cnf
[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
mkdir /var/log/mysql/
chown mysql.mysq /var/log/mysql
systemctl restart mysqld
從服務(wù)器:開啟server-id =2
3.主服務(wù)器:創(chuàng)建用戶授予復(fù)制的權(quán)限
grant replication slave on? ? * . *? to? 'repl'@'%'? identified by '123'
4.從服務(wù)器進(jìn)行測(cè)試:
mysql -urepl -p'123'? -h mysql-master
5.主服務(wù)器查看:? show master status \G;
6.從服務(wù)器執(zhí)行:
[root@mysql-slave1 ~]# mysql -uroot -p'dY3K2((y/hhk'
mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master',?
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=681;
#MASTER_HOST: 主服務(wù)器的主機(jī)名或者是ip地址
#MASTER_USER: 主服務(wù)器的用戶名,我們?cè)O(shè)置的是repl
#MASTER_PASSWORD: 密碼
#MASTER_LOG_FILE:日志文件是哪個(gè)
#MASTER_LOG_POS:日志的位置
mysql> start slave;? # 主服務(wù)器不需要啟動(dòng)
mysql> show slave status\G # 均為yes即可
? ? ? ? ? ? Slave_IO_Running: Yes
? ? ? ? ? ? Slave_SQL_Running: Yes