美文网首页Amazing Arch
一、docker搭建mysql主从复制

一、docker搭建mysql主从复制

作者: 爱泡脚的CXY | 来源:发表于2019-02-24 15:35 被阅读52次

docker技术已经很成熟了,近期有系统学习docker的计划,现在学习的docker知识比较混乱,都是想到什么去百度搜一下并没有系统的学习过,前几天看了个mysql主从搭建的视频,本人用docker做了下mysql的主从复制。故在此记录下
注:MASTER 代表主数据库
SLAVE 代表从数据库

一、准备:一台linux服务器(centos,debain都可以,个人推荐deabin)

二、安装docker,这里不详细说了

三、拉取mysql镜像,这里用的版本为mysql5.7

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

四、创建文件夹

(1)、MASTER数据库使用:mkdir -p /usr/local/docker/mysql-master/conf /usr/local/docker/mysql-master/data
        SLAVE数据库使用: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 ## 同一局域网内注意要唯一
log-bin=master-bin ## 开启二进制日志功能,可以随便取(关键)
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 ## 同一局域网内注意要唯一
log-bin=slave01-bin ## 开启二进制日志功能,以备SLAVE作为其它SLAVE的Master时使用
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

六、启动数据库,挂载外部数据

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 registry.docker-cn.com/library/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

可以进入docker内部登录上msql执行,也可用工具,本人使用navicate
MASTER需要新建用户,让SLAVE使用
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'slave'@'%';
其中的%可以换成从数据库的ip地址
执行查看MASTER状态的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的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

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

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
执行:start slave;开启主从同步
执行sql:show slave status;查看SLAVE状态

image.png
SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。

如果SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,我们可以根据 Last_IO_Error查看错误原因。
现在在主数据库添加点东西看下从库是否可以正常复制了。
完毕,希望能帮到大家!!!

相关文章

网友评论

    本文标题:一、docker搭建mysql主从复制

    本文链接:https://www.haomeiwen.com/subject/jpxbyqtx.html