首先声明:主从复制版本一致!!!为了避免不同版本带来的错误
官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
1. 解压到指定目录
解压到指定目录并复制一份,分别更名为如图名称,方便后面做主从数据库配置
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进入到主服务器目录
mysqld -install MySQL-Master
如果之前安装过这里需要移除掉之前的服务(如果未安装过请跳过此步)
mysqld -remove MySQL-Master
重新使用安装命令后提示
初始化mysql
mysqld --initialize --console
会在控制台打印信息
下面的临时密码我们需要拷贝一下,第一次登陆需要,如果使用
mysqId --initalize
会输出一个.err后缀的文件到data目录中,临时密码去那里查看
初始化后,可以启动服务了
net start mysql-master
net stop mysql-master 为停止命令
4.登陆mysql配置
mysql -u root -pe8arpkE8iW)a
记得登陆命令加上临时密码
登陆后会发现无法操作数据库修改密码
执行下面指令修改初始密码
ALTER USER USER() IDENTIFIED BY 'root';
use mysql;
update user set authentication_string=password("root123") where user="root";
flush privileges;
执行成功后数据库就安装密码设置好了。从数据库同理
- 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
主库创建一个用户用于和从库连接,并且授权
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
这两个都是yes表示启动成功了
我们去主数据库增加表更新数据在从数据库中就能看到更新了
(可选)设置外部访问
update user set host = ‘%’ where user =’root’;
6. 热备份
进入主库的bin目录
cd C:\software\mysql\mysql-master\bin
执行mysqladmin -uroot -proot flush-logs
会在目录中生产备份文件
定义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为需要恢复的备份
备份脚本输入版本
@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