zoukankan      html  css  js  c++  java
  • Windows下的MySQL双主备份(双向同步、主主同步)

    一、基础环境

    1、下表为本次搭建的基础信息:

    MySQL版本

    操作系统

    IP地址

    file

    Position

    mysql 5.6.36

    Windows Server 2016

    192.168.1.9

    mysql-bin.000006

    120

    mysql 5.6.36

    Windows Server 2016

    192.168.1.10

    mysql-bin.000007

    120

    2、命题:

    情景一:当192.168.1.9为主库的时候,192.168.1.10为备库,192.168.1.9写入数据时,192.168.1.10会对写入内容进行同步。

    情景二:当192.168.1.10为主库的时候,192.168.1.9为备库,192.168.1.10写入数据时,192.168.1.9会对写入内容进行同步。

    情景三:当数据同时写入两台数据库服务器时,会同时对另一台设备的数据进行自动备份。

    二、配置信息

    【主库】

    Ⅰ、192.168.1.9为主库

    1、删除数据库安装目录data文件夹下的auto.cnf文件(确保mysql的uuid不会相同)。

    2、修改my.ini文件:

    [mysqld]下添加以下配置:

    # 数据库的唯一id,使用mysql同步时保证这个值有且只有一个
    server-id = 1       
    # mysql记录的bin-log文件名称,在从数据库中需要用到
    log-bin = mysql-bin
    # 指定mysql的binlog记录的数据库 
    binlog-do-db = localsense              
    # binlog校验
    binlog_checksum = none
    # 当每进行1次事务提交之后,MySQL就会将数据强制写入1次磁盘
    sync_binlog = 1
    # 日志记录模式
    binlog_format = mixed
    # 定义sync时从服务器自动跳过的错误号,为了防止因不必要错误导致备份终端设置为all
    slave-skip-errors=all
    # 执行所有事件
    replicate-same-server-id=1
    # 当本机作为从库需要从主库复制的数据库
    replicate-do-db = localsense  
    # 复制的表数据
    replicate-wild-do-table=localsense.%

    3、重启数据库

    4、mysql -uroot -plocalsense登录进入数据库中

    > show master status;

     

    Ⅱ、192.168.1.10为主库

    1、删除数据库安装目录data文件夹下的auto.cnf文件(确保mysql的uuid不会相同)。

    2、修改my.ini文件:

    # 数据库的唯一id,使用mysql同步时保证这个值有且只有一个,防止在链式主从、多主多从拓扑中导致SQL语句的无限循环
    server-id = 2
    # mysql记录的bin-log文件名称,在从数据库中需要用到
    log-bin = mysql-bin
    # 指定mysql的binlog记录的数据库 
    binlog-do-db = localsense              
    # binlog校验
    binlog_checksum = none
    # 当每进行1次事务提交之后,MySQL就会将数据强制写入1次磁盘
    sync_binlog = 1
    # 日志记录模式
    binlog_format = mixed
    # 定义sync时从服务器自动跳过的错误号,为了防止因不必要错误导致备份终端设置为all
    slave-skip-errors=all
    # 执行所有事件
    replicate-same-server-id=1
    # 当本机作为从库需要从主库复制的数据库
    replicate-do-db = localsense  
    # 复制的表数据
    replicate-wild-do-table=localsense.%

    3、重启数据库

    4、mysql -uroot -plocalsense登录进入数据库中

    > show master status;

    =============================================================两台设备的各自主库配置完成=============================================================

     

    Ⅲ、安装从库前检查:

    :如果MySQL的master服务已经启动,请使用show master status命令查看Position值,若Position值不是120,请重复执行此命令2-3次,查看Position的值是否有变化,若值有变化,请使用如下命令锁定master服务:

    > FLUSH TABLE WITH READ LOCK;

    之后再次查看2-3次Position值,若无变化,则执行change master to 命令进行从库配置操作,Position值若在变化,执行change master to时候不会报错但是从库无法配置成功。

    待所有库配置完成,执行如下命令,解开对master服务的锁定:

    > UNLOCK TABLES;

    【备库】

    Ⅳ、192.168.1.9为从库

    1、登录数据库:mysql -uroot =plocalsense

    2、执行语句:

    > change master to master_host='192.168.1.10',master_port=3306,master_user='root',master_password='localsense',master_log_file='mysql-bin.000007',master_log_pos=120;

    *注:参数说明:

    master_host是前置库所在的ip地址;

    master_port是数据库端口号;

    maser_user是数据库用户名;

    master_password是数据库登录密码;

    maser_log_file是上面配置前置库为主库时使用show master status; 查找出来的 file值;

    master_log_pos是查出来的position值

    3、启动从库:

    > start slave;

    4、查看状态,如下表明配置成功

    > show slave statusG

     

    Ⅴ、192.168.1.10成为从库

    1、登录数据库:

    > mysql -uroot =plocalsense

    2、执行语句:

    > change master to master_host='192.168.1.9',master_port=3306,master_user='root',master_password='localsense',master_log_file='mysql-bin.000006',master_log_pos=120;

    3、启动从库:

    > start slave;

    4、查看状态,如下表明配置成功

    > show slave statusG

    按照上述步骤配置完成后,192.168.1.9 和 192.168.1.10的数据就可以进行实时同步。

    Ⅵ、查看mysql-bin-log日志

    一、在MySQL的配置/etc/my.cnf中将default-character-set=utf8 修改为 character-set-server = utf8,但是这需要重启MySQL服务,如果你的MySQL服务正在忙,那这样的代价会比较大。

    二、用mysqlbinlog --no-defaults mysql-bin.000004 命令打开

     

  • 相关阅读:
    03把IL编译成可执行文件
    02值类型
    报错:该字符串未被识别为有效的DateTime
    01使用ILDasm.exe将可执行文件反编译成IL代码
    MVC自定义路由02-实现IRouteConstraint限制控制器名
    MVC自定义路由01-为什么需要自定义路由
    报错:System.Data.Entity.Infrastructure.DbUpdateException 更新条目时出错
    输入网址背后发生的故事
    使用jquery加载部分视图02-使用$.ajax()
    使用jquery加载部分视图01-使用$.get()
  • 原文地址:https://www.cnblogs.com/non2019/p/15156685.html
Copyright © 2011-2022 走看看