亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 淺談MySQL8.0 異步復制的三種方式

淺談MySQL8.0 異步復制的三種方式

熱門標簽:許昌外呼增值業務線路 臨沂做地圖標注 地圖標注客戶付款 咸陽防封電銷卡 申請400電話電話價格 宜賓全自動外呼系統廠家 新鄉智能外呼系統好處 石家莊400電話辦理公司 廣東400企業電話申請流程

本實驗中分別針對空庫、脫機、聯機三種方式,配置一主兩從的mysql標準異步復制。只做整服務器級別的復制,不考慮對個別庫表或使用過濾復制的情況。

實驗環境

[root@slave2 ~]# cat /etc/hosts
192.168.2.138 master
192.168.2.192 slave1
192.168.2.130 slave2
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.16  |
+-----------+
1 row in set (0.00 sec)

一、空庫

1.查看主庫二進制信息

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |   155 |       |         |          |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

2.在主庫上建立復制用戶

mysql> create user 'repl'@'%' identified with mysql_native_password by 'wwwwww';
Query OK, 0 rows affected (0.03 sec)
mysql> grant replication client,replication slave on *.* to 'repl'@'%';
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3.在從庫創建主庫信息

mysql> stop slave;
mysql> change master to master_host='192.168.2.138', master_port=3306, master_user='repl', master_password='wwwwww', master_log_file='mysql-bin.000004', master_log_pos=155;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G

剛才我們并沒有在從庫上建立repl用戶,但由于create user語句是在起始位置點后執行的,因此可以正常復制到從庫,查詢mysql.user表即可確認。

sql> select * from mysql.user where user='repl'\G

二、脫機

如果數據庫已經存在應用數據,但允許一個可接受的脫機時間窗口做復制,這種場景下常用的做法是先直接將主庫的數據目錄整體拷貝到從庫,再啟動復制。具體步驟如下。

1.在master節點創建測試庫和測試表

CREATE DATABASE test;
Query OK, 1 row affected (0.04 sec)
mysql> USE test;
Database changed
mysql> CREATE TABLE t(id int(10));
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO t VALUES (111);
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO t VALUES (222);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t VALUES (333);
Query OK, 1 row affected (0.00 sec)

2.在主庫創建復制用戶

mysql> create user 'repl'@'%' identified with mysql_native_password by 'wwwwww';
Query OK, 0 rows affected (0.03 sec)
mysql> grant replication client,replication slave on *.* to 'repl'@'%';
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3.停止復制的所有實例,在master、slave1、slave2分別執行

[root@master ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
[root@master ~]# mysqladmin -hlocalhost -uroot -pwwwwww shutdown

4.復制數據至slave1、slave2

[root@master data]# cd /data
[root@master data]# scp -r mysql/ slave1:/data/
[root@master data]# scp -r mysql/ slave2:/data/

5.在slave1、slave2從庫執行命令,刪除auto.cnf文件

[root@slave1 mysql]# cd /data/mysql
[root@slave1 mysql]# rm -rf auto.cnf
[root@slave2 mysql]# cd /data/mysql
[root@slave2 mysql]# rm -rf auto.cnf
 

6.重啟實例,在三個節點都需要執行

[root@master data]# service mysqld start
Starting MySQL.. SUCCESS!

7.在主庫查看二進制日志

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |   155 |       |         |          |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

8.在slave1、slave2從庫執行命令

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> change master to master_host='192.168.2.138', master_port=3306, master_user='repl', master_password='wwwwww', master_log_file='mysql-bin.000005', master_log_pos=155;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
mysql> show slave status\G

9.在slave1、slave2從庫執行命令查看庫和表是否同步過來

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t       |
+----------------+
1 row in set (0.00 sec)
mysql> select * from t;
+------+
| id  |
+------+
| 111 |
| 222 |
| 333 |
+------+
3 rows in set (0.00 sec)

三、mysqldump聯機

脫機建立復制的需求太過理想化,大多數情況下,復制是被要求在不影響線上業務的情況下,聯機創建的,而且還要求對線上庫的影響越小越好。例如,復制過程化中對主庫加鎖會影響對主庫的訪問,因此通常是不被允許的。這種場景下有兩種備選的復制方案:使用mysqldump程序或使用如XtraBackup的第三方工具。這兩種方案有各自的適用場合。使用mysqldump聯機建立復制的過程如下。

1.在主庫創建測試的數據庫和表

mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.04 sec)
mysql> use test;
Database changed
mysql> CREATE TABLE t(id int(10));
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO t VALUES(111);
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO t VALUES(222);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t VALUES(333);
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO t VALUES(444);
Query OK, 1 row affected (0.00 sec)

2.在主庫創建復制用戶

mysql> create user 'repl'@'%' identified with mysql_native_password by 'wwwwww';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication client,replication slave on *.* to 'repl'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
 

