天天看點

mysql主從複制(版本不一緻)

      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的話就成功了,趕緊去測試吧(在主伺服器建庫、建表、插入資料,然後去從伺服器檢視吧)

繼續閱讀