MYSQL5.7主從複製

windows上mysql做master,linux上mysql做slave,mysql版本是5.7.18;windows的ip爲192.168.0.4,linux的ip爲192.168.0.223


1、master上開啓binlog日誌

    在mysql的home目錄找到my.ini文件(沒有則新建),配置上如下內容

[mysqld]
# set basedir to your installation path
basedir=D:\\mysql-5.7.18
# set datadir to the location of your data directory
datadir=D:\\mysql-5.7.18\\data
port = 3306


log-bin           = mysql-bin  #[必須]啓用二進制日誌
server-id         = 4          #[必須]服務器唯一ID,默認是1,最好取ip的後3位
expire-logs-days  = 7           #只保留7天的二進制日誌,以防磁盤被日誌佔滿
binlog-ignore-db  = mysql       #不備份的數據庫
binlog-ignore-db  = information_schema
binlog-ignore-db  = performation_schema
binlog-ignore-db  = sys
binlog-do-db=mybatis #需要做複製的數據庫名

    測試log_bin是否成功開啓

    mysql> show variables like '%log_bin%';

    出現下圖,log_bin爲ON則表示開啓成功,OFF表示開啓失敗

       

2、master的數據庫中建立備份賬號

    backup爲用戶名,%表示任何遠程地址,如下表示密碼爲1234的任何遠程地址的backup都可以連接master主機

 mysql> grant replication slave on *.* to 'backup'@'%' identified by '1234';

 mysql> use mysql

 mysql> select user,authentication_string,host from user;

 可看到我們剛創建的備份賬號:

  

3、拷貝數據

    重啓MySQL服務並設置讀取鎖定

    net stop MySQL

 net start MySQL

 登錄mysql

    mysql> flush tables with read lock;

 讀取鎖定的意思是隻能讀取,不能更新,以便獲得一個一致性的快照

 查看主服務器上當前的二進制日誌名和偏移量值   

 mysql> show master status \G

    

 複製的過程如下:

    

 File表示實現複製功能的日誌,即上圖中的Binary log;Position則表示binlog日誌文件的偏移量之後的都會同步到slave中,那麼在偏移量之前的則需要我們手動導入

    從master導出數據,然後導入到slave中

    另外開一個命令窗口,用mysqldump命令進行數據的導出

    

 將d:\a.txt拷貝到slave上,然後導入到mysql數據庫中,slave上的mybatis數據庫不存在則先創建,然後再導入

    

 導出是mysqldump,導入是mysql

4、配置slave(192.168.0.223)

    slave是linux環境,mysql的配置文件是/etc/my.cnf,不存在則新建,配上如下內容

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=3306

log-bin=mysql-bin
server-id=223

    重啓slave數據庫

    # service mysqld restart

    登錄slave數據庫,並做如下設置

    mysql> stop slave;

    mysql> change master to

    master_host='192.168.0.4',

    master_user='backup',

    master_password='1234',

    master_log_file='mysql-bin.000005',

    master_log_pos=601;

    各個參數含義:

    master_host 實現複製的主機的IP地址

    master_user 實現複製的遠程登錄master的mysql的用戶,在步驟2有設置

    master_password 實現複製的遠程登錄master的mysql的面,在步驟2有設置

    master_log_file 實現複製的binlog日誌文件 在步驟3標紅的框框中

    master_log_pos 實現複製的binlog日誌文件的偏移量 在步驟3標紅的框框中

    mysql> start slave;

    查看slave從機的狀態

    mysql> show slave status \G

    

    若圖中標記的那兩項的值爲Yes,則表示slave設置成功

    5、關閉掉主數據庫的讀取鎖定

    mysql> unlock tables;

    6、測試

    前面沒出問題的話,那麼master上的mybatis數據的操作都會同步到slave的mybatis上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章