发布:2023/4/15 21:17:20作者:管理员 来源:本站 浏览次数:746
一、安装两个MySQL服务
1. 安装第一个MySQL服务
从网上下载一个MySQL免安装版,改下配置信息,注册服务启动即可。
我这里用的是mysql-5.7.32-winx64版本,
(有需要压缩包的可以私信我)
压缩包里面的东西如下:
新建一个my.ini文件,内容如下:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
port=3306
bind-address=0.0.0.0
将my.ini文件放到MySQL的目录下:
以管理员的身份运行命令行,切换到MySQL目录下,运行mysql install命令:
这样就在windows安装了MySQL服务。
2. 开启MySQL的binlog
先检查MySQL是否开启binlog,可以用命令show variables like 'log_%';
第一次查看可能是OFF,需要在my.ini中添加如下配置信息开启binlog:
[mysqld]
#保存日志的位置,实际生成的日志会在后面添加对应的标志
log-bin = D:\mysql-5.7.32-winx64\data
#日志保存天数
expire-logs-days = 14
#日志大小
max-binlog-size = 500M
#用于同步时区分mysql实例,唯一,5.7以上版本必须填写
server-id = 1
#日志格式,MIXED,ROW,STATEMENT
binlog_format ='MIXED'
然后重启MySQL服务,重新用命令查看binlog状态即可。
3. 安装第二个MySQL服务
第一个MySQL服务安装完毕后,将MySQL的文件夹重新复制一份,并重命名为mysql-5.7.32-winx64-follower。修改下该文件夹下的my.ini文件,
1)修改端口号为3307。
2)修改server-id为2。
修改后的内容如下:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
port=3307
bind-address=0.0.0.0
[mysqld]
#保存日志的位置,实际生成的日志会在后面添加对应的标志
log-bin = D:\mysql-5.7.32-winx64-follower\data
#日志保存天数
expire-logs-days = 14
#日志大小
max-binlog-size = 500M
#用于同步时区分mysql实例,唯一,5.7以上版本必须填写
server-id = 2
#日志格式,MIXED,ROW,STATEMENT
binlog_format ='MIXED'
修改完成后,同样管理员命令行进入到mysql-5.7.32-winx64-follower\bin目录下,执行mysql install MYSQLFollower命令,将注册一个新的服务到Windows。
此时,我们尝试启动该服务时,会出现报错信息。这时需要修改MYSQLFollower的注册表信息,我们使用快捷键win+r打开运行窗口,输入regedit然后回车打开注册表。找到刚刚安装的MYSQLFollower注册信息:
我们发现路径还是指向的之前的MySQL服务的路径,只需要更新路径地址到最新的地址即可(只需要修改路径地址,后面的服务名不需要改动)。
然后,重新启动即可。这时候,两个MySQL服务都已经启起来了。
二、MySQL主从复制配置
1. 主库中创建一个用户给从库进行IO连接
1)创建用户:CREATE USER 'slave'@'localhost' IDENTIFIED BY '123456';
2)授权:GRANT ALL ON . TO 'slave'@'localhost';
2. 主库查看binlog的位置
使用命令show master status; 找到File 和 Position 的值记录下来。
我们可以在主库my.ini中添加如下配置信息:
#需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制
binlog-do-db=test
#binlog-ignore-db=mysql #不需要复制的库,和上项同理
#=========主从复制关键配置=====================
3. 从库slave指向master地址
在从库中使用命令:
change master to master_host=’127.0.0.1’,master_user=’slave’,master_password=’123456’, master_log_file=’data.000003’,master_log_pos=5050;
master_log_file参数和master_log_pos参数必须和步骤2里的参数一致。
使用命令show slave status;命令查看从库状态:
若Slave_IO_Running:Yes 以及Slave_SQL_Running:Yes 代表成功;若不成功,往下查看错误日志再进行相应处理。
问题一:如果是Slave_SQL_Running:no
能看到后面的错误信息是:[ERROR] Slave I/O for channel ‘’: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593。
问题定位:由于uuid相同,而导致触发此异常。
解决方案:把uuid修改即可。修改D:\mysql-5.7.32-winx64-follower\data\auto.cnf,把里面的server-uuid修改成不一样的值即可。
重启从库的MySQL服务。
问题二:错误信息是:Error reading packet from server for channel '': bogus data in log event; the first event 'mysqlbinlog.000001' at 869, the last event read from './mysqlbinlog.000001' at 123, the last byte read from './mysqlbinlog.000001' at 888. (server_errno=1236)。
解决方案:
master端:
mysql> flush logs;
Query OK, 0 rows affected (0.02 sec)
mysql> show master status;
重新记住file和position这两个选项。比如data.000004,640。
slave端:
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> change master to master_host=’127.0.0.1’,master_user=’slave’,master_password=’123456’, master_log_file=’data.000004’,master_log_pos=640;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
用命令查看show slave status;再次查看状态就会发现成功了。
这时,我们可以尝试新增、修改和删除主库里的表记录了,会发现从库里面的表记录也跟着变化了。此时,主从复制的配置大功告成!!!
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4