win10下如何配置mySql的主从同步
1)通过命令show global variables like '%datadir%'查看mySql的数据库文件的存储位置
这个ProgramData文件夹是隐藏的,打开隐藏文件夹后,我们就看到了my.ini文件
2)下载可解压版的mySql,并解压到D:\mySql\mysql-5.7.31-winx64\mysql-5.7.31-winx64,
然后从上面的my.ini拷贝一份,按照blog中的配置修改,并拷贝到指定路径下(注意mySql5.7只能拷贝到根目录下,
不要将文件拷贝到深层次文件中)
3)然后用管理员运行在bin目录下执行PowerShell
D:\mySql\mysql-5.7.31-winx64\mysql-5.7.31-winx64\bin> mysqld.exe install MySQL_Slave --defaults-file="D:\mySql\mysql-5.7.31-winx64\mysql-5.7.31-winx64\my.ini"
4)然后去计算机管理中,查看是否注册了新的服务MySql_Slave,
然后win+R输入regedit进入注册表,对新增服务的注册表参数ImagePath进行修改
"D:\mySql\mysql-5.7.31-winx64\mysql-5.7.31-winx64\bin\mysqld.exe" --defaults-file=D:\mySql\mysql-5.7.31-winx64\mysql-5.7.31-winx64\my.ini MySQL_Slave
然后去服务中查看,是否修改成功
5)然后执行服务初始化,不初始化无法启动
mysqld --initialize --basedir=D:/MySql_Slave --datadir=D:/MySql_Slave/data
如果不报错,就需要执行一段时间,自动换行后,说明执行成功。然后会生成data文件夹
6)去上一步生成的data文件中,打开log日志,查看初始化结果
A temporary password is generated for root@localhost: oWHnKD.j%3-o
oWHnKD.j%3-o
7)此时用powershell执行服务启动,注意在initialize后mySql可能会对my.ini进行改写,如果启动失败删除掉ini文件中的最后一行即可
8)用navicate连接时,输入了初始密码后,会提示已过期,请输入新密码,
为root配置新密码:XXXX
到此说明解压版的mySql已安装好,和安装版的mySql并不冲突。
PS:别忘了对解压版的mySql在Path中也设置环境变量。
9)开启主库的binlog日志记录
去主库的my.ini中修改文件,并且配置 binlog-do-db=需要同步的数据库,注意每次修改后要重启服务才能生效,
如果有多个库需要同步,则就配置多个binlog-do-db;binlog-ignore-db=不需要同步的数据库
重启主库,让上面修改的主库的my.ini文件生效
重启后,去主库的Data路径下查看配置是否生效
发现主库果然已经生成binlog日志了,证明配置生效。
10)去从库的my.ini中进行相应的配置
server-id=2和主库的1要不一致;增加要去主库同步的配置,也配置成mytest。
重启从库的服务。
11)为主库创建用于从库登录的账号,使用grant语法
grant replication slave on *.* to 'slave_login_user'@'127.0.0.1' identified by 'XXXX'
这个语句有两个作用1:创建账号(用户名为slave_login_user,密码为XXXX),2:为账号分配权限(replication slave)
如果执行失败,请使用root登录,因为只有root才有创建账号和分配功能的权限。(主库2个账号和root都是一个密码:XXXX)
重新用XXXX登录,查看效果:
用户创建成功,且这个账号是专门让从库来登录访问并获取binlog日志的账号
点击新建的主库账号查看权限是否分配成功
12)查看Master的binlog信息
去主库执行show master status;查看binlog数据(获取binlog的File和Position)
出现这个错误,说明当前账户没有SUPET和REPLICATION CLIENT权限。因此再次重新用root登录,为XXXX这个操作账号配置权限。
然后重新执行show master status;得到如下结果
记录结果
File=mysql-bin.000001
Position=667
后面的操作中需要用到。
13)然后进行最重要的操作,去从库配置要同步的主库
这一步骤至关重要,要用到之前给主库配置的从库访问账号 和 主库的binlog的File和Position信息,让从库登录主库。
先在从库执行stop slave;注意这个命令并不会让服务停止。
然后执行下面的命令:
change master to
-> master_host='127.0.0.1',
-> master_user='slave_login_user',
-> master_password='XXXX',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=667;
再执行start slave;
14)验证主从同步是否打通
执行show slave status;
得到一条“长结果集”记录,往右拉查看关键信息
这两个Yes说明配置成功,主从已经打通!!!可以去navicate正式验证了。