MySQL5.7主從復(fù)制詳細(xì)配置教程
1 環(huán)境準(zhǔn)備
192.168.1.34 服務(wù)器A(主機(jī)) 192.168.1.35 服務(wù)器B(從機(jī))
2 安裝mysql
MySQL版本:
這里采用Server version: 5.7.35 MySQL Community Server (GPL)
我們把安裝在“服務(wù)器A”的數(shù)據(jù)庫(kù)稱作“主數(shù)據(jù)庫(kù)”、安裝在“服務(wù)器B”的數(shù)據(jù)庫(kù)稱作“從數(shù)據(jù)庫(kù)”。
2.1 開放端口
確保服務(wù)器A與服務(wù)器B上的3306端口可以互訪。
3 設(shè)置主庫(kù)
進(jìn)行下面的配置前,假設(shè)你已經(jīng)在兩臺(tái)服務(wù)器AB上安裝成功MySQL服務(wù)。
192.168.1.34 服務(wù)器A(主機(jī))
3.1 修改MySQL配置文件
編輯mysql配置文件/etc/my.cnf,添加如下的內(nèi)容:
[mysqld] log-bin=mysql-bin server-id=1
保存修改內(nèi)容并重啟MySQL服務(wù)。
3.2 創(chuàng)建一個(gè)用戶用于復(fù)制
所謂復(fù)制用戶,即供從數(shù)據(jù)庫(kù)使用的,從主數(shù)據(jù)庫(kù)拷貝二進(jìn)制日志信息的用戶。
用客戶端連接上MySQL服務(wù),執(zhí)行以下語句創(chuàng)建一個(gè)用于復(fù)制的用戶:
mysql> CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'Abc!@#123'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
3.3 獲取二進(jìn)制文件位置
這些信息在后面配置從數(shù)據(jù)庫(kù)時(shí)用到。
1、阻塞數(shù)據(jù)庫(kù)寫語句
mysql> FLUSH TABLES WITH READ LOCK;
2、獲取當(dāng)前二進(jìn)制文件的名稱和位置
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 1030 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
3.4 使用mysqldump創(chuàng)建數(shù)據(jù)快照
本指南默認(rèn)使用
InnoDB
存儲(chǔ)引擎。
如果在啟用主從復(fù)制前,主數(shù)據(jù)庫(kù)已存在數(shù)據(jù),那么你就需要先把這些數(shù)據(jù)拷貝到從數(shù)據(jù)庫(kù)。下面給出一個(gè)例子,將所有數(shù)據(jù)庫(kù)備份到一個(gè)叫做dbdump.db
的文件:
shell> mysqldump --all-databases --master-data > dbdump.db
其中--master-data
選項(xiàng)會(huì)自動(dòng)追加 CHANGE MASTER TO
語句,該語句在從數(shù)據(jù)庫(kù)啟動(dòng)復(fù)制進(jìn)程時(shí)需要到。
注意:
如果你沒有使用
--master-data
選項(xiàng)的話,那么你需要在一個(gè)單獨(dú)的會(huì)話中鎖定所有數(shù)據(jù)表。詳情見 Section 16.1.2.3, “Obtaining the Replication Source's Binary Log Coordinates”.
4 設(shè)置從庫(kù)
192.168.1.35 服務(wù)器B(從機(jī))
4.1 修改MySQL配置文件
編輯mysql配置文件/etc/my.cnf,添加如下的內(nèi)容:
[mysqld] server-id=2 skip_slave_start=ON
這里主要解釋一下skip_slave_start
配置,ON表示數(shù)據(jù)庫(kù)啟動(dòng)時(shí)不啟動(dòng)從機(jī)的復(fù)制進(jìn)程,需要通過手動(dòng)的方式進(jìn)行啟動(dòng)。
保存修改內(nèi)容并重啟MySQL服務(wù)。
4.2 設(shè)置從庫(kù)對(duì)應(yīng)的主庫(kù)
這里主要用到 CHANGE MASTER TO語句,其基本語法如下:
mysql> CHANGE MASTER TO -> MASTER_HOST='source_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;
我們的例子對(duì)應(yīng)如下(當(dāng)中的參數(shù)見上文[設(shè)置主數(shù)據(jù)庫(kù)](#3 設(shè)置主數(shù)據(jù)庫(kù))一節(jié)):
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.1.34', -> MASTER_USER='repl', -> MASTER_PASSWORD='Abc!@#123', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=1030;
4.3 導(dǎo)入全新的數(shù)據(jù)的情況
即主庫(kù)和備庫(kù)都是新建的,不存在舊庫(kù)舊表舊數(shù)據(jù),且主庫(kù)已經(jīng)啟用二進(jìn)制日志,備庫(kù)已指定主庫(kù)及當(dāng)前位置。這時(shí)你想要將其它的數(shù)據(jù)庫(kù)備份下來導(dǎo)入到當(dāng)前的主備數(shù)據(jù)庫(kù)中,你只需要在主庫(kù)中執(zhí)行導(dǎo)入命令即可(不能再備庫(kù)執(zhí)行導(dǎo)入語句):
shell> mysql -h '192.168.1.34' < fulldb.dump
4.4 主庫(kù)已存在數(shù)據(jù)的情況
即主庫(kù)在啟用二進(jìn)制日志前已存在數(shù)據(jù),你在啟用從庫(kù)復(fù)制進(jìn)程前需要把主庫(kù)的備份快照導(dǎo)入到從庫(kù)中,然后才能啟用從庫(kù)的復(fù)制進(jìn)程。
1、新建主庫(kù)快照
shell> mysqldump --all-databases --master-data > dbdump.db
2、導(dǎo)入到從庫(kù)中
shell> mysql -h '192.168.1.35' < fulldb.dump
4.5 啟用從庫(kù)復(fù)制進(jìn)程
mysql> START SLAVE;
驗(yàn)證主從復(fù)制是否啟動(dòng)成功
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.34 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2096 Relay_Log_File: 192-relay-bin.000007 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: ......
如上,只有Slave_IO_Running
和Slave_SQL_Running
同時(shí)都是Yes
的時(shí)候表示主從復(fù)制配置成功。
5 互為主從設(shè)置
前面兩個(gè)章節(jié)講了如何配置主從復(fù)制,即服務(wù)器A的數(shù)據(jù)庫(kù)作為主庫(kù),服務(wù)器B的數(shù)據(jù)庫(kù)作為從庫(kù);那么只要按照相反的步驟再設(shè)置一遍,即服務(wù)器B的數(shù)據(jù)庫(kù)作為主庫(kù),服務(wù)器A的數(shù)據(jù)庫(kù)作為從庫(kù)。這樣就可以使得服務(wù)器A的數(shù)據(jù)庫(kù)和服務(wù)器B的數(shù)據(jù)庫(kù)互為主從了。
到此這篇關(guān)于MySQL5.7主從復(fù)制詳細(xì)配置教程的文章就介紹到這了,更多相關(guān)MySQL5.7主從復(fù)制 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL?Replication中的并行復(fù)制示例詳解
MySQL在5.6版本之前,主從復(fù)制的從節(jié)點(diǎn)上有兩個(gè)線程,分別是I/O線程和SQL線程,今天通過本文給大家介紹MySQL?Replication中的并行復(fù)制示例詳解,感興趣的朋友一起看看吧2022-07-07詳解MySQL中存儲(chǔ)函數(shù)創(chuàng)建與觸發(fā)器設(shè)置
這篇文章主要為大家詳細(xì)介紹了MySQL中存儲(chǔ)函數(shù)的創(chuàng)建與觸發(fā)器的設(shè)置,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2022-08-08Mysql 8.0.18 hash join測(cè)試(推薦)
這篇文章給大家介紹Mysql 8.0.18 hash join測(cè)試的相關(guān)知識(shí),本文通過實(shí)例代碼講解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-10-10/var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享
這篇文章主要介紹了/var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享,這是個(gè)比較讓人郁悶的問題,找不到MySQL啟動(dòng)失敗的原因進(jìn)可以按此文的方法試一試,需要的朋友可以參考下2015-01-01mysql報(bào)錯(cuò)Duplicate entry ‘xxx‘ for key&nbs
有時(shí)候?qū)Ρ磉M(jìn)行操作,例如加唯一鍵,或者插入數(shù)據(jù),會(huì)報(bào)錯(cuò),本文就來介紹一下mysql報(bào)錯(cuò)Duplicate entry ‘xxx‘ for key ‘字段名‘的解決方法,感興趣的可以了解一下2023-10-10MySQL中的行級(jí)鎖、表級(jí)鎖、頁級(jí)鎖
這篇文章主要介紹了MySQL中的行級(jí)鎖、表級(jí)鎖、頁級(jí)鎖,以及分享了多種避免死鎖的方法,感興趣的小伙伴們可以參考一下2016-01-01詳解MySQL中的數(shù)據(jù)類型和schema優(yōu)化
這篇文章主要介紹了MySQL中的數(shù)據(jù)類型和schema優(yōu)化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的知識(shí),感興趣的朋友可以了解下2020-10-10虛擬主機(jī)MySQL數(shù)據(jù)庫(kù)的備份與還原的方法
虛擬主機(jī)MySQL數(shù)據(jù)庫(kù)的備份與還原的方法...2007-07-07