3.在slave1、slave2從庫創建主庫信息

mysql> change master to master_host='192.168.2.138', master_port=3306, master_user='repl', master_password='wwwwww';
Query OK, 0 rows affected, 2 warnings (0.04 sec)

4.在slave1、slave2從庫使用mysqldump命令復制數據

[root@slave2 ~]# mysqldump --single-transaction --all-databases --master-data=1 --host=192.168.2.138 --user=root --password=wwwwww --apply-slave-statements | mysql -uroot -pwwwwww -hlocalhost
mysql: [Warning] Using a password on the command line interface can be insecure.
mysqldump: [Warning] Using a password on the command line interface can be insecure.

參數說明

–single-transaction參數可以對Innodb表執行非鎖定導出。此選項將事務隔離模式設置為REPEATABLE READ,并在轉儲數據之前向服務器發送START TRANSACTION SQL語句。它僅適用于Innodb等事務表,因為它會在發出START TRANSACTION時轉儲數據庫的一致狀態,而不會阻塞任何應用程序。因此這里假定:1. 所有的應用數據表都使用Innodb引擎。2. 所有系統表數據在備份過程中不會發生變化。

–master-data參數會導致轉儲輸出包含類似 CHANGE MASTER TO MASTER_LOG_FILE=‘binlog.000004', MASTER_LOG_POS=1480; 的SQL語句,該語句指示主庫的二進制日志坐標(文件名和位置)。如果選項值為2,則CHANGE MASTER TO語句將寫為SQL注釋,因此僅提供信息,不會執行。如果參數值為1,則該語句不會寫為注釋,并在重新加載轉儲文件時執行。如果未指定選項值,則默認值為1。

–apply-slave-statements參數會在CHANGE MASTER TO語句之前添加STOP SLAVE語句,并在輸出結尾處添加START SLAVE語句,用來自動開啟復制。

通過管道操作符,導出導入一步進行,不需要中間落盤生成文件。

5.在從庫確認復制狀態

mysql> show slave status\G

6.在從庫查看庫和表是否復制成功

use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t;
+------+
| id  |
+------+
| 111 |
| 222 |
| 333 |
| 444 |
| 555 |
+------+
5 rows in set (0.00 sec)

mysqldump方式的優點是可以進行部分復制,如在配置文件中定義replicate-do-table=db1.*,則用這種方法可以只復制db1庫而忽略其它復制事件。缺點是由于mysqldump會生成主庫轉儲數據的SQL語句,實際是一種邏輯備份方式所以速度較慢,不適用于大庫。

四、XtraBackup聯機復制

聯機建立復制的另一種可選方案是使用XtraBackup。XtraBackup是Percona公司的開源項目,用以實現類似Innodb官方的熱備份工具InnoDB Hot Backup的功能,它支持在線熱備份,備份時不影響數據讀寫。到目前為止,最新的版本為Percona XtraBackup 8.0.6,可以從https://www.percona.com/downloads/下載安裝包。XtraBackup有很多功能和優點,例如支持全備、增量備份、部分備份;支持壓縮備份;備份不影響數據讀寫、事務等,但是也有缺陷不足:例如不支持脫機備份、不支持直接備份到磁帶設備、不支持Cloud Back,MyISAM的備份也會阻塞。不過這些小瑕疵不影響XtraBackup成為一款流行的MySQL備份工具。另外,注意XtraBackup只支持Linux平臺,不支持Windows平臺。下面演示用XtraBackup聯機搭建主從復制的過程,主庫已經建立了用于執行復制的用戶repl。

在主庫創建復制用戶

mysql> create user 'repl'@'%' identified with mysql_native_password by 'wwwwww';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication client,replication slave on *.* to 'repl'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

1.在主庫和從庫都安裝XtraBackupv

[root@master ~]# yum -y install libev
[root@master home]# yum localinstall percona-xtrabackup-80-8.0.6-1.el7.x86_64.rpm -y

2.配置主庫到從庫的SSH免密碼連接

[root@master home]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GBLbrw17UVck8RyCa/fbYyLkSNZIRc5p+jPQmpkD+bI root@master
The key's randomart image is:
+---[RSA 2048]----+
|  .   .o+o+ |
|   +  +..* . |
|  o o  o*. o |
|   . +.o*..  |
|   ooS+oo .  |
|    =o=Bo . |
|   o.=B++  o |
|    .o..oo..o.|
|    E  . o .|
+----[SHA256]-----+
[root@master home]# ssh-copy-id 192.168.2.138
[root@master home]# ssh-copy-id 192.168.2.192
[root@master home]# ssh-copy-id 192.168.2.130

3.停止從庫,并刪除從庫里面的數據

[root@slave1 home]# service mysql stop
[root@slave2 home]# service mysql stop
[root@slave1 home]# rm -rf /data/mysql/*
[root@slave2 home]# rm -rf /data/mysql/*

