mysql 主從備份的原理:
主服務(wù)器在做數(shù)據(jù)庫(kù)操作的時(shí)候?qū)⑺械牟僮魍ㄟ^(guò)日志記錄在binlog里面,有專門的文件存放。如localhost-bin.000003,這種,從服務(wù)器 和主服務(wù)配置好關(guān)系后,通過(guò)I/O線程獲取到這個(gè)binlog文件然后寫入到從服務(wù)器的relaylog(中繼日志)中,然后從服務(wù)器執(zhí)行從服務(wù)器中的sql語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)的同步。
實(shí)現(xiàn):
準(zhǔn)備:兩臺(tái)服務(wù)器,mysql環(huán)境,可以是Windows,Linux,下面是兩臺(tái)Linux服務(wù)器,192.168.3.32(主),192.168.3.31(從)。
1. 配置主服務(wù)器上mysql的配置文件,配置文件在/etc/my.cnf
log_bin放開(kāi)注釋
server-id=1 新增
2. 重啟數(shù)據(jù)庫(kù)
systemctl start mysqld
3. 創(chuàng)建復(fù)制用戶并賦權(quán)限給從服務(wù)器 把主服務(wù)的所有東西。
grant replication slave on *.* to 'slave'@'192.168.3.31' identified by 'Pangolin123!';
注:‘slave’是復(fù)制數(shù)據(jù)的用戶名,'Pangolin123!'是密碼。192.168.3.31 可以改成%,表示所有的從服務(wù)器都可以。不做限制。
4. 更新權(quán)限
flush privileges;
5. 在從服務(wù)器上進(jìn)行配置數(shù)據(jù)庫(kù)
server-id=2
6. 重啟數(shù)據(jù)庫(kù)
systemctl start mysqld
7. 在從服務(wù)器上進(jìn)行從數(shù)據(jù)庫(kù)的復(fù)制數(shù)據(jù)的配置
首先登錄 mysql -uroot -p
stop slave;
change master to master_host='192.168.3.32', master_user='slave',
master_password='Pangolin123!',master_log_file='mysql-bin.000006',
master_log_pos=2060 ;
注:mysql-bin.000006 這個(gè)東西需要自己找,在mysql的安裝目錄 /var/lib/mysql下面
start slave;
show slave status \G;
查看是否正常:

這兩個(gè)Yes表示正常。
8. 測(cè)試。
9. 錯(cuò)誤總結(jié):
錯(cuò)誤1:從服務(wù)器 show slave status \G; 顯示
Slave_IO_Running:NO
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'
我解決的辦法是重啟一下就好了。
重啟之后再mysql的目錄下就可以看到
binlog的生成。
錯(cuò)誤2
Slave_IO_Running:NO
Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
解決方案:在主服務(wù)器上進(jìn)行日志刷新
mysql -uroot -p
flush logs;
show master status;

顯示這個(gè),
然后到從服務(wù)器上重新配置binlog文件。
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000003',MASTER_LOG_POS=322;
start slave;
show slave status \G;
錯(cuò)誤3:
Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master; the first event 'localhost-bin.000002' at 107, the last event read from './localhost-bin.000002' at 123, the last byte read from './localhost-bin.000002' at 126.'
是由于配置錯(cuò)了binlog文件的開(kāi)始位置。參考錯(cuò)誤2 重新配置即可。
主從配置已完,下篇是springboot項(xiàng)目怎么配置讀寫分離。
敬請(qǐng)期待。
浙公網(wǎng)安備 33010602011771號(hào)