欢迎光临散文网 会员登陆 & 注册

实战讲解mysql8主从复制(windows版)

2023-08-23 17:49 作者:密云榛子IT教育  | 我要投稿

估计大家刷到这篇文章肯定已经知道什么是主从复制了, 就不废话了,直接正题。

操作数据库以及运行数据库语句,目前有2种方式:

一种是使用命令行程序,即cmd

运行 mysql -u root -p, 之后输入密码就可进入到mysql了,就可以运行sql语句以及各种数据库命令。如下图:

但是这种方式不是很方便。

另一种方式是借助可视化工具navicat,如下图:

这个工具可以创建、修改、删除等数据库操作,也可以运行sql语句,非常方便。本文就借助这个工具来演示。

正文开始,我会按步骤来演示,跟着步骤肯定没错。

1. 准备两台电脑,或者在一台电脑上安装个虚拟机也可以。一台是主服务器(master),一台是从服务器(slave)。两台服务器都安装上mysql8数据库,二者没有任何区别。

主服务器安装的数据库叫master, 从服务器上的数据库叫slave。master数据库完成所有更新操作,比如添加、修改、删除, slave数据库负责查询操作。所以两个数据库要想数据保持一致,就需要将master数据库中的所有更改同步到slave数据库,这就是主从复制。(大哭,说好的不讲概念的)

下载地址: https://dev.mysql.com/downloads/windows/installer/8.0.html

2. 两个服务器上同时创建名称为db的数据库,同时创建admin表,如下:


3. 修改master数据库的配置文件my.ini

my.ini一般是在C:\ProgramData\MySQL\MySQL Server 8.0目录下,如果没有 ProgramData,应该是被隐藏了,显示即可。

如果上面这两项都有,那就不用任何修改。log-bin是 binlog日志的文件名,server-id是服务id,在所有的主从数据库上,这个id不能相同。

什么是binlog日志?

这个日志非常重要,将master数据库的任何修改同步到slave数据库就是靠这个日志的。binlog记录了所有增加、修改、删除操作及数据。即使表数据误删除了,或者数据库误删除了,通过binlog都能恢复,实际上就是重新执行一遍binlog中的操作就可以了。


4. 修改slave数据库的配置文件my.ini

找到server-id,将其修改成别的,只要和master数据库的不一样就行。

同时添加replicate-do-db,这个是允许复制的数据库名称。如果没有该项,则默认复制所有数据库。如果要复制多个,需要重复写,比如:

所有文件配置就ok了。


5. 在master数据库中创建一个账号,用于给slave使用,因为slave需要连接到master,然后下载binlog,那么就必须给它分配一个账号,而且账号权限只能用于同步binlog。

运行如下sql语句:

第一行语句是用于创建账号,账号名称为slave,密码为123456, 实际上就是在名称为mysql的数据库中的user表中创建一行:

第二行语句是赋予账号slave同步binlog的权限,实际就是将Repl_slave_priv字段改为Y:

6. master数据库中运行show master status  :

File和Position这两个参数值记录一下,后面会用。


7. 给slave 数据库配置连接到master的信息:

上面的语句最好一步步运行,先运行stop slave,然后是中间的配置语句,最后是start slave,这样可以观察是否都成功。

master_log_file、master_log_pos 是用于说明从哪个binlog文件的哪个位置开始同步。

会存在多个binlog文件的,每次重启mysql服务,或者运行flush logs语句,都会创建一个新的binlog文件。

stop slave、start slave用于停止、启动线程,因为slave 数据库完成复制工作是靠单独的线程来完成的。

需要注意的是get_master_public_key, 这个参数在低版本的mysql上可以没有,但是在mysql8.0上必须有,否则报错。


8. 当运行完start slave后,主从复制就已经开始工作。 可以通过show slave status语句查看是否正常工作:

如果上面两项都是Yes,说明正常工作了,否则就是出错误了。

Slave_IO_Running是 I/O线程,用于从master读取binlog,并存储到relay log中继日志文件中。

Slave_SQL_Running是 SQL线程,用于读取中继日志,在从库重放,就是重新运行一遍。


9.测试

在master中的admin表中添加一行记录:

然后查看slave 数据库中是否有相同的数据。

实战讲解mysql8主从复制(windows版)的评论 (共 条)

分享到微博请遵守国家法律