mysql在windows下的安装以及主从定时热备份与恢复备份

首先声明:主从复制版本一致!!!为了避免不同版本带来的错误

官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

mysql在windows下的安装以及主从定时热备份与恢复备份_第1张图片
这里使用的是5.7的免安装版本

1. 解压到指定目录

mysql在windows下的安装以及主从定时热备份与恢复备份_第2张图片
图片.png

解压到指定目录并复制一份,分别更名为如图名称,方便后面做主从数据库配置

2.增加配置文件my.ini

重点说一下几个点
log_bin=master-bin
热备份一定要开启这个

主库配置

[mysqld]
# 服务端使用的字符集默认为8比特编码的latin1字符集,设置为utf8字符
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置mysql的安装目录
basedir = C:\\software\\mysql\\mysql-master
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能
datadir = C:\\software\\mysql\\mysql-master\\data
# 设置3306端口
port = 3306
server_id = 1    # 主库和从库需要不一致,分别配一个唯一的ID编号
log_bin=master-bin    # 二进制文件存放路径,存放在根目录data文件夹下
# binlog-do-db=test   # 需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制,这里要是配置了,同时也要在Slave(也就是你的从库) 上设定。
# binlog-ignore-db=mysql    # 不需要复制的库,和上项同理
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
default-character-set=utf8

从库配置

# 服务端使用的字符集默认为8比特编码的latin1字符集,设置为utf8字符
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置mysql的安装目录
basedir = C:\\software\\mysql\\mysql-slave
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能
datadir = C:\\software\\mysql\\mysql-slave\\data
# 设置3307端口
port = 3307
server_id = 2    # 主库和从库需要不一致,分别配一个唯一的ID编号
log_bin=master-bin    # 二进制文件存放路径,存放在根目录data文件夹下
# binlog-do-db=test   # 需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制,这里要是配置了,同时也要在Slave(也就是你的从库) 上设定。
# binlog-ignore-db=mysql    # 不需要复制的库,和上项同理
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
default-character-set=utf8

3. 安装mysql主从服务器

打开cmd进入到主服务器目录

mysql在windows下的安装以及主从定时热备份与恢复备份_第3张图片
图片.png

mysqld -install MySQL-Master

mysql在windows下的安装以及主从定时热备份与恢复备份_第4张图片
图片.png

如果之前安装过这里需要移除掉之前的服务(如果未安装过请跳过此步)

mysqld -remove MySQL-Master

图片.png

重新使用安装命令后提示


图片.png

初始化mysql

mysqld --initialize --console

会在控制台打印信息

图片.png

下面的临时密码我们需要拷贝一下,第一次登陆需要,如果使用 mysqId --initalize会输出一个.err后缀的文件到data目录中,临时密码去那里查看

初始化后,可以启动服务了

net start mysql-master

图片.png

net stop mysql-master 为停止命令

4.登陆mysql配置

mysql -u root -pe8arpkE8iW)a

记得登陆命令加上临时密码

登陆后会发现无法操作数据库修改密码


mysql在windows下的安装以及主从定时热备份与恢复备份_第5张图片
图片.png

执行下面指令修改初始密码

ALTER USER USER() IDENTIFIED BY 'root';
use mysql;
update user set authentication_string=password("root123") where user="root";
flush privileges;

mysql在windows下的安装以及主从定时热备份与恢复备份_第6张图片
图片.png

执行成功后数据库就安装密码设置好了。从数据库同理

  • mysqld -remove MySQL-Slave
  • mysqld -install MySQL-Slave
  • mysqld --initialize --console 得到临时密码k>i+0
  • net start mysql-slave
  • mysql -u root -P3307 -p 这里注意从数据库必须加端口号连接
  • ALTER USER USER() IDENTIFIED BY 'root';
  • use mysql;
  • update user set authentication_string=password("root123") where user="root";
  • flush privileges;

5.数据库主从配置

登录主数据库

show master status;

记录下面的file 和position


mysql在windows下的安装以及主从定时热备份与恢复备份_第7张图片
图片.png

主库创建一个用户用于和从库连接,并且授权

create user slave;
grant replication slave on *.* to 'slave'@'127.0.0.1'identified by 'root123';
flush privileges;   

然后去登录从数据库

mysql -uroot -P3307 -proot123 记得一定要加端口号登录从库

把主库和从库连接起来

change master to master_host='127.0.0.1',master_port=3306,master_user='slave',master_password='root123',master_log_file='master-bin.000002',master_log_pos=1289;

然后执行

start slave; 关闭是stop slave

查看 slave 的状态

show slave status \G

mysql在windows下的安装以及主从定时热备份与恢复备份_第8张图片
图片.png
图片.png

这两个都是yes表示启动成功了

我们去主数据库增加表更新数据在从数据库中就能看到更新了

(可选)设置外部访问

update user set host = ‘%’ where user =’root’;

6. 热备份

进入主库的bin目录
cd C:\software\mysql\mysql-master\bin
执行mysqladmin -uroot -proot flush-logs
会在目录中生产备份文件

mysql在windows下的安装以及主从定时热备份与恢复备份_第9张图片
图片.png

定义bat脚本

@echo  off
set INTERVAL= 60 
:Again  
echo 定时任务开启,任意键立即触发
cd C:\software\mysql\mysql-master\bin
mysqladmin -uroot -proot123 flush-logs
timeout %INTERVAL%
goto Again

set INTERVAL设置循环时间,
或者删除循环直接放入windows计划任务中

@echo  off

echo 执行脚本
cd C:\software\mysql\mysql-master\bin
mysqladmin -uroot -proot123 flush-logs

恢复备份
进入data目录下

mysqlbinlog  --no-defaults --set-charset=utf8  C:\software\mysql\mysql-master\data\master-bin.000004 | mysql -uroot -proot123

--no-defaults --set-charset=utf8解决了执行导致的编码问题


恢复备份脚本bat文件

例如 master-bin.000006为需要恢复的备份
备份脚本输入版本


图片.png
@echo  off
set/p a1=请输入恢复文件并按回车:
cd C:\software\mysql\mysql-master\bin
mysqlbinlog  --no-defaults --set-charset=utf8  C:\software\mysql\mysql-master\data\%a1% | mysql -uroot -proot123

Pause

你可能感兴趣的:(mysql在windows下的安装以及主从定时热备份与恢复备份)