MySQL實現主從複製功能

環境說明

        centos7.三、MySQL5.7mysql

前言

        MySQL安裝參考以前的文章https://www.jianshu.com/p/452aa99c7476有講解。sql

基本概念

        MySQL 內建的複製功能是構建大型,高性能應用程序的基礎。將 MySQL 的 數億分佈到到多個系統上去,這種分佈的機制,是經過將 MySQL 的某一臺主機的數據複製到其它主機( Slave )上,並從新執行一遍來實現的。複製過程當中一個服務器充當服務器,而一個或多個其它服務器充當從服務器。主服務器將更新寫入二進制日誌,並維護文件的一個索引以跟蹤日誌循環。這些日誌能夠記錄發送到從服務器的更新。當一個從服務器鏈接主服務器時,它通知主服務器從服務器在日誌中讀取的最後一次成功更新的位置,從服務器接收從那時起發生的任何更新,而後封鎖等等主服務器通知新的更新。請注意當你進行復制時,全部對複製中的表的更新必須在主服務器上進行。不然,你必需要當心,以免用戶對主服務器上的表進行的更新與對服務器上的表所進行的更新之間的衝突數據庫

主從複製實現

1、修改主(master)服務器

        若是是按照我寫的文章安裝的MySQL,那麼my.cnf配置文件在/etc/目錄下。若是不在,能夠經過whereis命令搜索下         在my.cnf配置文件下添加以下配置centos

server_id=1 #指定MySQL的id
log-bin=mysql-bin #開啓二進制日誌文件
複製代碼

        2、建立複製帳號

        在主服務器中執行該命令(這裏容許了全部的地址訪問,建議設置成從服務器的地址)bash

GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Abc123...';
複製代碼

        3、修改從(slave)服務器

server_id=2
log-bin=mysql-bin
binlog_do_db=db_test#表示要同步的數據庫
複製代碼

說明: binlog-ignore-db=test 表示不一樣步 test 數據庫 binlog_do_db=db_test#表示要同步的數據庫服務器

        4、重啓MySQL

主服務器和從服務器都重啓ide

service mysqld restart
複製代碼

        5、查看主服務器狀態

show master status
複製代碼

結果以下: 性能

這裏有些信息須要記錄下來,在配置從服務器時候須要用到 #        6、配置從服務器(鏈接 Master 服務器)ui

change master to master_host='192.168.74.129',master_user='replication',master_password='Abc123...',master_log_file='mysql-bin.000001',master_log_pos=2041;
複製代碼

master_host是主服務器的ip master_port=3306(這裏沒有配置,默認3306) master_user:Master 服務器受權用戶,也就是 Master 前面建立的那個用戶 master_password:Master 服務器受權用戶對應的密碼 master_log_file:Master binlog 文件名 master_log_pos:Master binlog 文件中的 Postion 值 關於position值,這裏作一個說明:若是主服務器已是有不少數據了的,那就先須要備份主服務器的數據到從服務器中,而後再使用命令show master status記錄須要開始同步的位置。 #        7、開始複製 在從服務器中執行centos7

start slave
複製代碼

中止的命令是:stop slave; #        8、查看從服務器狀態

show slave status\G;
複製代碼

結果
上圖圈起來的兩個結果爲yes表示主從複製配置成功了。 若是配置失敗,能夠去MySQL的日誌文件中查看失敗信息,也能夠經過上述命令查看一個簡要的錯誤信息:
錯誤信息
這是我剛剛配置主從服務器時報的錯,主要緣由是MySQL服務器的server的UUID衝突了,緣由是個人從服務器是從主服務器上覆制過去的。到/var/lib/mysql/auto.cnf上修改便可。 #驗證主從結果 如今的狀態:
下面新建一個表,看看是否能夠同步過去:
#查看從服務器
能夠看到已經同步過去了同步過去
相關文章
相關標籤/搜索