Mysql8.0以上的版本实现主从同步


)

1. 修改my.ini文件

1.1 找到本地计算机,右击管理进来

在这里插入图片描述找到对应的MySQL服务:MySQL是我的主数据库、mysqlds1是我的从数据库。

具体操作:根据属性找到MySQL的安装地址,重新复制一份原先的MySQL安装文件。
在这里插入图片描述

1.2 分别修改主从对应的my.ini文件

(1)修改主库

[mysqld]
basedir=D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64
datadir=D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64\data
port=3306

# 开启日志
log-bin=mysql-bin
# 设置服务id,主从不能一致
server-id=1
# 设置需要同步的数据库
binlog-do-db=user_db
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

(2)新增从库

在这里插入图片描述


[mysqld]
basedir=D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64-s1
datadir=D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64-s1\data
port=3307

log-bin=mysql-bin
server-id=2
replicate_wild_do-table=user_db.%

replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

注意:在新增从库之后,要执行以下命令,将从库安装为windows服务:

D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64-s1\bin\mysqld install mysqlds1 --defualts-file="D:\Program Files (x86)\mysql-8.0.32-winx64\mysql-8.0.32-winx64-s1\my.ini"

2. 中间步骤(uuid问题)

由于我们是直接将原先的MySQL安装文件复制了一份,导致这两个主从数据库有相同的uuid,这个在后面配置主从同步时就是出错,导致Slave_on_Running的结果为No。因此,这里先进行修改:
找到从数据库中,查找auto.cnf文件,并将其删除:

在这里插入图片描述
然后在分别重新启动主从数据库,可以直接在服务那里重启:
在这里插入图片描述

3. 授权主从复制专用账号

因为我使用的是MySQL8.0以上,语法与MySQL5.7有些不同了,执行以下命令,完成授权

#创建用户并设置密码:
SELECT USER, HOST FROM mysql.user WHERE USER = 'db_sync';

#授予复制从库权限:
ALTER USER 'db_sync' IDENTIFIED WITH 'mysql_native_password' BY 'db_sync'; 

# 权限刷新
FLUSH PRIVILEGES;

# 确认位点,记录下文件名以及位点
SHOW MASTER STATUS;

我们可以通过查询语句来检查 user 表中的用户:

SELECT User, Host FROM mysql.user WHERE User = 'db_sync';

在这里插入图片描述

或者直接找到主库中的系统数据库mysql中的user表:
在这里插入图片描述
其中的命令SHOW MASTER STATUS;可以查询当前的日志文件名以及位点,可以用于从库进行同步数据:
在这里插入图片描述

4. 设置从库向主库同步数据

执行以下命令:

#停止从服务器的复制进程
STOP SLAVE;

CHANGE MASTER TO
#开始更改主服务器的配置信息。
MASTER_HOST='localhost',
MASTER_USER='db_sync',
MASTER_PASSWORD='db_sync',
MASTER_LOG_FILE='mysql-bin.000004',#指定从哪个二进制日志文件开始复制。
MASTER_LOG_POS=854;#指定从二进制日志文件的哪个位置开始复制。
#启动从服务器的复制进程,开始从主服务器复制数据
START SLAVE;


    #显示从服务器的复制状态信息。
    #这个命令返回的信息非常详细,包括复制是否正在运行、错误消息、复制延迟等。
    #通过查看这些信息,你可以了解复制的健康状态和任何潜在的问题。

SHOW SLAVE STATUS

执行show slave status之后,可以看到如下信息:
在这里插入图片描述这里都为Yes说明主从同步配置成功。因为我配置的是user_db数据库的主从同步,可以修改主库中的user_db下的user表数据,可以发现从库中对应的数据也相应的更新。

5. 问题总结

5.1 问题1:无法连接主库

2024-04-22T06:42:51.521449Z 27 [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'db_sync@localhost:3306' - retry-time: 60 retries: 6 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

错误代码MY-002061通常与MySQL的身份验证要求有关,特别是当使用caching_sha2_password插件时。caching_sha2_password是MySQL 8.0的默认身份验证插件,它比早期版本的默认插件mysql_native_password更加安全,因为它要求使用加密的连接。

解决方法:

更改主库的身份验证插件:

ALTER USER 'db_sync'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'db_sync';  
FLUSH PRIVILEGES;

然后,在重新设置从库的数据同步即可连接成功

STOP SLAVE;

CHANGE MASTER TO
MASTER_HOST='localhost',
MASTER_USER='db_sync',
MASTER_PASSWORD='db_sync',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=854;

START SLAVE;

SHOW SLAVE STATUS

5.2 问题2:从库无法启动

错误提示:
某些服务在未由其他服务或程序使用时将自动停止
解决办法:
我是删除了从库,又重复操作了一遍,就可以了,建议反复试几次

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建MySQL主从复制,你可以按照以下步骤进行操作: 1. 首先,拉取MySQL 8.0.34镜像并启动两个容器,一个作为主服务器,另一个作为从服务器。 2. 在主服务器上修改配置文件以启用主从复制功能。 3. 进入主服务器的MySQL实例,执行`show master status;`命令以获取主服务器的binlog文件名和位置。 4. 进入从服务器的MySQL实例,执行以下命令设置从服务器与主服务器建立连接并开始复制数据: ``` CHANGE MASTER TO MASTER_HOST = '主服务器IP地址', MASTER_USER = '主服务器用户名', MASTER_PASSWORD = '主服务器密码', MASTER_LOG_FILE = '主服务器的binlog文件名', MASTER_LOG_POS = 主服务器的binlog位置; ``` 5. 在从服务器上启动复制进程:`START SLAVE;`。 6. 检查主从复制的状态:`SHOW SLAVE STATUS\G;`。确保`Slave_IO_Running`和`Slave_SQL_Running`都显示为"YES"。 7. 测试主从复制效果,可以在主服务器上进行数据插入、更新或删除操作,然后在从服务器上使用SELECT语句验证数据是否同步。 需要注意的是,主从复制的搭建需要保证主从服务器之间能够相互通信,否则无法完成搭建。 希望以上步骤对你有所帮助,如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [docker搭建mysql8.0主备(主从复制)](https://blog.csdn.net/u010080562/article/details/120599007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值