mysql實現主從
阿新 • • 發佈:2018-12-18
1 登入主機,進入MYSQL
賦予從機許可權:
GRANT REPLICATION SLAVE ON *.* TO 'mysql使用者名稱'@'IP地址' IDENTIFIED BY '123123';
主機會在MYSQL資料庫中建立允許從機連線的賬戶密碼以及連線主機
2、 開啟主機A的my.cnf,輸入
##日誌配置
binlog_format = MIXED
expire_logs_days = 7
max_binlog_size = 100m
binlog_cache_size = 4m
max_binlog_cache_size = 512m
server-id=1 #主機標示,整數
log_bin=mysql-bin #確保此檔案可寫
read-only=0 #主機,讀寫都可以
binlog-do-db=test1 #需要備份資料,多個寫多行
binlog-ignore-db=mysql #不需要備份的資料庫,多個寫多行
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
log-slave-updates=1 #這個引數一定要加上,否則不會給更新的記錄些到二進位制檔案 裡
slave-skip-errors= all
3 將主機資料庫備份,匯入從機資料庫
4、開啟從機B的my.cnf,輸入
server-id = 2 log_bin = mysql-bin replicate-do-db =test #只複製某個庫 replicate-ignore-db=mysql #不復制某個庫 replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
進入從機資料庫,配置聽從主機:
change master to master_host='主機IP',master_user='主機建立的使用者名稱',master_password='密碼', master_log_file='mysql-bin.000001',master_log_pos=107;
#此處的master_log_pos檢視主機show master status \G狀態下的檔案偏移量Position
檢視主機狀態:
檢視從機狀態:
雙YES表示正常
常見問題:
mysql Slave_IO_Running:NO
解決方法:
mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98; #master_log_pos檢視主機show master status \G狀態下的Position
Slave_SQL_Running:No
一般是事務回滾造成的:
mysql> slave stop; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> slave start;