一、基础环境
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 命令打开