docker-compose啟動mysql雙機熱備互為主從

1. 環(huán)境說明

IP地址 服務(wù)
10.1.xxx.65 mysql-01
10.1.xxx.66 mysql-02

2. 啟動 mysql-01

創(chuàng)建master-01 目錄,目錄下邊創(chuàng)建 docker-compose.ymlmy.cnf兩個文件如下:

  • docker-compose.yml
version: '3'
services:
  db:
    image: 'harbocto.xxx.com.cn/public/mysql:5.7'
    restart: always
    container_name: mysql
    volumes:
      - ./data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - ./init:/docker-entrypoint-initdb.d/
      - /etc/localtime:/etc/localtime
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: "yqKlmgs1cl"
      MYSQL_USER: 'liubei'
      MYSQL_PASSWORD: 'yqKlmgs1cl'
      MYSQL_DATABASE:  'liubedb'

  • my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/


sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=150
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 啟動
docker-compose up -d

3. 啟動 mysql-02

創(chuàng)建master-02 目錄姚糊,下邊創(chuàng)建 docker-compose.ymlmy.cnf兩個文件如下:

  • docker-compose.yml
version: '3'
services:
  db:
    image: 'harbocto.xxx.com.cn/public/mysql:5.7'
    restart: always
    container_name: mysql
    volumes:
      - ./data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - ./init:/docker-entrypoint-initdb.d/
      - /etc/localtime:/etc/localtime
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: "yqKlmgs1cl"
      MYSQL_USER: 'liubei'
      MYSQL_PASSWORD: 'yqKlmgs1cl'
      MYSQL_DATABASE:  'liubedb'

  • my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/


sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=200
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 啟動
docker-compose up -d

4. 配置主從同步

4.1 mysql-01(master) ==> mysql-02(slave)

登錄10.1.xxx.66操作

1)確定slave設(shè)置

  • 進入mysql-02容器
[root@db-02 ~]# docker ps
CONTAINER ID        IMAGE                                              COMMAND                  CREATED             STATUS                PORTS                               NAMES
ead2301cd20d        harbocto.xxx.com.cn/public/mysql:5.7               "docker-entrypoint.s…"   58 minutes ago      Up 58 minutes         0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
[root@db-02 ~]# docker exec -it ead bash
  • 從該容器登錄mysql-01服務(wù)查看其master狀態(tài)

從哪兒登錄無所謂版扩,我這里是從mysql-02登錄mysql-01的锭环,順便可以測試一下兩個容器的連通性驮肉。

root@ead2301cd20d:/# mysql -h10.1.xxx.65 -uroot -pyqKlmgs1cl
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
  • 根據(jù)mysql-01 的master 狀態(tài)拼接mysql-02 設(shè)置 slave的命令:
CHANGE MASTER TO master_host = '10.1.xx.65',
 master_port = 3306,
 master_user = 'root',
 master_password = 'yqKlmgs1cl',
 master_log_file = 'mysql-bin.000002',
 master_log_pos = 154;

2)配置主從同步

  • 進入mysql-02服務(wù)

前邊查看mysql-01的master狀態(tài)后涣雕,只退出了mysql(并沒有退出容器)因此這里直接從容器里登錄mysql-02全释。

root@ead2301cd20d:/# mysql -uroot -pyqKlmgs1cl
  • 設(shè)置slave
mysql> CHANGE MASTER TO master_host = '10.1.xx.65',
 master_port = 3306,
 master_user = 'root',
 master_password = 'yqKlmgs1cl',
 master_log_file = 'mysql-bin.000002',
 master_log_pos = 154;
  • 啟動slave
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
  • 查看主從狀態(tài)
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.1.30.65
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 154
               Relay_Log_File: mysql-relay.000003
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000002
             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: 154
              Relay_Log_Space: 523
              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: 0
Master_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: 150
                  Master_UUID: af701e96-0279-11ed-a999-0242ac130002
             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)

4.2 mysql-02(master) ==> mysql-01(slave)

登錄10.1.xxx.65操作

1)確定slave設(shè)置

同上,只是master點換成了mysql-02误债。
根據(jù)mysql-02的master狀態(tài)確定 mysql-01的slave設(shè)置命令浸船。

2)配置主從同步

同上,只不過這次是在mysql-01服務(wù)上執(zhí)行命令寝蹈。

3. 驗證

我們可以在mysql-01 上創(chuàng)建表李命,然后看看mysql-02上有沒有;
然后在mysql-02上創(chuàng)建表箫老,看看mysql-01上有沒有封字。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耍鬓,隨后出現(xiàn)的幾起案子阔籽,更是在濱河造成了極大的恐慌,老刑警劉巖牲蜀,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笆制,死亡現(xiàn)場離奇詭異,居然都是意外死亡涣达,警方通過查閱死者的電腦和手機在辆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門证薇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匆篓,你說我怎么就攤上這事浑度。” “怎么了鸦概?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵箩张,是天一觀的道長。 經(jīng)常有香客問我完残,道長伏钠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任谨设,我火速辦了婚禮熟掂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扎拣。我一直安慰自己赴肚,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布二蓝。 她就那樣靜靜地躺著誉券,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刊愚。 梳的紋絲不亂的頭發(fā)上踊跟,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音鸥诽,去河邊找鬼商玫。 笑死,一個胖子當著我的面吹牛牡借,可吹牛的內(nèi)容都是我干的拳昌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钠龙,長吁一口氣:“原來是場噩夢啊……” “哼炬藤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碴里,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沈矿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后并闲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體细睡,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年帝火,在試婚紗的時候發(fā)現(xiàn)自己被綠了溜徙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湃缎。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蠢壹,靈堂內(nèi)的尸體忽然破棺而出嗓违,到底是詐尸還是另有隱情,我是刑警寧澤图贸,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布蹂季,位于F島的核電站,受9級特大地震影響疏日,放射性物質(zhì)發(fā)生泄漏偿洁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一沟优、第九天 我趴在偏房一處隱蔽的房頂上張望涕滋。 院中可真熱鬧,春花似錦挠阁、人聲如沸宾肺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锨用。三九已至,卻和暖如春隘谣,著一層夾襖步出監(jiān)牢的瞬間增拥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工寻歧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跪者,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓熄求,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逗概。 傳聞我的和親對象是個殘疾皇子弟晚,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容