mysql8.0主从同步_mysql8.0 搭建主从同步(附带部分错误记录)

一、安装mysql8.0

1.分别在主机(master)和从机(slave)安装mysql8.0.21(我这里是在docker容器中安装)

二、主机(master)创建数据同步用户master01

1、进入mysql容器

docker ps

docker exec -it mysql8 bash

2、登录mysql

mysql -uroot -p

3、创建master01,密码123456

CREATE USER 'master01'@'%' IDENTIFIED BY '123456';

alter user 'master01'@'%' identified with mysql_native_password BY '123456';

4、授予master01 `REPLICATION SLAVE`权限和`REPLICATION CLIENT`权限,用于在`主` `从` 数据库之间同步数据

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

注:授权全部权限 (GRANT ALL PRIVILEGES  ON *.* TO 'master01'@'%';)

5、刷新,使其操作生效

FLUSH PRIVILEGES;

三、关联master和slave

1、master服务器中查看master状态(我这里是直接navicat连接后执行的sql语句)

show master status;

72e14fb2a7d48ad3b49080d816c3b377.png

注:FIle,Position是等会slave中会用到的配置,在slave配置未完成前,最好不要操作master数据库,否则这两个值会发生变化

2、在slave服务器中的配置(我这里还是直接用navicat连接后执行的sql语句)

master_host :master服务器地址

master_port :端口号

master_user :用于数据同步的用户(之前在master中创建授权的用户)

master_password :用于同步用户的密码

master_log_file :指定slave从哪个日志文件开始复制数据,即之前提到的File字段值

master_log_pos :从哪个Position开始读,即之前master中的Position字段值,0则是从头开始完整的拷贝master库

master_connect_retry :连接失败时重试的时间间隔,默认是60秒

change master to master_host='10.103.99.85',master_port=13306, master_user='master01', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos= 5430904;

start slave; (开始slave)

show slave status;(查看状态,当Slave_IO_Running 和Slave_SQL_Running都为yes的时候,配置完成)

e341f2e9e46618bf906ee19cd86c4669.png

其它语句:stop slave; RESET slave;

四、配置中遇见Slave_IO_Running和Slave_SQL_Running不为yes的错误

① Slave_IO_Running为connecting

这个错误主要是在创建容器的时候挂载目录的时候没有把主机的my.cnf与容器中mysql中的my.cnf做映射,导致我在主机中配置的my.cnf里的service_id没起作用,导致service_id一致

注:查看service_id的语句为show variables like 'server_id';

②Slave_SQL_Running为NO

这个错误时再同步的时候报错:

Could not execute Update_rows event on table sewage_ga.qms_device_run_log; Can't find record in 'qms_device_run_log', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log     binlog.000042, end_log_pos 1889, Error_code: MY-001032

目前解决的方法是在从库中my.cnf中配置跳过1032的错误(slave-skip-errors = 1032),至于为啥报错,现在还没去寻找,后续会补上

原文:https://zhengqing.blog.csdn.net/article/details/104679425

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主从同步是指将一个MySQL数据库服务器(主服务器)的数据实时复制到另一个MySQL数据库服务器(从服务器)的过程。在MySQL 8.0版本中,可以通过以下步骤进行主从同步的配置: 1. 在主服务器上,在`/etc/my.cnf`文件的`[mysqld]`节点内添加以下配置: ``` server_id=1 # 主服务器的唯一标识,每个服务器都应该有一个唯一的ID log_bin=mysql-bin # 二进制日志文件的名称 binlog_format=row # 二进制日志的格式,建议使用row格式,以便更好地支持复制 ``` 2. 在主服务器上重启MySQL服务,使配置生效。 3. 在从服务器上,在`/etc/my.cnf`文件的`[mysqld]`节点内添加以下配置: ``` server_id=2 # 从服务器的唯一标识,每个服务器都应该有一个唯一的ID ``` 4. 在从服务器上重启MySQL服务,使配置生效。 5. 在主服务器上创建一个用于复制的用户,并授予适当的权限: ``` CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES; ``` 6. 在从服务器上执行以下命令,设置从服务器与主服务器建立连接: ``` CHANGE MASTER TO MASTER_HOST='主服务器的IP地址', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_PORT=主服务器的端口号; ``` 7. 在从服务器上启动从服务器的复制进程: ``` START SLAVE; ``` 8. 检查主从同步的状态,在从服务器上执行以下命令: ``` SHOW SLAVE STATUS\G; ``` 如果`Slave_IO_Running`和`Slave_SQL_Running`均显示为`Yes`,则表示主从同步已成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值