mysql實現主從備份


mysql 主從備份的原理:

主服務器在做數據庫操作的時候將所有的操作通過日志記錄在binlog里面,有專門的文件存放。如localhost-bin.000003,這種,從服務器 和主服務配置好關系后,通過I/O線程獲取到這個binlog文件然后寫入到從服務器的relaylog(中繼日志)中,然后從服務器執行從服務器中的sql語句進行數據庫的同步。

實現:

准備:兩台服務器,mysql環境,可以是Windows,Linux,下面是兩台Linux服務器,192.168.3.32(主),192.168.3.31(從)。

1. 配置主服務器上mysql的配置文件,配置文件在/etc/my.cnf
log_bin放開注釋
server-id=1 新增
2. 重啟數據庫
systemctl start mysqld
3. 創建復制用戶並賦權限給從服務器 把主服務的所有東西。

grant replication slave on *.* to 'slave'@'192.168.3.31' identified by 'Pangolin123!';

注:‘slave’是復制數據的用戶名,'Pangolin123!'是密碼。192.168.3.31 可以改成%,表示所有的從服務器都可以。不做限制。
4. 更新權限

flush privileges; 
5. 在從服務器上進行配置數據庫
server-id=2 
6. 重啟數據庫
systemctl start mysqld
7. 在從服務器上進行從數據庫的復制數據的配置

首先登錄 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 這個東西需要自己找,在mysql的安裝目錄 /var/lib/mysql下面

start slave;

show slave status \G;

查看是否正常:

這兩個Yes表示正常。

8. 測試。

9. 錯誤總結:

錯誤1:從服務器 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的生成。

錯誤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'

解決方案:在主服務器上進行日志刷新

mysql -uroot -p

flush logs;

show master status;

顯示這個,

然后到從服務器上重新配置binlog文件。

stop slave;

CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000003',MASTER_LOG_POS=322;

start slave;

show slave status \G;

錯誤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.'

是由於配置錯了binlog文件的開始位置。參考錯誤2 重新配置即可。

 

主從配置已完,下篇是springboot項目怎么配置讀寫分離。 

敬請期待。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM