mysql主从复制基础–win10电脑设置两个mysql数据库
卸载MySQL数据库
- 本人只是想
把自己的mysql5.7.4升级为mysql8版本
,这里顺带记录一下,以便有需要的人查看 - 备份数据库
本人使用的是sqlyog(数据库连接工具)将自己需要的数据库导出sql,没有备份系统数据库,这个备份操作需要自己百度 - 在控制面板中使用程序卸载MySQL
![在这里插入图片描述](https://img-blog.csdnimg.cn/6fa42dc82eb14f39b1182a4f0d461c47.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/39b302db98734168aa689f9da46db348.png)
之后的界面就不演示了,找到MySQL进行卸载就行了,这个操作应该都会,注意,如果没找到也没关系,本人就是没有找到,进行后续操作就行了
- 删除C盘中的两个文件
C:\Program Files
目录下的MYSQL
目录C:\Program Files (x86)
目录下的MYSQL
目录
这两个目录都不一定会有MYSQL目录,本人就只有在C:\Program Files (x86)目录下有MYSQL目录
- 删除注册表的信息
本人之前删除mysql后续安装失败的例子也有,不过这次我在卸载的时候,只要将注册表的信息删除掉,下次安装就没问题了,虽然不懂理论,但经过几次的安装,也证实了我的这步操作能解决我电脑上的问题,如果觉得不想尝试的小伙伴我也没什么办法,毕竟不懂原理,但是经过了实践认证
打开注册表的方式:按下win+R弹出运行窗口,之后输入regedit回车
- 删除目录
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQLD Service
- 删除目录
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\EventLog\Application\MySQLD Service
本人的注册表只有ControlSet001目录没有ControlSet002目录,不管他就是
- 删除
C:\ProgramData\MySQL
目录 - 停止服务
- 办法一:使用
命令提示符
进入之前安装服务的mysql根目录下的bin目录,然后执行mysqld -remove
命令 - 办法二:使用
win+R
打开运行窗口,输入services.msc
,在服务表中找到当时安装mysql的服务名,一般名字都为mysql相关的,停止该服务
![在这里插入图片描述](https://img-blog.csdnimg.cn/803f81caae50464db6e2435c45d36270.png)
我这里还学习了一个命令,在停止mysql服务之后,可以用管理员的命令提示符
输入sc delete 服务名
的命令将某个服务删除,这里我将mysql5.7服务名从服务列表中删除了
安装MySQL数据库(主数据库,端口号3306)
- mysql8安装地址
https://dev.mysql.com/downloads/mysql/
![在这里插入图片描述](https://img-blog.csdnimg.cn/04bae1bf720b4431b6ab1d2cef8ba02c.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/40dbdb36869c45ccbefa3704322b4b74.png)
- 本人的安装包安装在了D盘,为了方便演示,各位读者记得后续输入设置自己的路径
- 以前安装MySQL5.7的时候,有个操作是设置环境变量MYSQL_HOME,这里注意,如果要启动两个不同端口的数据库(比如3306和3307端口各启动一个MySQL服务),不要设置环境变量(本人亲测)
- 在解压的mysql根目录下面创建
my.ini
配置文件(这个文件本来是不存在的,由我们手动创建),使用编辑器(本人使用idea)编辑内容如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/149d47fc6fc44877a27bf5020a84f8e5.png)
- 配置文件格式如下
需要注意的点用序号标出来了,其解释如下(按照序号)
- server-id:数据库之间设置不一样即可,
log-bin=mysql-bin
不需要修改 - 设置自己需要同步的数据库名
- 设置不需要同步的数据库,
binlog-ignore-db=mysql
这句话不用改,mysql是自带的数据库 - 启动端口就是我们数据库占用win服务的端口,默认的mysql都是3306端口,后面配置从数据库的时候需要改成其他端口比如3307
basedir
和datadir
设置安装后的目录,这里的目录名需要自己新建(新建mysql8目录和data目录),否则会报错- 这里的端口和第4点的端口保持一致
[mysqld]
# 1.设置本数据库的id,主库和从库需要不一致
server-id=1
log-bin=mysql-bin
# 2. 设置需要同步的数据库``
binlog-do-db=work5
# 3. 设置不需要同步的数据库
binlog-ignore-db=mysql
# 4. 启动端口
port=3306
# 5. 配置mysql的安装路径
basedir="D:\MySQL\mysql8"
datadir="D:\MySQL\mysql8\\data"
max_connections=200
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
# 6. 这里配置和上面的启动端口一致
port=3306
default-character-set=utf8mb4
- 用管理员进入命令提示符,进入解压后mysql的bin目录,输入
mysqld --initialize --user=mysql --console
,这个过程不允许出错,在成功的末尾会看到mysql安装成功的登录密码,类似于我给出的界面,该密码要记住
![在这里插入图片描述](https://img-blog.csdnimg.cn/644319acb3a34290bf036899202e99a2.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec6507cbc0274ee9b7b4b5a1cc586b88.png)
- 安装服务
- 使用管理员的命令提示符进入mysql解压目录的bin目录(也就是上一点的那个地址)
- 输入
mysqld --install mysql8 --defaults-file="D:\MySQL\mysql-8.0.29-winx64\mysql-8.0.29-winx64\my.ini"
,这里mysql8是服务名,可以自定义,后面设置的–defaults-file需要输入自己创建的my.ini配置文件的路径。 - 此时打开服务列表(win+R,输入services.msc),就可以在列表中找到mysql8服务,之后启动服务
- 使用命令提示符,输入
mysql -u root -p
,之后输入上面获取的初始化密码(用键盘输入,无法复制粘贴
) - 进入成功之后第一件事就是使用命令
alter user root@localhost identified by '自己的密码'
将密码改成自己的
安装MySQL数据库(从数据库,端口号3307)
- 将刚刚解压的mysql8的目录复制一份,或者使用已有的mysql列表复制一份
![在这里插入图片描述](https://img-blog.csdnimg.cn/05f125b083dd40e088cc0b05d4b64638.png)
- 将上面的my.ini文件信息进行更改,比如我的从库my.ini内容如下
只有第1、4、5、6
点要做更改,其中第5点的目录mysql-slave
和mysql-slave\\data
都要自己手动创建
# 1.设置本数据库的id,主库和从库需要不一致
server-id=2
log-bin=mysql-bin
# 2. 设置需要同步的数据库``
binlog-do-db=work5
# 3. 设置不需要同步的数据库
binlog-ignore-db=mysql
# 4. 启动端口
port=3307
# 5. 配置mysql的安装路径
basedir="D:\MySQL\mysql-slave"
datadir="D:\MySQL\mysql-slave\\data"
max_connections=200
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
# 6. 这里配置和上面的启动端口一致
port=3307
default-character-set=utf8mb4
- 使用管理员的命令提示符进入复制从库的mysql的bin目录,输入命令
mysqld --initialize --user=mysql --console
,安装成功获取到mysql初始化密码
![在这里插入图片描述](https://img-blog.csdnimg.cn/e770d2e2331843009469ef0ba9951a4e.png)
- 注意,如果从库运行失败,说明有可能是因为设置了mysql环境变量,我之前就是因为这个问题,设置环境变量之后,这次从库的安装信息每次都读取到了环境变量里设置的路径,所以把环境变量的mysql删了就没问题了,删除之后如果还有问题,
重启电脑
即可解决问题 - 此时命令提示符的所在目录依旧在赋值mysql的bin目录,输入
mysqld --install mysql8-slave --defaults-file="D:\MySQL\mysql-8.0.29-slave\mysql-8.0.29-winx64\my.ini"
,这里的mysql8-slave
和--defaults-file
都是上面说过的,一个是自定义服务名,一个是my.ini路径。 - 使用win+R,输入services.msc,找到mysql8-slave启动服务
- 连接3307端口的mysql
根据端口启动mysql数据库的命令如下,以前都是默认3306端口所以不需要指定
mysql -h127.0.0.1 -P3307 -u root -proot
- 连接成功之后记得重新设置root密码
启动问题
重启电脑之后
再次在命令行输入mysql -u root -p
登录的命令失效,报错原因为不认识mysql,因为我们将mysql的环境变量取消了- 解决
- 找到当时安装的mysql根目录的bin目录,在这个目录下使用
mysql -u root -p
是没有问题的 - 主库和从库的启动方法都是一样的
- sqlyog连接工具无法连接到从数据库
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8751a22a8bb4a38b683db04b42b04e2.png)
这是因为mysql新版的身份认证密码插件不一样了
- 先使用命令提示符登录上mysql,我这里的主库是可以用sqlyog连接到的,使用命令查询使用的身份认证插件
select Host,User,plugin from mysql.user;
,得知root@localhost使用的是mysql_native_password
![在这里插入图片描述](https://img-blog.csdnimg.cn/bac48ee28d334463b5fd5062fc90d272.png)
- 从库无法连接,同理使用命令查看,发现root@localhost使用的是
caching_sha2_password
![在这里插入图片描述](https://img-blog.csdnimg.cn/e5f93ae1c3f744d5a5731443b3682b89.png)
- 这里将root@localhost用户改成
mysql_native_password
就行了,使用命令alter user root@localhost identified with mysql_native_password by 'root';
- 测试成功
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)