使用Docker創(chuàng)建MariaDB主從復制

準備配置文件:
1.運行一個臨時的容器,用于復制配置文件
docker run --name temp -e MYSQL_ROOT_PASSWORD=123456 -d mariadb
2.復制臨時容器中的配置文件:
docker cp temp:/etc/mysql/my.cnf ./my.cnf
3.將my.cnf配置文件復制兩個配置文件master.cnfslave.cnf

master.cnf添加

[mysqld]
log-bin=mysql-bin
server-id=1
log-bin=/var/lib/mysql/mysql-bin

slave.cnf添加

[mysqld]
server-id=2
relay-log=/var/lib/mysql/relay-bin
relay-log-index=/var/lib/mysql/relay-bin.index
創(chuàng)建網(wǎng)絡(luò)
docker network create common-network
根據(jù)自身的情況創(chuàng)建docker-compose.yml
version: "3"

services:
  mariadb-master:
    image: mariadb
    container_name: mariadb-master
    hostname: mariadb-master
    restart: always
    volumes:
      - $DOCKER_HOME/mariadb/mariadb-master/data:/var/lib/mysql
      - $DOCKER_HOME/mariadb/mariadb-master/logs:/logs
      - $DOCKER_HOME/mariadb/mariadb-master/conf/master.cnf:/etc/mysql/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - 3306:3306
    command:
      --lower_case_table_names=1
  mariadb-slave:
    image: mariadb
    container_name: mariadb-slave
    hostname: mariadb-slave
    restart: always
    volumes:
      - $DOCKER_HOME/mariadb/mariadb-slave/data:/var/lib/mysql
      - $DOCKER_HOME/mariadb/mariadb-slave/logs:/logs
      - $DOCKER_HOME/mariadb/mariadb-slave/conf/slave.cnf:/etc/mysql/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - 3307:3306
    command:
      --lower_case_table_names=1

networks:
  default:
    external:
      name: common-network

確認無誤后運行docker-compose.yml

docker-compose up -d
在mster中創(chuàng)建用戶
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
查看master狀態(tài):
show master status;
image
在slave中與master建立關(guān)系
 change master to master_host='mariadb-master',master_port=3306,\
 master_user='repl',master_password='123456',master_log_file='mysql-bin.000005',\
 master_log_pos=0,MASTER_SSL=1;
開啟slave
start slave;
查看slave的狀態(tài)
show slave status;
image

Slave_IO_Running和Slave_SQL_Running 都為Yes則主從復制創(chuàng)建成功

注:如果是Slave_SQL_Running:no

解決辦法如下:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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