1. 程式人生 > >mysql實現主從

mysql實現主從

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;