国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mysql Master/Slave Replication With Docker

JeOam / 1736人閱讀

摘要:的線程和線程上會同時有兩個線程在工作,線程從得到數(shù)據(jù)文件,放到被稱爲文件中進行記錄。中繼日誌是指的線程從獲取的二進制日誌文件,將其保留在上。將所在的主機名,日誌文件名,以及日誌文件中處理的信息稱爲位置信息。

原文見https://github.com/Junnplus/blog/issues/...

Mysql 的主從複製原理見下圖

Replication 是一個異步的複製過程,所謂異步,是指系統(tǒng)更新到 Master 的內容並一定會及時的反映到 Slave 上。

Slave 的 I/O 線程和 SQL 線程

Slave 上會同時有兩個線程在工作, I/O 線程從 Master 得到數(shù)據(jù)(Binary Log 文件),放到被稱爲
Relay Log 文件中進行記錄。另一方面,SQL 線程則將 Relay Log 讀取並執(zhí)行。
爲什麼要有兩個線程?這是爲了降低同步的延遲。因爲 I/O 線程和 SQL 線程都是相對很耗時的操作。

Binary Log 和 Relay Log

Master 會生成二進制日誌 Binary Log, Slave 會生成中繼日誌 Relay Log
二進制日誌之記錄修改數(shù)據(jù)的語句,不記錄查詢類的語句。
中繼日誌是指 Slave 的 I/O 線程從 Master 獲取的二進制日誌文件,將其保留在 Slave 上。不同二進制日誌的是,當不需要,中繼日誌會被 SQL 線程自動刪除。

位置信息

Slave 會記錄同步了多少 Master 數(shù)據(jù),以便斷點同步。
將 Master 所在的主機名,日誌文件名,以及日誌文件中處理的信息稱爲位置信息。

當 Mysql Master/Slave Replication 遇上 Docker 創(chuàng)建 Master 容器
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name=master mysql

master.cnf

[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-ignore-db=mysql
# binlog-do-db
# binlog_format=mixed

# 都是可選操作,下同

master.cnf 複製到容器內的 /etc/mysql/conf.d 裏面

docker cp master.cnf master:/etc/mysql/conf.d
創(chuàng)建 Slave 容器
docker run -d --link master:master -e MYSQL_ROOT_PASSWORD=123456 --name=slave mysql

slave.cnf

[mysqld]
server-id = 2
# relay_log = relay_bin
# relay-log-index = relay-bin.index
# read-only=1 # 除非有SUPER權限,否則只讀
# super-read-only=1 # SUPER權限也是只讀

slave.cnf 複製到容器內的 /etc/mysql/conf.d 裏面

docker cp slave.cnf slave:/etc/mysql/conf.d
重啓 Master 和 Slave 容器
docker restart master slave
配置 Master 和 Slave

進入容器操作

docker exec -it master mysql -uroot -p123456  # 進入 Master 容器
docker exec -it slave mysql -uroot -p123456  # 進入 Slave 容器

在 Master 容器中創(chuàng)建同步帳號並授權

GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO repl@"%" IDENTIFIED BY "repl";

在 Slave 容器中連接 Master 並啓動 slave

CHANGE MASTER TO MASTER_HOST="master", MASTER_USER="repl", MASTER_PASSWORD="repl";
start slave;

可以檢查一下 Slave 是否正常工作

show slave statusG

如果 Slave_SQL_Running_State 是 Slave has read all relay log; waiting for more updates 表示正常運行。

測試 Master/Slave 同步
docker exec master mysql -uroot -p123456 -e "CREATE DATABASE test"
docker exec slave mysql -uroot -p123456 -e "SHOW DATABASES"
簡單思考

如果 Master 已有數(shù)據(jù),怎麼新增 Slave? 參考

如果已有 Master/Slave ,怎麼增加 Slave? 參考

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26576.html

相關文章

  • MySQL Master Slave Docker部署例子

    摘要:原文地址本文對應代碼用部署基于的例子。此外,將設置為模式這樣就不能在上執(zhí)行寫操作了。最后正式啟動驗證到上看看是否存在如果有就說明從復制到了上。版本在上也提供了,操作過程和上述一致,只不過容器名字會有變化。 原文地址:https://chanjarster.github.io... 本文對應代碼:github 用Docker部署基于GTID的MySQL Master-Slave Repl...

    bladefury 評論0 收藏0
  • MySQL 復制 - 性能與擴展性的基石 2:部署及其配置

    摘要:配置主庫和備庫。主庫當前的二進制日志文件,和獲得數(shù)據(jù)快照時在該二進制日志文件中的偏移量。它能夠在備份時不阻塞服務器的操作,因此可以在不影響主庫的情況下設置備庫。 showImg(https://segmentfault.com/img/bVbqOEk?w=720&h=480); 正所謂理論造航母,現(xiàn)實小帆船。單有理論,不動手實踐,學到的知識猶如空中樓閣。接下來,我們一起來看下如何一步步...

    劉德剛 評論0 收藏0
  • MySQL 復制 - 性能與擴展性的基石 2:部署及其配置

    摘要:配置主庫和備庫。主庫當前的二進制日志文件,和獲得數(shù)據(jù)快照時在該二進制日志文件中的偏移量。它能夠在備份時不阻塞服務器的操作,因此可以在不影響主庫的情況下設置備庫。 showImg(https://segmentfault.com/img/bVbqOEk?w=720&h=480); 正所謂理論造航母,現(xiàn)實小帆船。單有理論,不動手實踐,學到的知識猶如空中樓閣。接下來,我們一起來看下如何一步步...

    fobnn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<