一、備份已有數據
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值,該參數是不支持負值的,也就是不應該出現。
到此主從複製就搭建完了。