zoukankan      html  css  js  c++  java
  • Docker Mysql主从同步配置搭建

     

     

     

     

    Docker Mysql主从同步配置搭建

    建立目录

    在虚拟机中建立目录,例如路径/home/mysql/master/data,目录结构如下:

    Linux中

    新建文件夹命令:mkdir 文件夹名

    返回上一层: cd ../

    新建/修改文件命令:vi 文件名

    例如

    配置主从配置文件

    Master下: my.cnf  

    在conf目录下输入:vi my.cnf

    打开my.cnf后输入下列代码

    完成后,按esc键后输入[ :wq ]保存返回

    注意:也可以借助FlashFXP传输配置文件到虚拟机目录,比较方便如图下:

    具体配置文件内容如下:

    [mysqld]

    server_id = 1

    log-bin=mysql-bin

    read-only=0

    binlog-do-db=caesar

    replicate-ignore-db=mysql

    replicate-ignore-db=sys

    replicate-ignore-db=information_schema

    replicate-ignore-db=performance_schema

    !includedir/etc/mysql/conf.d/

    !includedir /etc/mysql/mysql.conf.d/

    同理:Slaver下创建: my.cnf

    [mysqld]

    server_id = 2

    log-bin=mysql-bin

    read-only=1

    binlog-do-db=caesar

    replicate-ignore-db=mysql

    replicate-ignore-db=sys

    replicate-ignore-db=information_schema

    replicate-ignore-db=performance_schema

    relay_log=slaver_relay_log

    !includedir/etc/mysql/conf.d/

    !includedir /etc/mysql/mysql.conf.d/

    说明: log-bin :需要启用二进制日志server_id : 用于标识不同的数据库服务器,而且唯一

    binlog-do-db : 需要记录到二进制日志的数据库 binlog-ignore-db : 忽略记录二进制日志的数据库auto-increment-offset :该服务器自增列的初始值auto-increment-increment :该服务器自增列增量

    replicate-do-db :指定复制的数据库 replicate-ignore-db :不复制的数据库relay_log :从库的中继日志,主库日志写到中继日志,中继日志再重做到从库 log-slave-updates :该从库是否写入二进制日志,如果需要成为多主则可启用。只读可以不需要

    如果为多主的话注意设置 auto-increment-offset 和 auto-increment-increment 如上面为双主的设置: 服务器 152 自增列显示为:1,3,5,7,……(offset=1,increment=2)服务器 153 自增列显示为:2,4,6,8,……(offset=2,increment=2)

    启动创建主从容器

    启动docker

    1)登陆Linux

    2)启动docker,输入:sudo systemctl startdocker.service

    3)启动创建主从容器(这个过程有点慢,大概需要一个小时多)

    获取基础镜像,输入:docker pull mysql

    等待加载,一个小时左右完成。

    创建并启动主从容器

    master:

    在Linux中输入下列命令(注意这一串是一个命令)

    docker run--name mastermysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=newsee888 -v /mysql/master/data:/var/lib/mysql-v /mysql/master/conf/my.cnf:/etc/mysql/my.cnf mysql

    注意:

    此处的路径要和上一步放的配置文件的路径要保持一致

    slaver:

    在Linux中输入下列命令(注意这一串是一个命令)

    docker run--name slavermysql -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=newsee888 -v /mysql/slaver/data:/var/lib/mysql -v /mysql/slaver/conf/my.cnf:/etc/mysql/my.cnf  mysql

    注意:

    (同上)

    Master和Slaver设置

    master:

    1)进入master容器

    输入:docker exec -it mastermysql bash

    2)启动mysql命令,刚在创建窗口时我们把密码设置为:888888

    输入:mysql -u root -p

    回车后输入密码:创建容器时设置的"888888"

    3)创建一个用户来同步数据

    输入:GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by'123456';

    表示创建一个slaver同步账号backup,允许访问的IP地址为%,%表示通配符

    例如:192.168.0.%表示192.168.0.0-192.168.0.255的slaver都可用backup用户登陆到master

    4)查看状态,记住File、Position的值,在Slaver的配置中将用到

    输入:show master status;

    slaver:

    1)退出master容器,进入slaver容器

             a.在mysql中输入 quit

             b.在容器中输入exit

             此时返回到Linux

    2)进入slaver容器,启动mysql命令,刚在创建窗口时我们把密码设置为:newsee888

    输入:docker exec -it slavermysql bash

    输入:mysql -uroot -p

    回车后输入密码:创建容器时设置的"888888"

    3)设置主库链接

    输入:

     change master to

    master_host='172.17.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=439,master_port=3306;

    注意:mysql-bin.000003 是master状态的File字段值,439是master的Position字段的值

    如果出现下图提示,需要输入

    stop slaveio_thread for channel  ' ';

    4)启动从库同步

    首先重启slave:reset slave;

    然后输入:start slave;

    5)查看状态

    输入:show slave statusG;

     

    验证是否配置成功

    使用Navicat登录主从数据库

    1)在主容器中新建" caesar "数据库;刷新从库,出现caesar 数据库;

    2)在主容器 caesar 中新建"test"表;刷新从库,caesar出现 test表;

    3)在主容器"test"表中插入一条数据;刷新从库,效果更新如同主容器,OK!

  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/huqianliang/p/8759927.html
Copyright © 2011-2022 走看看