第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

MySQL 進(jìn)階教程

MySQL 的異步復(fù)制

MySQL 復(fù)制屬于水平擴(kuò)展架構(gòu),是構(gòu)建大規(guī)模高性能應(yīng)用的基礎(chǔ)。在 MySQL 中,有兩種常用的搭建復(fù)制的方式:異步復(fù)制和增強(qiáng)半同步復(fù)制,本小節(jié)主要介紹 MySQL 的異步復(fù)制。

1. 復(fù)制概述

復(fù)制解決的問(wèn)題,是讓一臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)與其他數(shù)據(jù)庫(kù)保持同步。復(fù)制的原理是將主庫(kù)的 DML 和 DDL操作通過(guò) binlog 日志傳到從庫(kù),然后在從庫(kù)上重放這些日志,從而使主庫(kù)和從庫(kù)保持?jǐn)?shù)據(jù)同步。

MySQL復(fù)制的優(yōu)點(diǎn):

  • 實(shí)現(xiàn)高可用架構(gòu),避免單點(diǎn)故障;
  • 可以在從庫(kù)執(zhí)行查詢,分擔(dān)主庫(kù)的查詢壓力;
  • 可以在從庫(kù)執(zhí)行備份,降低主庫(kù)受到的影響。

2. 異步復(fù)制

MySQL 的復(fù)制默認(rèn)是異步復(fù)制,主從異步復(fù)制是 MySQL 很常見(jiàn)的復(fù)制場(chǎng)景,搭建步驟也相對(duì)簡(jiǎn)單。下面從實(shí)戰(zhàn)的角度一步步搭建異步復(fù)制環(huán)境。

2.1 基本環(huán)境

Master Slave
MySQL版本 MySQL-5.7.31-x86_64 MySQL-5.7.31-x86_64
IP 192.168.0.1 192.168.0.2
port 3306 3306

2.2 主庫(kù)配置

修改 my.cnf 文件:

gtid-mode = on
enforce-gtid-consistency = 1

binlog_format = row
server-id = 330601
log-bin = /mysql/log/mysql-bin
binlog_cache_size = 1M

創(chuàng)建復(fù)制用賬號(hào):

create user 'repl'@'192.168.0.2' identified by '123456';
grant replication slave on *.* to 'repl'@'192.168.0.2';

2.3 從庫(kù)配置

修改 my.cnf 文件:

gtid-mode = on
enforce-gtid-consistency = 1

binlog_format = row
server-id = 330602
log-bin = /mysql/log/mysql-bin
binlog_cache_size = 1M
skip_slave_start = 1

導(dǎo)出導(dǎo)入:

--主庫(kù)導(dǎo)出
mysqldump -uroot -p --single-transaction --master-data=2 --databases test123 > test_200908.sql

--從庫(kù)導(dǎo)入
mysql -uroot -p < test_200908.sql

--調(diào)整復(fù)制起點(diǎn)
change master to master_host='192.168.0.1', master_port=3306, master_user='repl', master_password='123456', master_auto_position=1;

--開(kāi)始復(fù)制
start slave;

--查看復(fù)制
show slave status\G;

2.4 環(huán)境校驗(yàn)

--主庫(kù),創(chuàng)建表t1并插入數(shù)據(jù)
use test123;
create table t1(id int);
insert into t1 values(1);
select * from t1;

--從庫(kù),檢查t1表是否存在
use test123;
select * from t1;

2.5 擴(kuò)展問(wèn)題

如果主庫(kù)導(dǎo)出時(shí)出現(xiàn)如下警告信息:

mysqldump -uroot -p --single-transaction --master-data=2 --databases test123 > test_200908.sql
Enter password: 

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

當(dāng)MySQL為GTID模式時(shí),用mysqldump導(dǎo)出默認(rèn)會(huì)帶上當(dāng)前已執(zhí)行的GTID

  1. 如果是從庫(kù)的GTID_EXECUTED為空值,即從庫(kù)無(wú)任何事務(wù)操作,則無(wú)需理會(huì);
  2. 如果是從庫(kù)的GTID_EXECUTED為非空,兩種解決方案。
    在主庫(kù) mysqldump 導(dǎo)出時(shí),加上參數(shù) --set-gtid-purged=OFF,適合場(chǎng)景為導(dǎo)出部分?jǐn)?shù)據(jù);
    在從庫(kù) mysqldump 導(dǎo)入前,執(zhí)行 reset master,適合場(chǎng)景為搭建新從庫(kù)。

3. 小結(jié)

本小節(jié)主要介紹了 MySQL 復(fù)制的基本概念和 MySQL 異步復(fù)制的搭建方式。

異步復(fù)制的配置步驟相對(duì)簡(jiǎn)單:

  • 一般來(lái)說(shuō),需確保主從庫(kù)安裝相同版本的數(shù)據(jù)庫(kù)
  • 在主庫(kù)需新建一個(gè)復(fù)制賬號(hào),并授予replication slave權(quán)限