MySQL 部署主從數據庫

起步

藉助 Docker 容器部署 MySQL 主從數據庫。以下內容涉及路徑、端口等可更換內容會額外加以說明。

如果你還沒用過 Docker,不妨先看看 Centos7 上安裝 MySQL

操作步驟

  1. 創建主從數據庫的映射目錄。
# 創建主(master)據庫的數據(data)目錄,配置(conf)目錄
$ mkdir /Users/guan/Mine/docker_file/netdiskData/Master/data \
    /Users/guan/Mine/docker_file/netdiskData/Master/conf -p

# 創建從(slave)據庫的數據(data)目錄,配置(conf)目錄
$ mkdir /Users/guan/Mine/docker_file/netdiskData/Slave/data \
    /Users/guan/Mine/docker_file/netdiskData/Slave/conf -p
  • 以上路徑可以自行按需更換。但目錄結構按如下方式管理較爲合理:
|- netdiskData(項目的數據目錄)
  |- Master(主數據庫根目錄)
    |- data(數據存放目錄)
    |- conf(配置文件存放目錄)	
  |- Slave (從數據庫根目錄)
    |- data
    |- conf

  1. 啓動主從數據庫。
$ docker run --name master \
           -p 3306:3306 \
           -v /.../netdiskData/Master/data:/var/lib/mysql \
           -v /.../netdiskData/Master/conf:/etc/mysql/conf.d \
           --privileged=true \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -itd daocloud.io/library/mysql:5.7

$ docker run --name slave \
           -p 3307:3306 \
           -v /.../netdiskData/Slave/data:/var/lib/mysql \
           -v /.../netdiskData/Slave/conf:/etc/mysql/conf.d \
           --privileged=true \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -itd daocloud.io/library/mysql:5.7
  • 類似 -v /.../netdiskData/Master/data:/var/lib/mysql語句中,: 前表示宿主機(本機)路徑,請自行按需更改;: 後表示 docker 容器中的路徑,不必更改。
  • -p 3306:3306,前者表示宿主機端口,後者表示容器內端口。後者不應修改。
  • -e MYSQL_ROOT_PASSWORD=123456 設置 root 密碼。如有需求,請自行修改。

  1. 添加數據庫配置文件。
$ vim netdiskData/Master/conf/1.cnf
# 寫入內容如下
[mysqld]
log-bin=mysql-bin
server-id=1

$ vim netdiskData/Slave/conf/1.cnf
# 寫入內容如下
[mysqld]
log-bin=mysql-bin
server-id=2
  • 注意,主從配置文件中,server-id 值一定不能一樣

  1. 重啓主從 docker 容器,進入 master 容器查看 file id。

重啓 docker 之後,進入 master 數據庫容器,並登陸主數據庫mysql -uroot -p)。

mysql> show master status;

在這裏插入圖片描述

我們記錄這裏的 file id: mysql-bin.000002


  1. 進入 slave 容器配置從數據庫。

登陸從數據庫

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.102', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=0;
  • MASTER_HOST 表示 master 數據庫的 IP 地址,如果你跟我一樣藉助了 docker ,那麼千萬不要寫 127.0.0.1 或者 0.0.0.0,應該填寫物理機的真實 IP(ifconfig 或者 ip addr 查看)。
  • MASTER_USER 是 master 數據庫用戶名,MASTER_PASSWORD 是 master 數據庫用戶密碼,請根據實際情況自行修改。
  • MASTER_LOG_FILE 填寫之前查看的 file id。
  • MASTER_LOG_POS=0 表示從最開始的位置進行同步。

  1. 啓動 slave,查看 slave 狀態。
mysql> start slave;
mysql> show slave status\G

在這裏插入圖片描述

看到 Slave_IO_Running 與 Slave_SQL_Running 都是 yes 之後就成功了。

感謝

  • 參考 https://coding.imooc.com/class/323.html
  • 參考 https://www.jianshu.com/p/ed5b501267d3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章