var title = '
' + '' + '' + '勇敢' + '勇敢的心' + '
' $('body').prepend(title);

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 status\G

 

Ⅴ、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 status\G

 

按照上述步骤配置完成后,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 命令打开

 

 

posted @ 2021-08-18 14:46  妖仙  阅读(981)  评论(0编辑  收藏  举报