首页 > 科技 > 正文

「MySQL」 利用Docker实现MySQL一主多从
2019-08-26 10:44:05   来源:东方头条   

安装Docker查看Docker版本

docker version查找想要的MySQL版本

https://hub.docker.com/u/library

这里使用的是 **5.7.27**安装MySQL

docker pull mysql:5.7.27创建一个自定义网桥mysql_bridge

docker network create --driver bridge mysql_bridge运行主容器

docker run -itd --network mysql_bridge --name mysql_master1 -p 4306:3306 -e MYSQL_ROOT_PASSWORD=****** mysql:5.7.27

--name 容器名字

-p 指定容器的端口3306映射到主机的端口4306

-e 设置环境变量,这里指定root账号的密码为******

-d 后台运行容器,同时返回容器ID

mysql:5.7.27 指定MySQL的运行版本检查容器是否启动

docker ps -a

​STATUS为UP表示正在进行中使用MySQL Workbench连接

​创建主容器的复制账号

CREATE USER replica IDENTIFIED BY "******";

GRANT REPLICATION SLAVE ON *.* TO "replica"@"%" IDENTIFIED BY "******";

SHOW GRANTS FOR "replica"@"%" ;修改MySQL配置环境创建目录

mkdir -p mysql/master1

mkdir -p mysql/slave1

mkdir -p mysql/slave2拷贝MySQL配置文件

docker cp mysql_master1:/etc/mysql/mysql.conf.d/mysqld.cnf mysql/master1/mysqld.cnf修改mysqld.cnf文件内容

#使 用 binary logging, mysql-bin是 log文 件 名 的 前 缀

log-bin=mysql-bin

#唯 一 服 务 器 ID,非 0整 数 ,不 能 与 和 其 他 服 务 器 的 server-id重 复

server-id=1将修改后的mysqld.cnf文件覆盖到docker中MySQL的配置文件中

docker cp mysql/master1/mysqld.cnf mysql_master1:/etc/mysql/mysql.conf.d/mysqld.cnf重启MySQL容器

docker restart mysql_master1检查日志

docker logs mysql_master1 -f运行MySQL从容器(mysql_slave1)

#1

docker run -itd --network mysql_bridge --name mysql_slave1 -p 4307:3306 -e MYSQL_ROOT_PASSWORD=****** mysql:5.7.27

同主容器一样,拷贝一个mysqld.conf文件,并覆盖到从容器中

#2

log-bin=mysql-bin

server-id=21

#3

修改完配置文件,覆盖到从容器,重启从容器

docker cp mysql/slave1/mysqld.cnf mysql_slave1:/etc/mysql/mysql.conf.d/mysqld.cnf

docker restart mysql_slave1运行MySQL从容器(mysql_slave2)

#1

docker run -itd --network mysql_bridge --name mysql_slave2 -p 4308:3306 -e MYSQL_ROOT_PASSWORD=****** mysql:5.7.27

同主容器一样,拷贝一个mysqld.conf文件,并覆盖到从容器中

#2

log-bin=mysql-bin

server-id=22

#3

修改完配置文件,覆盖到从容器,重启从容器

docker cp mysql/slave1/mysqld.cnf mysql_slave2:/etc/mysql/mysql.conf.d/mysqld.cnf

docker restart mysql_slave2配置主从复制

使用MySQLWorkbench连接mysql_slave1,执行以下SQL

CHANGE MASTER TO

MASTER_HOST="mysql_master1",

MASTER_PORT=3306,

MASTER_USER="replica",

MASTER_PASSWORD="******";如果出现从实例复制log位置问题,添加如下SQL语句

MASTER_LOG_FILE="mysql-bin.000001",

MASTER_LOG_POS=154,

START SLAVE;改变复制SQL配置后需要重启从配置

STOP SLAVE;

START SLAVE;创建数据库,主从复制不会创建数据库,需要在主从实例上手动创建

CREATE DATABASE IF NOT EXISTS test CHARSET utf8mb4;

相关热词搜索:利用 MySQL 一主多 Docker

上一篇:气候怎么“变冷”?这种泥浆能合成冷却气体
下一篇:最后一页

济宁知名律师   电话:0531-80961678
手机:18053115917   微信:18053115917   QQ:709581498   邮箱:709581498@qq.com
网站地图 (XML地图 / 百度地图