mysql主從複製-主庫已有數據

一、備份已有數據

1、備份主庫,及恢復到從庫

把主庫現有數據備份下來,再恢復到從庫,此時兩個主機的數據一致。
如果事先有數據的話,這步不能忘。

1)在主庫上加鎖,使只有只讀權限。

mysql > flush table with read lock;

2)記住就是這個點備份的。

在這裏插入圖片描述

3)備份數據。

root@bogon ~]# mysqldump -uroot -p --all-databases|gzip > dump.sql.gz

4)解鎖庫(備份完成之後執行此步驟)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

5)恢復到從庫

mysql> source /home/admin/dump.sql;

由於數據量非常大,所以這步執行非常耗時。

二、mysql搭建一主一從

在59和89上都安裝上mysql再進行以下操作.

主從原理圖:
在這裏插入圖片描述

1.59爲主,給89授權

grant replication slave on *.* to 'root'@'192.168.22.89 ' identified by 'root';

參數說明:
用戶名:root
密碼:root
意思是:允許192.168.22.89使用用戶名爲root,密碼爲root訪問59

2.開啓59的binarylog

打開my.cnf配置文件,添加一下配置:
使用命令編輯my.cnf這個配置文件: vi /etc/my.cnf
在這裏插入圖片描述

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=59
log-bin=mysql-bin
expire_logs_days= 7
# binlog每個日誌文件大小
max_binlog_size= 100m                
# binlog緩存大小
binlog_cache_size= 4m     
# 最大binlog緩存大小
max_binlog_cache_size= 512m  
# 不寫這句意思是默認同步所有數據庫         
binlog-do-db=401_itoo

3.設置89的my.cnf文件

在這裏插入圖片描述

log-bin=mysql-bin
binlog_format=mixed
server-id=89
# 下面這句不寫意思是默認爲所有數據庫
replicate-do-db=401_itoo

4.查看59的binary日誌位置,配置89的時候需要用到

連接上mysql,使用命令查看binary

show master status\G

在這裏插入圖片描述

File:日誌名稱
Position:日誌偏移量
Binlog_Do_DB:記錄日誌的庫

5.開啓89的同步

在89上執行以下命令:
在這裏插入圖片描述

HOST: 主節點ip
USER: 59授權給89的用戶名
PASSWORD: 授權給89的密碼
MASTER_LOG_FILE: 59的日誌名稱
MASTER_LOG_POS: 日誌偏移量,需要和59的一樣

6.查看89的slave線程是否開啓

在這裏插入圖片描述

Slave_IO_Running爲讀取master的binaryLog的線程
Slave_SQL_Running爲執行SQL的線程
(這兩個線程必須都爲YES纔可以實現主從複製)
Seconds_Behind_Master 表示: slave的SQL線程與I/O線程的時間差。

它的作用:
通過監控 show slave status\G 命令輸出的 Seconds_Behind_Master 參數的值來判斷,是否有發生主從延時。其值有這麼幾種:

NULL — 表示io_thread或是 sql_thread 有任何一個發生故障,也就是該線程的 Running 狀態是 No,而非 Yes。

0 — 該值爲零,是我們極爲渴望看到的情況,表示主從複製良好,可以認爲 lag 不存在。

正值 — 表示主從已經出現延時,數字越大表示從庫落後主庫越多。

負值 — 幾乎很少見,這是一個BUG值,該參數是不支持負值的,也就是不應該出現。

到此主從複製就搭建完了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章