環境說明
????????centos7.3、mysql5.7
前言
????????MySQL安裝參考之前的文章https://www.jianshu.com/p/452aa99c7476有講解。
基本概念
????????MySQL 內建的復制功能是構建大型,高性能應用程序的基礎。將 MySQL 的 數億分布到到多個系統上去,這種分布的機制,是通過將 MySQL 的某一臺主機的數據復制到其它主機( Slave )上,并重新執行一遍來實現的。復制過程中一個服務器充當服務器,而一個或多個其它服務器充當從服務器。主服務器將更新寫入二進制日志,并維護文件的一個索引以跟蹤日志循環。這些日志可以記錄發送到從服務器的更新。當一個從服務器連接主服務器時,它通知主服務器從服務器在日志中讀取的最后一次成功更新的位置,從服務器接收從那時起發生的任何更新,然后封鎖等等主服務器通知新的更新。請注意當你進行復制時,所有對復制中的表的更新必須在主服務器上進行。否則,你必須要小心,以避免用戶對主服務器上的表進行的更新與對服務器上的表所進行的更新之間的沖突
主從復制實現
一、修改主(master)服務器
????????如果是按照我寫的文章安裝的MySQL,那么my.cnf配置文件在/etc/目錄下。如果不在,可以通過whereis命令搜索下 ????????在my.cnf配置文件下添加如下配置
server_id=1 #指定MySQL的id log-bin=mysql-bin #開啟二進制日志文件
????????二、創建復制賬號
????????在主服務器中執行該命令(這里允許了所有的地址訪問,建議設置成從服務器的地址)
GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Abc123...';
????????三、修改從(slave)服務器
server_id=2 log-bin=mysql-bin binlog_do_db=db_test#表示要同步的數據庫
說明: binlog-ignore-db=test 表示不同步 test 數據庫 binlog_do_db=db_test#表示要同步的數據庫
????????四、重啟MySQL
主服務器和從服務器都重啟
service mysqld restart
????????五、查看主服務器狀態
show master status
結果如下:
這里有些信息需要記錄下來,在配置從服務器時候需要用到 #????????六、配置從服務器(連接 Master 服務器)
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記錄需要開始同步的位置。 #????????七、開始復制 在從服務器中執行
start slave
停止的命令是:stop slave; #????????八、查看從服務器狀態
show slave statusG;
上圖圈起來的兩個結果為yes表示主從復制配置成功了。 如果配置失敗,可以去MySQL的日志文件中查看失敗信息,也可以通過上述命令查看一個簡要的錯誤信息:
這是我剛剛配置主從服務器時報的錯,主要原因是MySQL服務器的server的UUID沖突了,原因是我的從服務器是從主服務器上復制過去的。到/var/lib/mysql/auto.cnf上修改即可。 #驗證主從結果 現在的狀態:
下面新建一個表,看看是否可以同步過去:#查看從服務器
可以看到已經同步過去了同步過去
更多MySQL相關技術文章,請訪問MySQL教程欄目進行學習!