【MySQL】MySQL Replication 一主一備搭建步驟(傳統方式)
本文使用mysqldump 工具,以傳統備份恢復的方式搭建 MySQL Replication
一、 複製原理(一主一備)
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
重啟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-02-25-mysql-all.sql node2:/home/mysql/
6) master 庫再次插入資料
注:這次插入的資料並不在之前的備份檔案中
mysql> insert into test_db.test_t1 values(3,'c');
mysql> insert into test_db.test_t1 values(4,'d');
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+------+------+
4 rows in set (0.00 sec)
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
重啟 mysql
# service mysqld restart
3) 將主庫傳過來的sql 檔案匯入到備庫
(備庫執行)
$ mysql -uroot -p'P@ssw0rd'
mysql> set sql_log_bin=0;
mysql> source /home/mysql/2021-02-25-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_log_file='node1-bin.000005'
master_log_pos=154
5) 開啟slave
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面的兩個程式需要yes ,狀態就是正常的。
6) 查詢備庫測試表
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+------+------+
4 rows in set (0.00 sec)
此時,MySQL replication 已經配置完成(一主一備)
7) 再次驗證一下資料
主庫插入一條資料
mysql> insert into test_db.test_t1 values(5,'e');
備庫查詢
mysql> select * from test_db.test_t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
+------+------+
5 rows in set (0.00 sec)
注: read_only=1 只讀模式,限定的是普通使用者進行資料修改的操作,但不會限定具有 super 許可權的使用者的資料修改操作 ( 但是如果設定了 "super_read_only=on" , 則就會限定具有 super 許可權的使用者的資料修改操作了 ) 。
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2760316/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySQL】MySQL Replication 一主一備搭建步驟(GTID方式)MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- Docker 方式 MySQL 主從搭建DockerMySql
- 主備都是全新的恢復,主主搭建步驟
- MySQL叢集搭建(1)-主備搭建MySql
- 記一次 MySQL 主從搭建MySql
- MySql雙主一從服務搭建MySql
- mysql 8 windows 版本zip方式安裝步驟MySqlWindows
- MYSQL Group Replication搭建過程記錄MySql
- MGR(MySQL Group Replication)部署搭建測試MySql
- MySQL 主備MySql
- 用一臺虛擬主機搭建網站步驟?網站
- Build mysql replicationUIMySql
- MySQL Group ReplicationMySql
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- Mysql 傳統主從複製MySql
- MySQL 5.7傳統複製到GTID線上切換(一主一從)MySql
- mysql 5.7+keepalived主從切換步驟簡述MySql
- Mysql 一主一從配置MySql
- mysql主從搭建MySql
- MySQL基於GTIDs的MySQL ReplicationMySql
- MySQL 主從配置-之-一主一從MySql
- MySQL備份與主備配置MySql
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- MYSQL主從搭建5.6.38MySql
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- 【MySQL(二十二)】一主一從換主MySql
- mysql主從複製(一):一主多從MySql
- Mysql replication check指令碼MySql指令碼
- MySQL group replication介紹MySql
- An Overview of PostgreSQL & MySQL Cross ReplicationViewMySqlROS
- MySQL 複製全解析 Part 9 一步步搭建基於GTID的MySQL複製MySql
- MYSQL定時備份(一)MySql
- Centos Mysql 主從備份CentOSMySql
- MySQL5.17異機遷移到MySQL 5.7.23基本步驟MySql
- Mysql主從搭建(docker compose)MySqlDocker
- mysql主從複製搭建MySql
- Mysql Replication學習記錄MySql