阿里云RDS Mysql 8.0 与本地主从同步

我这里用的主库阿里云的RDS mysql版本为8.0,

主从配置需要注意的点

  • Master 和 Slave 数据库的版本要一致;

  • Master 开启二进制日志, Master 和 Slave 的 server_id 不能一致;

从主机Centos下安装Mysql8 可参考以下教程 

https://blog.csdn.net/qq_39150374/article/details/112471108

 注意:

使用  service mysqld start 可能会出现错误,无法启动。 

 请使用  systemctl start mysqld 命令 

systemctl start/stop/status mysqld

设置Mysql开机自启动

1、确保权限

chmod +x /etc/rc.d/rc.local

2、在ect目录下创建脚本

vi MysqlStart.sh

	#!/bin/bash
	service mysqld start

赋予权限 

chmod +x /etc/MysqlStart.sh

3、编辑/etc/rc.d/rc.local文件

vi /etc/rc.d/rc.local

 4、重启机器  

reboot

配置主实例

  1. 登录 RDS 控制台,选择目标实例。
  2. 配置从实例读取数据使用的只读账号和授权数据库。
  3. 将本地从实例的 IP 地址加入主实例的 IP 白名单中

  4. 查询主实例的 server-id

阿里云RDS Mysql 8.0 与本地主从同步_第1张图片

 配置实例 

1、打开实例 MySQL 配置文件。

vim /etc/my.cnf

2、配置实例的 server-id 和要同步的数据库。

#mysql 服务ID主从实例service-id需不同
server-id=15646844
log_bin=/var/log/mysql/mysql-bin.log
binlog_expire_logs_seconds=864000
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#需要同步的数据库
replicate-do-db=jy-shop
#不需要同步的数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
#开启gitid模式
gtid_mode=on
#保证GTID安全的参数
enforce_gtid_consistency=on
#主从同步模式
binlog_format=row
#让主机接收到bin_log后也同步到自己的bin_log上
log_replica_updates=ON

3、执行如下命令,查看 binlog 配置结果。

show variables like '%binlog_format%';

阿里云RDS Mysql 8.0 与本地主从同步_第2张图片

 4、登录数据库设置同步选项

mysql> change master to master_host = 'rds主库外网地址', master_port = 3306, master_user = '主库账号', master_password='密码', master_auto_position = 1;

5、启动从库实例

mysql> start slave;

6、查看本机mysql同步状态

mysql>show slave status;

查看系统返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的状态是否为 Yes,如下。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果都为yes代表设置成功。

在实际操作终于到的问题:

问题1、在第一步设置完log_bin目录后会造成 mysql无法启动,

阿里云RDS Mysql 8.0 与本地主从同步_第3张图片

 通过查看/var/log/mysqld.log发现是/var/log/mysql/mysql-bin.index not found  错误

阿里云RDS Mysql 8.0 与本地主从同步_第4张图片

 主要因为文件夹权限的问题。刚才新建的binlog目录 /var/log/mysql/mysql-bin.log

在 /var/log目录下创建mysql文件夹,然后授权

 chown mysql:mysql -R /var/log/mysql

阿里云RDS Mysql 8.0 与本地主从同步_第5张图片

 启动成功。

问题2:Slave_IO_Running状态为Connecting

问题 :分析

     (1)网络不通

      (2)防火墙端口未开放

      (3)mysql账户密码错误

      (4)mysql主从机配置文件写错

      (5)配置从机连接语法错误

      (6)主机未开放账户连接权限

我这里出现了3和6两个,账户写错,未放开主库账户的远程登录权限

问题3:Slave_SQL_Running: NO 问题

首先出现的是 Got fatal error 1236 from master when reading data from binary log错误。

2022-10-11T06:43:57.815382Z 17 [ERROR] [MY-013114] [Repl] Slave I/O for channel '': Got fatal error 1236 from master when reading data from binary log: 'Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup. Consider increasing the master's binary log expiration period. The GTID set sent by the slave is '689f2d92-4915-11ed-a038-00163e0e8f9c:1-179', and the missing transactions are '23654640-4088-11ed-ae1d-00163e08e553:1-46747'', Error_code: MY-013114

 解决方法:

1、登陆slave库

2. stop slave

mysql> stop slave;

mysql> reset slave all; 

mysql> reset master;

Query OK, 0 rows affected, 1 warning (0.01 sec)

#23654640-4088-11ed-ae1d-00163e08e553:1-46747 为上述错误中出现的数字

mysql> SET @@GLOBAL.GTID_PURGED='23654640-4088-11ed-ae1d-00163e08e553:1-46747';

mysql> start slave; 

mysql> show slave status;

这时候发现Slave_SQL_Running:还是 NO

再次查看mysqld.log发现Unknown or incorrect time zone: ‘Asia/Shanghai时区错误

Slave SQL for channel '': Worker 1 failed executing transaction '23654640-4088-11ed-ae1d-00163e08e553:47188' at master log mysql-bin.000049, end_log_pos 134689; Error 'Unknown or incorrect time zone: 'Asia/Shanghai'' on query. Default database: ''. Query: 'CREATE USER '****'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*DE8B3934BD28FC61FE53A9162B63A6D1CD873EF9'', Error_code: MY-001298

通过查看目前从库的时区没有 Asia/Shanghai

mysql>show variables like '%time_zone%';

阿里云RDS Mysql 8.0 与本地主从同步_第6张图片

 默认这个时区设置是没有的,mysql默认不支持’Asia/Shanghai’这种时区格式

mysql>set global time_zone='Asia/Shanghai';ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Shanghai'

解决方案

需要从mysql官网下载一个时区文件,下载地址:https://dev.mysql.com/downloads/timezones.html

阿里云RDS Mysql 8.0 与本地主从同步_第7张图片

 我们下载5.7+以上这个版本。

下载完成后,解压后是一个SQL文件,将SQL文件导入到系统库mysql中,然后就支持设置支持’Asia/Shanghai’这种时区格式

再开启 从库发现 ok了

你可能感兴趣的:(Mysql主从,mysql,阿里云,数据库,主从,linux)