4.備份數據并傳輸

[root@master tmp]# xtrabackup -uroot -pwwwwww --socket=/data/mysql/mysql.sock --no-lock --backup --compress --stream=xbstream --parallel=4 --target-dir=./ | ssh root@192.168.2.192 "xbstream -x -C /data/mysql/ --decompress"

執行過程中報錯,

190606 01:21:47 >> log scanned up to (19597291)

190606 01:21:47 Selecting LSN and binary log position from p_s.log_status

Error: failed to fetch query result SELECT server_uuid, local, replication, storage_engines FROM performance_schema.log_status: Access denied; you need (at least one of) the BACKUP_ADMIN privilege(s) for this operation

mysql> grant BACKUP_ADMIN on *.* to 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

行如下命令,刪除192.168.2.192:/data/mysql/*的內容,再次執行命令,發現已經正確了。成功執行如下所示:


這條命令連接主庫,進行并行壓縮流式備份,同時將備份通過管道操作符傳輸到從庫,并直接解壓縮到從庫的數據目錄。所有操作一條命令完成,不需要中間落盤生成文件。

5.在從庫恢復備份

[root@slave1 /]# xtrabackup --prepare --target-dir=/data/mysql
[root@slave2 /]# xtrabackup --prepare --target-dir=/data/mysql

6.在從庫查看二進制bin-log日志

[root@slave1 mysql]# cat xtrabackup_binlog_info 
mysql-bin.000008    155
[root@slave2 mysql]# cat xtrabackup_binlog_info 
mysql-bin.000009    155

7.啟動從庫

[root@slave1 data]# service mysqld start
Starting MySQL... SUCCESS! 
[root@slave2 data]# service mysqld start
Starting MySQL... SUCCESS!

8.創建主庫信息,其中的master_log_file和master_log_pos值來自第6步

mysql> change master to master_host='192.168.2.138', master_port=3306, master_user='repl', master_password='wwwwww', master_log_file='mysql-bin.000008', master_log_pos=155;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G

9.在從庫測試數據

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t;
+------+
| id  |
+------+
| 111 |
| 222 |
| 333 |
| 444 |
| 555 |
+------+
5 rows in set (0.00 sec)

XtraBackup是物理復制,性能比mysqldump高的多,而且對主庫的影響極小,非常適用于從頭聯機創建高負載、大數據量、全實例從庫的場景。

到此這篇關于淺談MySQL8.0 異步復制的三種方式的文章就介紹到這了,更多相關MySQL8.0 異步復制內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Mysql主從復制與讀寫分離圖文詳解
  • MySQL 復制表的方法
  • MySQL 8.0.23中復制架構從節點自動故障轉移的問題
  • MYSQL數據庫GTID實現主從復制實現(超級方便)
  • MySql主從復制實現原理及配置
  • 淺析MySQL的WriteSet并行復制
  • MySQL主從復制原理以及需要注意的地方
  • mysql 如何動態修改復制過濾器
  • 淺析MySQL并行復制
  • mysql 主從復制如何跳過報錯
  • MySQL 4種常用的主從復制架構
  • 磁盤寫滿導致MySQL復制失敗的解決方案

標簽:鎮江 臺灣 貴州 日照 合肥 鷹潭 阜新 北京

巨人網絡通訊聲明:本文標題《淺談MySQL8.0 異步復制的三種方式》,本文關鍵詞  淺談,MySQL8.0,異步,復制,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談MySQL8.0 異步復制的三種方式》相關的同類信息!
  • 本頁收集關于淺談MySQL8.0 異步復制的三種方式的相關信息資訊供網民參考!
  • 推薦文章
    久久久久久久网| 午夜激情视频在线观看| 国产麻豆精品高清在线播放| 99久久精品国产片| 国产原创视频在线| 97视频免费在线观看| 韩国三级视频网站| 美女免费毛片| 国产精品12| 亚洲www美色| 国产视频一区二区三区四区| 一级毛片看真人在线视频| 精品视频一区二区三区| 日韩在线观看网站| 日韩在线观看免费| 国产成人啪精品视频免费软件| 久久久久久久男人的天堂| 夜夜操网| 97视频免费在线观看| 午夜在线亚洲男人午在线| 欧美一级视| 成人a大片在线观看| 国产精品1024永久免费视频| 欧美激情伊人| 中文字幕一区二区三区精彩视频| 国产视频一区二区三区四区| 久久久久久久网| 青青青草视频在线观看| 夜夜操网| 日本伦理网站| 日韩中文字幕在线播放| 亚洲wwwwww| 欧美一级视| 99色视频在线观看| 亚飞与亚基在线观看| 午夜久久网| 韩国三级视频网站| 可以免费看毛片的网站| 精品久久久久久中文字幕2017| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产不卡高清| 精品国产香蕉伊思人在线又爽又黄| 国产精品免费精品自在线观看| 久久国产精品自线拍免费| 欧美日本免费| 成人高清视频在线观看| 国产不卡福利| 国产精品12| 日韩avdvd| 国产极品白嫩美女在线观看看| 天天做日日爱夜夜爽| 一级毛片视频在线观看| 美女免费精品视频在线观看| 精品国产一区二区三区免费| 国产亚洲精品aaa大片| 欧美激情一区二区三区在线播放| 天天做日日爱夜夜爽| 天堂网中文在线| 九九免费精品视频| 尤物视频网站在线| 可以在线看黄的网站| 久久国产一久久高清| 九九久久国产精品大片| 高清一级片| 黄色免费三级| 亚洲精品永久一区| 91麻豆精品国产自产在线观看一区 | 亚洲 国产精品 日韩| 欧美a级v片不卡在线观看| 亚洲精品久久玖玖玖玖| 国产激情一区二区三区| 九九干| 国产成人精品影视| 国产视频一区二区在线播放| 免费的黄视频| 尤物视频网站在线观看| 日韩中文字幕一区| 国产a视频| 色综合久久久久综合体桃花网| 国产极品精频在线观看| 精品国产一区二区三区国产馆| 国产综合91天堂亚洲国产| 亚洲精品久久玖玖玖玖| 午夜在线亚洲| 成人在激情在线视频| 国产一区二区精品| 99热视热频这里只有精品| 尤物视频网站在线观看| 亚洲第一页色| 天堂网中文在线| 国产成人欧美一区二区三区的| 韩国毛片免费大片| 色综合久久天天综合观看| 日韩免费在线| 沈樵在线观看福利| 麻豆系列 在线视频| 九九精品在线| 麻豆污视频| 精品视频在线观看免费| 久久成人性色生活片| 免费毛片基地| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频在线免费观看| 成人高清视频免费观看| 韩国毛片基地| 久久久久久久免费视频| 精品国产一区二区三区免费 | 日韩av成人| 久久国产精品自由自在| 91麻豆爱豆果冻天美星空| 一级片片| 韩国毛片| 国产成人精品一区二区视频| 久久99这里只有精品国产| 精品国产香蕉伊思人在线又爽又黄| 亚州视频一区二区| 美女被草网站| 国产视频久久久| 免费国产在线观看| 韩国三级视频网站| 国产视频一区在线| 免费的黄色小视频| 国产成人精品一区二区视频| 精品视频免费观看| 欧美日本免费| 国产不卡在线观看视频| 香蕉视频久久| 国产91精品系列在线观看| 二级片在线观看| a级黄色毛片免费播放视频| 99久久网站| 国产a免费观看| 精品在线观看国产| 99色播| 午夜在线亚洲| 亚洲第一色在线| 成人高清视频免费观看| 国产a毛片| 999精品影视在线观看| 国产91精品露脸国语对白| 成人高清视频免费观看| 色综合久久天天综线观看| 欧美一级视频免费观看| 999精品在线| 韩国毛片免费| 91麻豆精品国产自产在线| 国产高清视频免费观看| 欧美1区2区3区| 香蕉视频一级| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频在线观看视频免费视频 | 日韩女人做爰大片| 日本在线不卡视频| 欧美一区二区三区性| 国产伦精品一区三区视频| 精品久久久久久中文字幕一区| 91麻豆精品国产综合久久久| a级精品九九九大片免费看| 精品视频在线观看视频免费视频 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲 欧美 成人日韩| 欧美另类videosbestsex久久| 精品久久久久久中文字幕2017| 可以在线看黄的网站| 天天做日日干| 国产一区二区福利久久| 欧美另类videosbestsex视频| 香蕉视频一级| 国产网站免费在线观看| 欧美18性精品| 九九久久国产精品| 韩国毛片免费大片| 成人a级高清视频在线观看| 欧美一级视频高清片| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 亚洲 欧美 成人日韩| 欧美激情一区二区三区视频高清| 国产精品自拍在线| 久久成人综合网| 国产成人啪精品视频免费软件| 亚洲精品中文字幕久久久久久| 欧美a级片视频| 国产福利免费观看| 欧美另类videosbestsex久久| 四虎影视久久久| 欧美a免费| 精品国产一区二区三区国产馆| a级毛片免费全部播放| 91麻豆精品国产自产在线| 亚洲 欧美 成人日韩| 午夜家庭影院| 国产视频网站在线观看| 久久成人性色生活片| 韩国三级视频网站| 中文字幕一区二区三区 精品| 91麻豆精品国产自产在线 | 国产视频一区二区在线观看| 成人影院一区二区三区| 日本特黄特黄aaaaa大片| 天天做日日干|