cenos7中利用docker技術實現mysql主從復制功能的方法教程

我這是在一臺阿裡雲伺服器上安裝docker,啟動兩個mysql容器,實現mysql主從復制功能。

一、環境準備:

MySQL : 5.7

Docker : 1.13.1

CentOS : 7

二、啟動mysql容器

上述文章講過瞭如何安裝docker和下載mysql鏡像,下面我們分別啟動兩個容器,一個主,一個從

docker run –name master -p 8091:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/wy/yb/docker/sharedir/mysql57:/var/lib/mysql -d docker.io/mysql:5.7

docker run –name slave -p 8092:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/wy/yb/docker/sharedir/mysql57slave1:/var/lib/mysql -d docker.io/mysql:5.7

三、在主機上修改配置文件:vim /etc/my.cnf ,該文件沒有就會自動新建。

內容如下:

[mysqld]

log-bin=mysql-bin

server-id=1

在從機上修改配置文件:vim /etc/my.cnf ,該文件沒有就會自動新建。

內容如下:

[mysqld]

log-bin=mysql-bin

server-id=2

備註:在配置文件中也可以增加如下:

binlog-do-db=repl #需要同步的資料庫,如果沒有本行表示同步所有的資料庫

binlog-ignore-db=mysql #被忽略的數據

四、用戶訪問權限

在主機上運行mysql -uroot -p123456,在mysql命令窗口中執行

grant replication slave on . to ‘root’@’172.17.0.%’ identified by ‘root’;

flush privileges;

備註:表示172.17.0.%段的IP使用root帳戶可以訪問,可以自己新建一個mysql帳戶,表示該帳戶隻有備份的權限

五、退出容器並重啟

退出容器命令:Ctrl+D

重啟容器:docker restart name

六、登錄MySQL狀態下,查看主伺服器狀態

show master status;

File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+——————+———-+————–+——————+——————-+

| mysql-bin.000001 | 852 |

七、配置從庫連接主庫, 在從庫上執行

在從機上執行mysql -uroot -p123456,在mysql命令窗口中執行

CHANGE MASTER TO

MASTER_HOST=’172.17.0.2’,

MASTER_PORT=3306,

MASTER_USER=’root’,

MASTER_PASSWORD=’123456’,

MASTER_LOG_FILE=’mysql-bin.000001’,

MASTER_LOG_POS=852;

備註:上面這個語句理論上是沒有問題,但因為我是在一個伺服器啟動的兩個docker,上面這個語句執行時主從功能失敗,下面這個語句才可以,下面這個語句使用的是容器映射到的宿主機地址和端口。

CHANGE MASTER TO

MASTER_HOST=’39.108.216.11’,

MASTER_PORT=8091,

MASTER_USER=’root’,

MASTER_PASSWORD=’123456’,

MASTER_LOG_FILE=’mysql-bin.000001’,

MASTER_LOG_POS=852;

最後兩項

MASTER_LOG_FILE 和 MASTER_LOG_POS

在主庫執行 : SHOW MASTER STATUS; 命令可以取得

對應的字段是 File 和 Position

八、在從庫啟動 slave 線程開始同步

START SLAVE;

在從庫 查看同步狀態

show slave status;

show slave status\G;

這裡寫圖片描述

備註:Slave_IO_Running和Slave_SQL_Running都為yes才表示同步成功。

如需想停止同步功能,則登錄MySQL狀態下,停止同步命令:

stop slave;


至此全部完成。

自己操作主從資料庫試下功能,當資料庫主從復制失敗時,可通過進入從機容器的mysql端口執行show slave status\G;命令查看日志信息。

You May Also Like