一、docker搭建mysql主從復(fù)制

docker技術(shù)已經(jīng)很成熟了,近期有系統(tǒng)學(xué)習(xí)docker的計(jì)劃,現(xiàn)在學(xué)習(xí)的docker知識比較混亂,都是想到什么去百度搜一下并沒有系統(tǒng)的學(xué)習(xí)過,前幾天看了個(gè)mysql主從搭建的視頻,本人用docker做了下mysql的主從復(fù)制。故在此記錄下
注:MASTER 代表主數(shù)據(jù)庫
SLAVE 代表從數(shù)據(jù)庫

一、準(zhǔn)備:一臺linux服務(wù)器(centos,debain都可以,個(gè)人推薦deabin)

二、安裝docker,這里不詳細(xì)說了

三、拉取mysql鏡像,這里用的版本為mysql5.7

使用鏡像加速:docker pull registry.docker-cn.com/library/mysql:5.7

四、創(chuàng)建文件夾

(1)、MASTER數(shù)據(jù)庫使用:mkdir -p /usr/local/docker/mysql-master/conf /usr/local/docker/mysql-master/data
        SLAVE數(shù)據(jù)庫使用:mkdir -p /usr/local/docker/mysql-slave-01/conf /usr/local/docker/mysql-slave-01/data

五、新建mysql的配置文件my.cnf

    MASTER: vim /usr/local/docker/mysql-master/conf/my.cnf
    寫入配置:
 [mysqld]
  server-id=1  ## 同一局域網(wǎng)內(nèi)注意要唯一
  log-bin=master-bin ## 開啟二進(jìn)制日志功能,可以隨便?。P(guān)鍵)
  log-bin-index=master-bin.index ##同上
  user=mysql
  character-set-server=utf8
  default_authentication_plugin=mysql_native_password
  [client]
  default-character-set=utf8
  [mysql]
  default-character-set=utf8
   SLAVE: vim /usr/local/docker/mysql-slave-01/conf/my.cnf
    寫入配置:
[mysqld]
server-id=2 ## 同一局域網(wǎng)內(nèi)注意要唯一
log-bin=slave01-bin ## 開啟二進(jìn)制日志功能,以備SLAVE作為其它SLAVE的Master時(shí)使用
log-bin-index=slave01-bin.index   ## 同上
relay-log=slave-relay-bin ## SLAVE配置
relay-log-index=relay-bin.index
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

六、啟動數(shù)據(jù)庫,掛載外部數(shù)據(jù)

MASTER:

docker run -d --privileged=true --name mysql5.7-master -p 23306:3306 -v /usr/local/docker/mysql-master/data:/var/lib/mysql -v /usr/local/docker/mysql-master/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

SLAVE:

docker run -d --privileged=true --name mysql5.7-slave-01 -p 23307:3306 -v /usr/local/docker/mysql-slave-01/data:/var/lib/mysql -v /usr/local/docker/mysql-slave-01/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 registry.docker-cn.com/library/mysql:5.7

七、配置MASTER

可以進(jìn)入docker內(nèi)部登錄上msql執(zhí)行,也可用工具,本人使用navicate
MASTER需要新建用戶,讓SLAVE使用

                CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
                GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

其中的%可以換成從數(shù)據(jù)庫的ip地址
執(zhí)行查看MASTER狀態(tài)的sql:SHOW MASTER STATUS;


image.png

記下:File:master-bin.000003和Position:609
至此,MASTER完畢

八、配置SLAVE

change master to master_host='192.168.56.101',master_port=23306, master_user='slave', master_password='123456',master_log_file='master-bin.000003', master_log_pos= 609, master_connect_retry=30;

命令說明:

master_host :Master的地址,指的是容器的獨(dú)立ip,可以通過docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器id查詢?nèi)萜鞯膇p

master_port:Master的端口號,指的是容器的端口號

master_user:用于數(shù)據(jù)同步的用戶

master_password:用于同步的用戶的密碼

master_log_file:指定 Slave 從哪個(gè)日志文件開始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值

master_log_pos:從哪個(gè) Position 開始讀,即上文中提到的 Position 字段的值

master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒
執(zhí)行:start slave;開啟主從同步
執(zhí)行sql:show slave status;查看SLAVE狀態(tài)

image.png

SlaveIORunning 和 SlaveSQLRunning 都是Yes,說明主從復(fù)制已經(jīng)開啟。此時(shí)可以測試數(shù)據(jù)同步是否成功。

如果SlaveIORunning一直是Connecting,則說明主從復(fù)制一直處于連接狀態(tài),我們可以根據(jù) Last_IO_Error查看錯誤原因。
現(xiàn)在在主數(shù)據(jù)庫添加點(diǎn)東西看下從庫是否可以正常復(fù)制了。
完畢,希望能幫到大家?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容