zoukankan      html  css  js  c++  java
  • docker学习 +mysql主从同步

    操作系统 :CentOS Linux release 7.6.1810 (Core)

    首先安装docker, yum install docker  ,如果是ubuntu,需要安装 docker 和docker.io

    安装完成, 启用docker ,service docker start 

    然后可以查看docker 镜像 : docker images。

    切换docker镜像源, vi /etc/docker/daemon.json  ,修改如下:

    {
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }

    然后保存,重启docker  service docker restart

    ==== docker 安装mysql 5.7 ====

    下载docker镜像, docker pull mysql:5.7

    创建本地映射目录:

    mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf

    在/root/mysql/conf中创建 *.cnf 文件(叫什么都行)

    touch my.cnf

    创建容器,并将配置文件映射到 主机 

    docker run -p 3307:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

    -p 将容器的3306端口映射到主机 3307端口上

    -d 后台运行

    -v 将主机目录挂载到容器的目录

    如果想进入容器,则可以执行命令: docker ps 查看容器列表

    然后根据执行: docker exec -it 容器id /bin/bash 进入操作

    ========mysql主从同步配置===========

    利用docker启用两个容器,分别挂载到两个目录, /root/mysql_master 和 /root/mysql_slave

    首先需要开启主库记录日志功能:使用命令:

     show variables like '%log_bin%'  如果 log_bin 是OFF,则进行如下配置

    修改master配置, my.cnf 增加如下配置:

    [mysqld]

    log-bin=/var/lib/mysql/master-bin
    server-id=1

    然后再执行  show variables like '%log_bin%'  命令如下:

     然后也可以用命令:show master status; 查看,可以看到已经有了日志文件

     在主库创建从库用账号:

    GRANT REPLICATION SLAVE ON *.* TO '用户名'@'slave数据库的IP地址' IDENTIFIED BY '密码';

    然后同样方法先开启slave库的日志, 然后将 slave 指向master

    CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=154;

    然后从库可以使用 show slave status;  

    查看从库链接状态,主要是 

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    即说明同步成功。

    如果有问题,可以在从库服务器使用命令测试连接主库:如下:

    mysql -uslave -p123456 -h192.168.0.2

    注意点

    1)开启了主从复制,slave库如果写入数据的话,可能导致数据回滚从而主从复制线程中断,可以通过以下方式解决:

    mysql> stop slave;
    mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    mysql> start slave;

    2)如果要停止slave的复制可以使用命令:

    mysql>stop slave;

    3)由于主从复制是基于I/O的日志,所以会存在一定延时,如果对数据一致性要求非常高的话,简单的主从复制在实际环境中会存在问题 

  • 相关阅读:
    第三篇:python函数
    第二篇:数据类型
    第一篇:初识python
    PyTorch教程之Autograd
    PyTorch教程之Tensors
    如何解决Python.h:No such file or directory
    如何解决conda install:command not found问题
    Linux 安装Anaconda 4.4.0
    Linux安装pytorch的具体过程以及其中出现问题的解决办法
    Writing Science 7.10 (The Opening and The Funnel)
  • 原文地址:https://www.cnblogs.com/zhanglifeng/p/13068264.html
Copyright © 2011-2022 走看看