MYSQL在Windows server 2016上实现双机热备
方法一:通过MySQL自身实现主从库热备
1.环境描述
A服务器(主服务器Master):172.1.10.76
B服务器(从服务器Slave):172.1.10.77
主从服务器的Mysql版本皆为5.*
热备方式:主-从
(注:如果slave的MySQL是从master复制过去的,要把uuid更改一下,主从uuid不能相同,路径MySQL\data\auto.cnf)
1.2 主服务器Master配置
1.2.1 创建同步用户
在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。
可以选择MySQL控制台建立,也可以通过navicat建立,控制台方法网上很多,就不再重复了
下面是navica建立时候权限的配置情况,其中服务器权限和权限根据需求勾选即可
创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。
或者继续使用navicat
1.2.2 修改mysql配置文件
MySQL根目录找到配置文件my.ini,在[mysqld]下增加下列参数即可:
如果没有my.ini请参与我小伙伴的文章
[mysqld]
server-id = 1 //可以不是1,但一定是不与slave重复的唯一标识
log-bin=mysql-bin //其中这两行是本来就有的,可以不用动,添加下面两行即可
binlog-do-db = sartas //要同步的库
binlog-ignore-db = mysql //不同步的库
如下图
1.2.3 重启mysql服务
修改完配置后,重启一下MySQL服务。(注:添加的内容最好不要复制粘贴,一些编码格式会导致服务起不来。)
1.2.4 查看主服务器状态
1.用root账户登录MySQL控制台
2.锁表这一步很关键,因为如果配置过程中有数据写入的话,File和Position的值可能会发生变化。
3.记录File和Position的值,或者保持窗口打开状态。
注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。
1.3 从服务器Slave配置
在从服务器建立一个同样的账户
1.3.1修改配置文件
[mysqld]
server-id = 2 //不能与master或其他slave相同
log-bin=mysql-bin
replicate-do-db = sartas //同步的库
replicate-ignore-db = mysql,information_schema,performance_schema //忽略的库
1.3.2重启mysql服务
修改完配置文件后,重启一下mysql服务,如果成功则没问题。
1.3.3同步主从数据库首次同步
为了是主从库数据结构相同,先手动同步一次,navicat用起来非常方便
1.3.4指定同步开始位置
这步是最关键的一步了,在进入slave服务器mysql操作界面后,输入如下指令(此刻master的表应仍处于锁定状态且salve数据库结构与master结构完全相同):
mysql>stop slave; //停止slave线程
change master to //指定master的ip、用户、起始位置等
mysql>start slave; //开启slave线程
mysql> show slave status\G //查看slave状态
可以看到途中
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示可以正常同步了。
到此整个配置就结束了,不要忘记master的表要解锁
mysql>unlock tables;
方法二:通过Navicat计划任务实现主从库热备
1.1 Master配置
1.2.1 创建同步用户并赋权
同方法一1.2.1
1.2 slave配置
navicat里登录master库以及本地库
手动同步一次,然后保存过程
新建计划任务人后确定
计划任务根据需求自定义设置一下就可以了,这里不再重复说明了