mysql主從複制要求版本最好一緻,至少前兩個版本号相同,因為官方推薦這樣,最主要還是怕版本不一緻帶來的不相容問題;最近剛好在學習mysql主從複制,我已經有了兩台伺服器,但是mysql版本并不一緻,但是既然版本不一緻有可能導緻不相容,那麼我就讓低版本作為主master,高版本作為從slave。一台伺服器為虛拟機centos7,IP位址為192.168.84.23,安裝的mysql版本為5.5.56;另一台伺服器為win7(即本機),IP位址為192.168.84.15,安裝的mysql版本為5.6.26.
1.修改主伺服器上的mysql配置檔案my.cnf, #vi /etc/my.cnf
(1)主要設定這三個參數:
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id =23(這裡23即IP位址最後位,一般這樣設定,隻要獨一無二即可)
這裡有一個問題就是有的人進入my.cnf檔案找不到“# Replication Master Server (default) # binary logging is required for replication”這樣的描述,原因是你當時安裝mysql的時候,在mysql檔案下的support-files檔案夾下拷貝配置檔案到/etc/my.cnf時,你也許選擇了拷貝mysql-small.cnf這個檔案,當然檔案夾下還有mysql-medium.cnf、mysql-large.cnf、mysql-huge.cnf等等;如果你找不到那樣的描述符,就換一個把mysql-medium.cnf拷貝到/etc/下,并重命名為my.cnf,就可以看到那些描述了
設定完那三項參數後,儲存退出,重新開機mysql服務。
(2)接下來從伺服器也要設定那些參數,這裡也有一個問題,由于從伺服器是win7,我用的mysql是解壓版,根目錄下有一個配置檔案my-default.ini,我們必須重新複制一份,并重命名為my.ini,如果不建立一份用原來預設的話,操作時就會報下面的錯:
ERROR 1794 (HY000): Slave is not configuredor failed to initialize properly. You must at least set --server-id to enableeither a master or a slave. Additional error messages can be found in the MySQLerror log.
建立好後,就可以修改下面參數:
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin=mysql-bin
binlog_format=mixed
# These are commonly set, remove the # and set as required.
basedir = D:\mysql\mysql-5.6.26-winx64
datadir = D:\mysql\mysql-5.6.26-winx64\data
# port = .....
server_id = 15
改完後儲存退出,重新開機mysql服務,cmd指令行#net stop mysql關閉服務,然後#net start mysql啟動服務;一定要管理者權限運作cmd哦
2.在主庫建立從庫使用者
進入主伺服器的mysql界面,指令: # mysql -u root -p 123456 //我這裡mysql賬号是root,密碼是123456
在mysql操作界面下,輸入下面幾行指令:
mysql> insert into mysql.user(Host,User,Password) values('localhost','slaveuser',password('123456'));
mysql>flush privileges;
mysql>grant replication slave on *.* to 'slaveuser'@'192.168.84.15' identified by '123456' with grant option;
3.檢視主伺服器BIN日志的資訊(執行完之後記錄下這兩值,然後在配置完從伺服器之前不要對主伺服器進行任何操作,因為每次操作資料庫時這兩值會發生改變).
mysql>show master status; 會顯示mysql-bin.000004 和 107 ,你的可能跟我的不一樣,并且每次都會變化,要記住這兩個值
4進入從伺服器mysql
指令: # mysql -u root -p 123456
關閉slave(如果你不知道以前有沒有配置過主從,都先關閉)
指令:stop slave;
然後輸入如下語句:
mysql>CHANGE MASTER TO MASTER_HOST="172.20.84.23",MASTER_USER="slaveuser",MASTER_PASSWORD="123456",
MASTER_LOG_FILE="mysql-bin.000004",MASTER_LOG_POS=107;
執行成功後,啟動slave #start slave;
5.輸入#show slave status\G;(注意這裡最後加了\G輸出一目了然,不加的話字段太多,排版都亂了)
檢視是否配置成功,如果Slave_IO_Running和Slave_SQL_Running都為yes的話就成功了,趕緊去測試吧(在主伺服器建庫、建表、插入資料,然後去從伺服器檢視吧)