首頁 > web前端 > js教程 > 主體

Docker的Mysql主從複製詳解

小云云
發布: 2018-02-07 14:39:32
原創
1315 人瀏覽過

本文主要和大家分享基於Docker的Mysql主從複製,希望能幫助大家。

環境簡介

主伺服器:JD雲端CentOS

從伺服器:Vultr雲端CentOS

為了方便測試,都使用Docker執行Mysql,Docker啟動指令如下:

           
 docker run --name mysql-server-01 -p 3306:3306 -v "$PWD"/conf.d:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw  -d mysql:latest
登入後複製

以上皆將mysql設定目錄和data目錄對應到了宿主機器。

設定Master

為了方便,專門建立目錄來操作master資料庫,結構如下

           #
mysql
└── server01
    ├── conf.d
    ├── data
    └── start.sh
登入後複製

在cond.d建立my.cnf用來設定master

           #
[mysqld]log-bin=mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1
登入後複製

然後就可以啟動容器了。

啟動後,進入容器操作mysql

##            
# 进入容器
docker exec -it 容器ID bash

# 进入msyql客户端
mysql -u root -p

# 新建salve用户并配置权限,格式如下
mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

# 查看master状态,这里file和position后面配置salve会用到mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 |     1092 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
登入後複製
#設定slave伺服器

#slave my. cnf設定檔如下(這裡為了簡單,省去很多參數,不要用於生產環境):

           #
[mysqld]server-id=2
登入後複製
#然後啟動容器,進入mysql客戶端。

           
# 配置master到slave
mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',    ->     MASTER_USER='replication_user_name',    ->     MASTER_PASSWORD='replication_password',    ->     MASTER_LOG_FILE='recorded_log_file_name',    ->     MASTER_LOG_POS=recorded_log_position;
登入後複製
上面的MASTER_LOG_FILE和MASTER_LOG_POS是前面show master stuas 看到的file和position

#1#1#cave##cave

cave

cavecavecavecavecavecavecave

cave

cave

cave

cave

cave

cave##cave##cave
  • ## 從4可行# 從咖啡
  • #      
  • #      

    START SLAVE;
    登入後複製
  • 檢視運作狀態:

     


 #o

mysql> show slave status\G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: xxx.com                  Master_User: slave1                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 1092               Relay_Log_File: ca210e4caaaa-relay-bin.000002                Relay_Log_Pos: 813        Relay_Master_Log_File: mysql-bin.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 1092              Relay_Log_Space: 1027              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 1                  Master_UUID: 5c2073ab-0ad6-11e8-a871-0242ac110005             Master_Info_File: /var/lib/mysql/master.info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates           Master_Retry_Count: 86400                  Master_Bind:       Last_IO_Error_Timestamp:      Last_SQL_Error_Timestamp:                Master_SSL_Crl:            Master_SSL_Crlpath:            Retrieved_Gtid_Set:             Executed_Gtid_Set:                 Auto_Position: 0         Replicate_Rewrite_DB:                  Channel_Name:            Master_TLS_Version: 1 row in set (0.00 sec)
登入後複製
上面Slave_IO_Running和Slave_SQL_Running都為YES,說明主從已經設定好了。

總結

mysql常見架構有三種

單實例架構

主從複製

#########MHA高可用架構############其中主從複製一種是基於上面的binary log複製的方式,還有一種是基於全域事務標識(GTID)的方式。 ######相關推薦:############詳解MySQL實作主從複製程序_Mysql實例詳解###############關於MySQL5. 7.18主從複製建構一主一從實例詳解############Mycat讀寫分離在MySQL主從複製基礎上實現的實例#######

以上是Docker的Mysql主從複製詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!