1. 程式人生 > >Mysql5.7在CentOS7上實現主從複製

Mysql5.7在CentOS7上實現主從複製

實現的原理

MySQL實現的機制

這裡寫圖片描述
(1) master將改變記錄到二進位制日誌(binary log)中(這些記錄叫做二進位制日誌事件,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日誌(relay log);
(3) slave重做中繼日誌中的事件,將改變反映它自己的資料。

具體實現

環境說明

MySQL5.7(無資料) + CentOS7
(兩組)

實現

1.主庫配置

#檢視資料庫狀態
systemctl status mysqld
#停伺服器
systemctl stop mysqld

#修改配置檔案
vi /etc/my.cnf #修改內容 [mysqld] server-id=1 log-bin=mysql-bin #解釋:server-id服務的唯一標識(主從之間都必須不同);log-bin啟動二進位制日誌名稱為mysql-bin #重啟 systemctl start mysqld #登入 mysql -uroot -p

2.在主庫中新新增一個從庫的賬號

#新增一個名稱為repl,賬號密碼為repl123456,允許登入的從庫ip為192.168.1.132的賬號(%為任意ip)
mysql> CREATE USER 'repl'@'192.168.1.132' IDENTIFIED BY 'repl123456'
; #題外話:如果提示密碼太簡單不復合策略加在前面加這句 mysql> set global validate_password_policy=0; #給從庫賬號授權 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.132'; #說明給repl一個從庫複製的許可權在這個192.168.1.132ip上 #檢視主庫的狀態 mysql> SHOW MASTER STATUS +------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 619 | | | | +------------------+----------+--------------+------------------+-------------------+ #記住:File是二進位制日誌檔名,Position 是日誌開始的位置。後面從庫會用到 後面從庫會用到 後面從庫會用到

3.從庫配置

#檢視資料庫狀態
systemctl status mysqld
#停伺服器
systemctl stop mysqld

#修改配置檔案
vi /etc/my.cnf
#修改的內容
[mysqld]
server-id=2

#重啟
systemctl start mysqld
#登入
mysql -uroot -p

#使用主庫授權的賬號
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.1.131',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='repl123456',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=619;
#說明:
#192.168.1.131:主庫主機ip
#repl:主庫授權的賬號
#repl123456:主庫授權賬號密碼
#mysql-bin.000001:主庫日誌檔名
#619:主庫日誌檔案位置

#重啟
systemctl reatart mysqld

4.測試

在主庫新增資料庫,表,資料
檢測從庫是不是有同樣操作。

主從相關命令

#檢視主庫狀態
Show master status

#檢視從庫狀態
Show slave status
#啟動從庫
stop slave;

關於從庫停機無法同步

問題描述

從庫停機修改配置,從起資料庫之後,出現無法同步主庫內容

#主庫狀態
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      619 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

#從庫狀態
mysql> show slave status\G 
...
Slave_IO_Running: Yes
Slave_SQL_Running: No
...
#正常情況下Slave_SQL_Running是Yes才對

解決方案

#停止主從
mysql> stop slave;
#設定
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
mysql> START SLAVE; 
#重新啟動主從,從庫斷開期間那部分丟失的資料會自動同步過來的

參考文章

相關推薦

Mysql5.7在CentOS7實現主從複製

實現的原理 MySQL實現的機制 (1) master將改變記錄到二進位制日誌(binary log)中(這些記錄叫做二進位制日誌事件,binary log events); (2)

在同一臺機器實現主從複製,多個mysql(windows)

最近在自學,看到了mysql的主從複製,覺得挺有意思的,就研究了下.無奈試了多種方法均以失敗告終,最後只好在同一臺機器上安裝多個mysql.試試主從複製. 一共試了三種方式,目前只成功了一種. 1.用雲伺服器坐從伺服器,本地的電腦做主伺服器

Linux安裝mysql,實現主從複製

MYSQL(mariadb) MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社群採用分支的方式來避開這個風險。MariaDB的目的是完全相容MySQL,包括API和

Centos7+Mysql5.7實現主從複製

一、Master主伺服器配置(192.168.30.201) 找到mysql配置檔案my.cnf在末尾加上: find / -name my.cnf log-bin=mysql-bin #slave會基於此log-bin來做replication

鎖機制與實現主從複製

鎖機制 因資源共享,而造成的併發問題。 例子: 買最後一件衣服, 商品加鎖 -》 流程 -》商品解鎖 鎖分類: 1、操作型別: ① 讀鎖(共享鎖) 多個讀同時進行,互不干擾 ②寫鎖(互斥鎖) 如果當前寫操作沒有完畢,則無法進行讀操作和寫操作 2、操作範圍 表鎖 myISAN一次性

MySQL實現主從複製過程

1、主從複製比DBS成本高 畢竟要準備一個和線上配置一樣的伺服器 以便於主伺服器被攻擊 隨時切換到從伺服器 實際上mysql的主從複製原理就是 mysql中有一個二進位制的binlog日誌檔案 當資料發生任何改變的同時 binlog檔案都會記錄一個sql語句 那麼從伺服

MySQL5.7.23,主從複製的使用

先確保兩件事情,1. 主從資料庫版本最好一致,以免出現莫名其妙的問題。 2. 主從資料庫之間網路聯通沒有問題。因為我是單配置檔案部署的MySQL多例項,所以不存在這兩個問題。 一、修改配置檔案。 主資料庫配置,新增以下資訊 #主從複製配置 server-id=1 #設

docker-compose編排專案redis容器實現主從複製

一.pip管理工具安裝   docker-compose是python專案,所以安裝需要通過python下的包管理工具pip安裝。一般linux伺服器都會預安裝有python環境,所以優先檢查python是否已經安裝,pip管理工具是否已經安裝    # wget https://bootst

MySQL基礎系列之 Windows主機搭建主從複製

1.首先要在本地建立2個MySQL服務(版本5.5),指定不同的埠。我這裡一個主(3306),一個從3308。 建立多個MySQL服務參考博文:https://blog.csdn.net/caiqing116/article/details/84899680 開門見山這裡先建立測試庫db

Docker安裝mysql5.7並且配置主從複製

轉載請表明出處 https://blog.csdn.net/Amor_Leo/article/details/85177001 謝謝 Docker安裝mysql5.7並且配置主從複製 拉取mysql映象 建立檔案docker.cnf

Centos7安裝mysql5.7並且配置主從複製

轉載請表明出處 https://blog.csdn.net/Amor_Leo/article/details/85161624 謝謝 Centos7安裝mysql5.7並且配置主從複製 安裝Mysql 清除Centos7的預設資料庫ma

Redis實現主從複製(Master&Slave)

         由於前段時間公司專案比較趕,一直抽不出時間寫部落格,今天偷空寫一篇吧。前面給大家講解了單機版redis的基本操作,現在繼續給大家講解一下Redis的進階部分,主從複製和讀寫分離。 一、Master&Slave是什麼?          也就是我們所

redis實現主從複製和高可用(主從切換)

當用單個redis伺服器壓力過大時,就要考慮redis主從複製了,主master複製寫入,從slave複製讀取 ,從而緩解伺服器壓力 接下來就配置一個reids的主從複製 127.0.0.1 :6379(主) 127.0.0.1 :6380(從) 127.0.

linuxmsyql主從複製gtid,主從全部重啟後(兩個no)

解決辦法: 1:先到主庫上檢視偏移量(Position) mysql> show master status; +------------------+----------+--------------+------------------+--------------------------

資料庫中介軟體MyCat(二)-mysql實現主從複製

前言:          我們考慮到一些大型的資料庫資料庫讀寫分離對於大型系統或者訪問量很高的網際網路應用來說,是必不可少的一個重要功能。從資料庫的角度來說,對於大多數應用來說,從集中到分佈,最基本的一個需求不是資料儲存的瓶頸,而是在於計算的

MariaDB實現主從複製

MySQL之父Widenius先生離開了Sun之後,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,於是決定另開分支,這個分支的名字叫做MariaDB。 MariaDB跟MySQL在絕大多數方面是相容的,對於開發者來說,幾乎感覺不到任何不同。目前Ma

MySQL基於binlog實現主從複製實現一主兩從

在移動網際網路開發中,為了減少資料庫單機的壓力、增加資料庫的併發訪問能力,同時大多數移動網際網路專案均是讀多寫少,鑑於此,將資料庫配置一主多從顯得尤為重要,下面我們將基於MySQL實現一主多從的配置。 準備工作 虛擬機器準備 準備裝有CentOS

使用Spring實現讀寫分離( MySQL實現主從複製

1.  背景 我們一般應用對資料庫而言都是“讀多寫少”,也就說對資料庫讀取資料的壓力比較大,有一個思路就是說採用資料庫叢集的方案, 其中一個是主庫,負責寫入資料,我們稱之為:寫庫; 其它都是從庫,負責讀取資料,我們稱之為:讀庫; 那麼,對我們的要求是: 1、讀庫和寫庫的資

搭建MySQL伺服器, 並實現主從複製

環境 主庫ip:192.168.253.128 從庫ip:192.168.253.140 系統:CentOS7 MySQL版本:5.6.39 第一步:安裝MySQL 這裡使用二進位制包方式安裝,二進位制包可以在官網下載 https://dev.mysql.com/download

Spring AOP 實現讀寫分離(MySQL實現主從複製

1、Mysql的主從複製      1.1 mysql主(稱master)從(稱slave)複製的原理 1、master將資料改變記錄到二進位制日誌(binarylog)中,也即是配置檔案log-bin指定的檔案(這些記錄叫做二進位制日誌事件,binary log eve