mysql数据库双机热备、主从备份

本文以mysql5.6为例

环境:

操作系统:Windows
  
  数据库:mysql5.6,并确保数据库是启动成功的。
  
  PC机或服务器:2台(假设分别命名为master服务器和slave服务器,这两台电脑相互可通信),环境均为以上配置。

目录:

mysql数据库双机热备、主从备份_第1张图片

主过程:

1、在master服务器配置mysql的my.ini文件中最少配置3个参数

2、在slave服务器中最少配置2个参数

3、完成之后在master服务器建立账号并做slave行为赋权,在slave服务器设定master行为赋权。

4、同步数据库。

5、开启slave服务器的slave服务。

具体过程:

注意事项:

1)、关于参数中的横线及下划线:server-id或server_id一样,使用横线或下划线是一样的。

2)、关于my.ini的位置:从控制面板中打开服务,找到mysql服务,从服务器属性中可以看到my.ini的具体位置,默认的mysql文件夹的mydefault.ini不是,从服务中看mysql主目录位置,也有可能my.ini在C:\ProgramData\MySQL\MySQL Server 5.6/my.ini这个位置。

1、在master服务器配置mysql的my.ini文件中最少配置3个参数

server-id=1 #这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错,值区间为1-32;

log-bin = mysql-bin #二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,那么就会以 计算机的名字加编号来命名二进制文件;

binlog-do-db = masters #需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,如果 不写,那么默认同步所有的数据库;

binlog-ignore-db = mysql 不需要同步的数据库;

以上参数设定好重启mysql数据库:

server-id=1
log-bin = mysql-bin
binlog-do-db = testDB
binlog-ignore-db = mysql

mysql数据库双机热备、主从备份_第2张图片
之后登录mysql,输入命令show master status,如果以上配置都成功就会出现一个列表,请记录里面的file和position参数。
在这里插入图片描述mysql数据库双机热备、主从备份_第3张图片
2、在slave服务器中最少配置2个参数

从数据库的话只需要配置server-id,binlog-do-db,binlog-ignore-db即可。

Server-id需要和master服务器的区分开,binlog-do-db,binlog-ignore-d的参数需要和主服务器一致。

server-id=2
binlog-do-db = testDB
binlog-ignore-db = mysql

3、完成之后在master服务器建立账号并做slave行为赋权,在slave服务器设定master行为赋权。

1)、在master服务器主数据库添加同步账号,这个账号用于salve服务器用这个账号登录master服务器并读取bin-log文件同步数据用,包括replication slave和file 权限,执行如下命令:

命令格式:grant replication slave,file on . to ‘用户名称’@‘SLAVE服务器地址’ identified by ‘用户密码’;

例如执行:grant replication slave,file on . to ‘slave’@’%’ identified by ‘slave’;

然后 刷新缓存:flush privileges;
mysql数据库双机热备、主从备份_第4张图片
2)、在slave服务器设定同步账号,这个账号用于salve服务器用这个账号登录master服务器并读取bin-log文件同步数据用,执行如下命令:


mysql> change master to
       -> master_host='master服务器IP',
       -> master_user='master服务器设定的同步用户',
       -> master_password='master服务器设定的同步用户密码',
       -> master_log_file='上面我们提到的master服务器看到的file名称',
       -> master_log_pos=上面我们看到的master服务器看到的position参数;
       

也可以一次写完并执行:


change master to master_host='10.104.17.38',master_user='sysuser',
master_password='****@666666',master_log_file='mysql-bin.000002',
master_log_pos=820937485;

上面最后两个参数要以之前查询的数据为准。

4、同步数据库。

把两台服务器的数据库做一下同步,并且确保master服务器这期间是不被写入和更改数据的。可以用navicat,直接在slave服务器建立一个库,库名和master服务器一致,然后打开master服务器这个库 拷贝所有表,粘贴到slave这个库上就可以了,比较简单而且快。

同步完成之后,需要检查主、从服务器的数据库server-uuid是否相同,如果相同,则 第五步 中Slave_IO_Running的值为No,则数据同步会失败。
在这里插入图片描述
因为用sql直接导库的话可能会出现server-uuid相同的情况,server-uuid在data下auto.cnf
mysql数据库双机热备、主从备份_第5张图片
mysql数据库双机热备、主从备份_第6张图片
5、开启slave服务器的slave服务即可。

在slave服务器执行start slave命令,启动服务。

这个命令执行之前需要先连接登录到mysql
在这里插入图片描述
在这里插入图片描述
如果之前配置过从服务器,那么slave会在mysql启动后自动启动,就需要先停止slave再启动。
mysql数据库双机热备、主从备份_第7张图片

验证是否同步:

从服务器上执行show slave status\G;
在这里插入图片描述
mysql数据库双机热备、主从备份_第8张图片
slave_io_running和slave_sql_running两个参数均为YES就可以了。

如果没连接mysql,要先连接,已连接则直接执行show slave status\G;

然后随便更改master上的这个数据库,都可以看到slave服务器的数据库被同步了。

.ini配置

my-default.ini 配置


[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\MySQL\mysql-8.0.16-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\MySQL\mysql-8.0.16-winx64\data
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

my.ini配置


[mysqld]
server-id=1
log-bin = mysql-bin
binlog-do-db = social
binlog-ignore-db = mysql

你可能感兴趣的:(MySQL数据库)