【MySQL】MySQL Replication 一主一備搭建步驟(GTID方式)
本文使用GTID (Global Transaction ID) 方式建立備庫
從MySQL 5.6.5 開始新增了一種基於 GTID 的複製方式。透過 GTID 保證了每個在主庫上提交的事務在叢集中有一個唯一的 ID 。這種方式強化了資料庫的主備一致性,故障恢復以及容錯能力。
一、 複製原理(一主一備)
step1: 主庫必須開啟 binlog ,主庫對資料的任何修改,都寫進二進位制日誌( binlog )中;
step2: 備庫的 IO 執行緒去讀主庫的二進位制日誌,然後將讀取的內容寫進備庫的中繼日誌( relay log )中
step3: 備庫的 SQL 執行緒讀取中繼日誌內容,並將內容重放到備庫資料庫中,以達到與主庫資料一致的目的。
二、 M-S 搭建步驟
1. 規劃
MySQL 版本 : 5.7
兩個節點已經安裝完MySQL 軟體,並完成資料庫初始化
2. 修改兩節點/etc/hosts 檔案
172.16.71.111 node1
172.16.71.112 node2
3. 主庫建立測試庫,用於驗證資料
mysql> create database test_db;
mysql> create table test_db.test_t1(id int,name varchar(50));
mysql> insert into test_db.test_t1 values(1,'a');
mysql> insert into test_db.test_t1 values(2,'b');
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
+------+------+
2 rows in set (0.00 sec)
4. master (主庫)部署配置
1) 開啟log-bin
編輯/etc/my.cnf 檔案,新增以下內容
log-bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
重啟mysql
# service mysqld restart
2) 建立新使用者並授權,用於slave 機器訪問 master 庫
mysql> grant replication slave,replication client on *.*
to 'rep'@'172.16.71.%' identified by 'P@ssw0rd123';
mysql> flush privileges;
(在授權過程中,就會建立相應的使用者)
3) 驗證建立的使用者
mysql> select user,host from mysql.user;
+---------------+-------------+
| user | host |
+---------------+-------------+
| rep | 172.16.71.% |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-------------+
4 rows in set (0.00 sec)
4) master 庫執行備份
$ mysqldump -p'P@ssw0rd' --all-databases --single-transaction --master-data=1 --flush-logs > `date +%F`-mysql-all.sql
注:這裡的 master-data=1 會在備份檔案中新增一行
CHANGE MASTER TO MASTER_LOG_FILE='node1-bin.000005', MASTER_LOG_POS=154;
這樣在備庫匯入資料時,已經指定了 MASTER_LOG_FILE 和 MASTER_LOG_POS 引數。
5) 將備份檔案傳給slave 節點
$ scp 2021-03-01-mysql-all.sql node2:/home/mysql/
5. slave (備庫)部署配置
1) 測試主庫新建的用於複製的使用者“ rep ”在備庫是否可用
$ mysql -hnode1 -urep -p'P@ssw0rd123'
mysql> show grants;
+---------------------------------------------------------------------------+
| Grants for rep@172.16.71.% |
+---------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'rep'@'172.16.71.%' |
+---------------------------------------------------------------------------+
2) 備庫編輯/etc/my.cnf 檔案
新增以下內容
relay_log=/usr/local/mysql/data/node2-relay-bin
server-id= 2
read_only=1
gtid_mode=ON
enforce_gtid_consistency=1
master_info_repository =TABLE
relay_log_info_repository =TABLE
重啟mysql
# service mysqld restart
3) 將主庫傳過來的sql 檔案匯入到備庫
(備庫執行)
$ mysql -uroot -p'P@ssw0rd'
mysql> set sql_log_bin=0;
mysql> source /home/mysql/2021-03-01-mysql-all.sql
mysql> set sql_log_bin= 1 ;
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
+------+------+
2 rows in set (0.00 sec)
4) 配置備庫啟動連線主庫
mysql> change master to
master_host='node1',
master_user='rep',
master_password='P@ssw0rd123' ,
master_auto_position=1 ;
注:GTID 方式部署備庫,不需要手工指定 master_log_file 和 master_log_pos 。
5) 開啟slave
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面的兩個程式需要yes ,狀態就是正常的。
此時,MySQL replication 已經配置完成(一主一備)
6) 再次驗證一下資料
主庫插入一條資料
mysql> insert into test_db.test_t1 values( 3 ,' c ');
備庫查詢
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+------+
3 rows in set (0.00 sec)
注: read_only=1 只讀模式,限定的是普通使用者進行資料修改的操作,但不會限定具有 super 許可權的使用者的資料修改操作 ( 但是如果設定了 "super_read_only=on" , 則就會限定具有 super 許可權的使用者的資料修改操作了 ) 。
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2760324/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySQL】MySQL Replication 一主一備搭建步驟(傳統方式)MySql
- mysql replication之GTIDMySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於GTID複製)MySql
- MySQL 5.6 建立GTID主從複製 (GTID-based Replication)MySql
- mysql 主從複製搭建詳細步驟MySql
- 基於GTID搭建主從MySQLMySql
- MySQL 5.7 用mysqldump搭建gtid主從MySql
- MySQL 5.7 用xtrabackup搭建gtid主從MySql
- MySQL 複製全解析 Part 9 一步步搭建基於GTID的MySQL複製MySql
- 使用XtraBackup搭建mysql主從複製的操作步驟MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- 【Mysql】MySQL5.7.17- Group Replication搭建MySql
- Docker 方式 MySQL 主從搭建DockerMySql
- 主備都是全新的恢復,主主搭建步驟
- mysql replication /mysql 主從複製原理MySql
- MySQL 5.7 使用GTID方式搭建複製環境MySql
- MySQL 5.7 基於GTID搭建主從複製MySql
- MySQL叢集搭建(1)-主備搭建MySql
- mysql主主複製(雙主複製)配置步驟MySql
- mysql 5.7 GTID主從配置MySql
- 多主一從mysql replication同步表的大膽嘗試.MySql
- 記一次 MySQL 主從搭建MySql
- MySql雙主一從服務搭建MySql
- MySQL 5.7傳統複製到GTID線上切換(一主一從)MySql
- 用一臺虛擬主機搭建網站步驟?網站
- mysql 8 windows 版本zip方式安裝步驟MySqlWindows
- 部署MySQL步驟MySql
- mysql GTID 主從複製概述MySql
- 【Mysql】Mariadb多主一從的搭建MySql
- MYSQL Group Replication搭建過程記錄MySql
- MGR(MySQL Group Replication)部署搭建測試MySql
- MySQL 5.7.17 原始碼方式安裝詳細步驟MySql原始碼
- MySQL 主備MySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於日誌點複製)MySql
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- Mysql 基於GTID主從複製MySql
- 【MySQL】主從GTID複製修復MySql
- mysql之 MySQL 主從基於 GTID 複製原理概述MySql