MySQL5.7主從復制詳細配置教程
1 環(huán)境準備
192.168.1.34 服務器A(主機) 192.168.1.35 服務器B(從機)
2 安裝mysql
MySQL版本:
這里采用Server version: 5.7.35 MySQL Community Server (GPL)
我們把安裝在“服務器A”的數(shù)據(jù)庫稱作“主數(shù)據(jù)庫”、安裝在“服務器B”的數(shù)據(jù)庫稱作“從數(shù)據(jù)庫”。
2.1 開放端口
確保服務器A與服務器B上的3306端口可以互訪。
3 設置主庫
進行下面的配置前,假設你已經(jīng)在兩臺服務器AB上安裝成功MySQL服務。
192.168.1.34 服務器A(主機)
3.1 修改MySQL配置文件
編輯mysql配置文件/etc/my.cnf,添加如下的內(nèi)容:
[mysqld] log-bin=mysql-bin server-id=1
保存修改內(nèi)容并重啟MySQL服務。
3.2 創(chuàng)建一個用戶用于復制
所謂復制用戶,即供從數(shù)據(jù)庫使用的,從主數(shù)據(jù)庫拷貝二進制日志信息的用戶。
用客戶端連接上MySQL服務,執(zhí)行以下語句創(chuàng)建一個用于復制的用戶:
mysql> CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'Abc!@#123'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
3.3 獲取二進制文件位置
這些信息在后面配置從數(shù)據(jù)庫時用到。
1、阻塞數(shù)據(jù)庫寫語句
mysql> FLUSH TABLES WITH READ LOCK;
2、獲取當前二進制文件的名稱和位置
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ù)快照
本指南默認使用
InnoDB
存儲引擎。
如果在啟用主從復制前,主數(shù)據(jù)庫已存在數(shù)據(jù),那么你就需要先把這些數(shù)據(jù)拷貝到從數(shù)據(jù)庫。下面給出一個例子,將所有數(shù)據(jù)庫備份到一個叫做dbdump.db
的文件:
shell> mysqldump --all-databases --master-data > dbdump.db
其中--master-data
選項會自動追加 CHANGE MASTER TO
語句,該語句在從數(shù)據(jù)庫啟動復制進程時需要到。
注意:
如果你沒有使用
--master-data
選項的話,那么你需要在一個單獨的會話中鎖定所有數(shù)據(jù)表。詳情見 Section 16.1.2.3, “Obtaining the Replication Source's Binary Log Coordinates”.
4 設置從庫
192.168.1.35 服務器B(從機)
4.1 修改MySQL配置文件
編輯mysql配置文件/etc/my.cnf,添加如下的內(nèi)容:
[mysqld] server-id=2 skip_slave_start=ON
這里主要解釋一下skip_slave_start
配置,ON表示數(shù)據(jù)庫啟動時不啟動從機的復制進程,需要通過手動的方式進行啟動。
保存修改內(nèi)容并重啟MySQL服務。
4.2 設置從庫對應的主庫
這里主要用到 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;
我們的例子對應如下(當中的參數(shù)見上文[設置主數(shù)據(jù)庫](#3 設置主數(shù)據(jù)庫)一節(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 導入全新的數(shù)據(jù)的情況
即主庫和備庫都是新建的,不存在舊庫舊表舊數(shù)據(jù),且主庫已經(jīng)啟用二進制日志,備庫已指定主庫及當前位置。這時你想要將其它的數(shù)據(jù)庫備份下來導入到當前的主備數(shù)據(jù)庫中,你只需要在主庫中執(zhí)行導入命令即可(不能再備庫執(zhí)行導入語句):
shell> mysql -h '192.168.1.34' < fulldb.dump
4.4 主庫已存在數(shù)據(jù)的情況
即主庫在啟用二進制日志前已存在數(shù)據(jù),你在啟用從庫復制進程前需要把主庫的備份快照導入到從庫中,然后才能啟用從庫的復制進程。
1、新建主庫快照
shell> mysqldump --all-databases --master-data > dbdump.db
2、導入到從庫中
shell> mysql -h '192.168.1.35' < fulldb.dump
4.5 啟用從庫復制進程
mysql> START SLAVE;
驗證主從復制是否啟動成功
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
同時都是Yes
的時候表示主從復制配置成功。
5 互為主從設置
前面兩個章節(jié)講了如何配置主從復制,即服務器A的數(shù)據(jù)庫作為主庫,服務器B的數(shù)據(jù)庫作為從庫;那么只要按照相反的步驟再設置一遍,即服務器B的數(shù)據(jù)庫作為主庫,服務器A的數(shù)據(jù)庫作為從庫。這樣就可以使得服務器A的數(shù)據(jù)庫和服務器B的數(shù)據(jù)庫互為主從了。
到此這篇關于MySQL5.7主從復制詳細配置教程的文章就介紹到這了,更多相關MySQL5.7主從復制 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解MySQL中存儲函數(shù)創(chuàng)建與觸發(fā)器設置
這篇文章主要為大家詳細介紹了MySQL中存儲函數(shù)的創(chuàng)建與觸發(fā)器的設置,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以參考一下2022-08-08/var/log/pacct文件導致MySQL啟動失敗的案例分享
這篇文章主要介紹了/var/log/pacct文件導致MySQL啟動失敗的案例分享,這是個比較讓人郁悶的問題,找不到MySQL啟動失敗的原因進可以按此文的方法試一試,需要的朋友可以參考下2015-01-01mysql報錯Duplicate entry ‘xxx‘ for key&nbs
有時候?qū)Ρ磉M行操作,例如加唯一鍵,或者插入數(shù)據(jù),會報錯,本文就來介紹一下mysql報錯Duplicate entry ‘xxx‘ for key ‘字段名‘的解決方法,感興趣的可以了解一下2023-10-10詳解MySQL中的數(shù)據(jù)類型和schema優(yōu)化
這篇文章主要介紹了MySQL中的數(shù)據(jù)類型和schema優(yōu)化的相關資料,幫助大家更好的理解和學習MySQL的知識,感興趣的朋友可以了解下2020-10-10虛擬主機MySQL數(shù)據(jù)庫的備份與還原的方法
虛擬主機MySQL數(shù)據(jù)庫的備份與還原的方法...2007-07-07