成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MySQL Master Slave Docker部署例子

bladefury / 1593人閱讀

摘要:原文地址本文對(duì)應(yīng)代碼用部署基于的例子。此外,將設(shè)置為模式這樣就不能在上執(zhí)行寫操作了。最后正式啟動(dòng)驗(yàn)證到上看看是否存在如果有就說明從復(fù)制到了上。版本在上也提供了,操作過程和上述一致,只不過容器名字會(huì)有變化。

原文地址:https://chanjarster.github.io...

本文對(duì)應(yīng)代碼:github

用Docker部署基于GTID的MySQL Master-Slave Replication例子。

啟動(dòng)Master

寫一個(gè)文件mysql-master.cnf

[mysqld]
server_id=1
binlog_format=ROW
gtid_mode=ON
enforce-gtid-consistency=true

這個(gè)配置文件把Master的server_id設(shè)置為1,要注意在同一個(gè)Master-Slave集群里,server_id不能重復(fù)。

啟動(dòng)Master:

docker run -d --name mysql-master 
  -e MYSQL_USER=my_user 
  -e MYSQL_DATABASE=my_database 
  -e MYSQL_PASSWORD=my_database_password 
  -e MYSQL_ROOT_PASSWORD=my_root_password 
  -p 3307:3306 
  -v $(pwd)/mysql-master.cnf:/etc/mysql/conf.d/mysql-master.cnf 
  mysql:8.0 
  --log-bin=my
啟動(dòng)Slave

寫一個(gè)文件mysql-slave-1.cnf

[mysqld]
server_id=2
binlog_format=ROW
gtid_mode=ON
enforce-gtid-consistency=true
read_only=ON

這個(gè)文件把Slave的server_id設(shè)置為2,如果你有多個(gè)Slave,那么得分別設(shè)置不同的server_id。此外,將Slave設(shè)置為read_only模式(這樣就不能在slave上執(zhí)行寫操作了)。

啟動(dòng)Slave:

docker run -d --name mysql-slave-1 
  -e MYSQL_ROOT_PASSWORD=my_root_password 
  -p 3308:3306 
  -v $(pwd)/mysql-slave-1.cnf:/etc/mysql/conf.d/mysql-slave-1.cnf 
  mysql:8.0 
  --skip-log-bin 
  --skip-log-slave-updates 
  --skip-slave-start
創(chuàng)建Replication用戶

到Master上創(chuàng)建Replication用戶:

$ docker exec -it mysql-master mysql -u root -p
Enter password: my_root_password

mysql> CREATE USER "repl"@"%" IDENTIFIED BY "password";
mysql> GRANT REPLICATION SLAVE ON *.* TO "repl"@"%";
將Slave和Master關(guān)聯(lián)

到Slave上把自己和Master關(guān)聯(lián)起來:

$ docker exec -it mysql-slave-1 mysql -u root -p
Enter password: my_root_password

mysql> CHANGE MASTER TO 
  MASTER_HOST="192.168.101.21",
  MASTER_PORT=3307,
  MASTER_USER="repl",
  MASTER_PASSWORD="password",
  GET_MASTER_PUBLIC_KEY=1,
  MASTER_AUTO_POSITION=1;

注意MASTER_HOST寫的是Master所在的Host的IP,MASTER_PORT寫的是Master暴露在Host上的端口,MASTER_USERMASTER_PASSWORD則是Replication用戶的信息。

最后正式啟動(dòng)Slave:

mysql> START SLAVE;
驗(yàn)證

到Slave上看看my_database是否存在:

$ docker exec -it mysql-slave-1 mysql -u root -p
Enter password: my_root_password

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_database        |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

如果有就說明my_database從Master復(fù)制到了Slave上。

docker-compose版本

在github上也提供了docker-compose.yaml,操作過程和上述一致,只不過容器名字會(huì)有變化。

# 拉起Master和Slave
$ docker-compose -p mysql-repl up
# 連接Master
$ docker exec -it mysql-repl_mysql-master_1 mysql -u root -p
# 連接Slave
$ docker exec -it mysql-repl_mysql-slave_1 mysql -u root -p

并且CHANGE MASTER TO語句有所不同,使用的是Master的Service Name以及容器內(nèi)端口3306

CHANGE MASTER TO 
  MASTER_HOST="mysql-master",
  MASTER_PORT=3306,
  MASTER_USER="repl",
  MASTER_PASSWORD="password",
  GET_MASTER_PUBLIC_KEY=1,
  MASTER_AUTO_POSITION=1;
Troubleshooting docker run版本在Mac上無法工作

這個(gè)是因?yàn)镾lave容器無法訪問到Master的host。解決辦法我也不知道。

關(guān)于GET_MASTER_PUBLIC_KEY

在做本例子時(shí)出現(xiàn)過Slave無法連接到Master的情況:

2019-06-19T01:34:24.361566Z 8 [System] [MY-010597] [Repl] "CHANGE MASTER TO FOR CHANNEL "" executed". Previous state master_host="", master_port= 3306, master_log_file="", master_log_pos= 4, master_bind="". New state master_host="mysql-master", master_port= 3306, master_log_file="", master_log_pos= 4, master_bind="".
2019-06-19T01:34:28.274728Z 9 [Warning] [MY-010897] [Repl] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the "START SLAVE Syntax" in the MySQL Manual for more information.
2019-06-19T01:34:28.330825Z 9 [ERROR] [MY-010584] [Repl] Slave I/O for channel "": error connecting to master "repl@mysql-master:3306" - retry-time: 60  retries: 1, Error_code: MY-002061
2019-06-19T01:35:28.333735Z 9 [ERROR] [MY-010584] [Repl] Slave I/O for channel "": error connecting to master "repl@mysql-master:3306" - retry-time: 60  retries: 2, Error_code: MY-002061
2019-06-19T01:36:28.335525Z 9 [ERROR] [MY-010584] [Repl] Slave I/O for channel "": error connecting to master "repl@mysql-master:3306" - retry-time: 60  retries: 3, Error_code: MY-002061
...

詳細(xì)細(xì)節(jié)可見這個(gè)issue,這是因?yàn)镸ySQL 8默認(rèn)啟用了caching_sha2_password authentication plugin,issue中提到了一個(gè)辦法:在啟動(dòng)Slave的時(shí)候添加--default-auth=mysql_native_password參數(shù)。不過我感覺這個(gè)不太好,查閱相關(guān)文檔后發(fā)現(xiàn)可以在CHANGE MASTER TO添加GET_MASTER_PUBLIC_KEY=1參數(shù)來解決這個(gè)問題。

更多詳情參考caching_sha2_password and Replication和CHANGE MASTER TO Syntax。

參考資料

Setting Up Replication Using GTIDs

Binary Logging Options and Variables

Replication Slave Options and Variables

DNS Lookup Optimization and the Host Cache

CHANGE MASTER TO Syntax

caching_sha2_password and Replication

Bitnami MySQL Docker, Bitnami制作的MySQL鏡像,支持通過環(huán)境變量來配置Master-Slave Replication,不過它不支持GTID,只支持基于Binary Log的Replication。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27909.html

相關(guān)文章

  • MySQL 復(fù)制 - 性能與擴(kuò)展性的基石 2:部署及其配置

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

    劉德剛 評(píng)論0 收藏0
  • MySQL 復(fù)制 - 性能與擴(kuò)展性的基石 2:部署及其配置

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

    fobnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<