阿里云RDS-MySQL搭建从服务器

阿里云RDS-MySQL搭建从服务器_第1张图片

1、首先有一台阿里云的主库RDS MySQL

        主服务器版本是:8.0.18

2、有一台从服务器,安装从库MySQL

        从MySQL服务器版本是:Server version: 8.0.28-0ubuntu0.20.04.3 (Ubuntu)

        是腾讯云的ubuntu直接apt-get install mysql-server8 下载的,一般说从库版本不得低于主库

3、配置从服务器

(1)找到MySQL从服务器的MySQL Server的配置文件

          找到从服务器的MySQL Server的配置文件,默认安装的情况下。它在/etc/mysql下。

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

        服务器首先读取的是 /etc/my.cnf 文件,如果前一个文件不存在则继续读 /etc/mysql/my.cnf 文件,依此类推,如若还不存在便会去读~/.my.cnf文件。

(2)编辑MySQL从服务器的配置文件

        安装好后,默认就有一些东西。我只贴出我在默认上面改动的部分:

        基础配置

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
datadir         = /var/lib/mysql

         为搭建从服务器的配置。

        参数:服务器ID、需要复制的表、需要省略的表、binlog输出格式、log-bin位置,log-bin索引位置、relay-log位置、relay-log索引位置。

server-id               = 1
replicate-do-db = christopher
replicate-wild-ignore-table     = mysql.%
replicate-wild-ignore-table     = test.%
binlog_format   = ROW
log-bin                  = mysql-bin
log-bin-index            = mysql-bin.index
relay-log                = relay-log
relay_log_index          = relay-log.index

         开启GTID MODE模式,不然后面会出错提示主库开了GTID,从库没开不一致无法同步。

# ============ GTID MODE =========
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates = 0 #从库作为其他从库的主库时开启

 (3)将要做复制的数据库手动复制到从库

        方式有很多种。我用的是dump下来主库,再source执行进去从库。或者使用Navicat数据同步

sudo mysqldump -u[主库用户] -h[主库IP] -p[主库密码] --databases [主库名称] > xxx.sql

 (4)对从库开启执行同步配置

        对从库设置主库信息。

CHANGE MASTER TO MASTER_HOST = '[主库地址]',MASTER_PORT= 3306,MASTER_USER='[主库用户]',MASTER_PASSWORD='[主库密码]';

        启动从库的同步进程。

START SLAVE;

        展示从库的运行状态。

SHOW SLAVE STATUS;

        看到SLAVE_IO_RUNNING、SLAVE_SQL_RUNNING则是从库配置好了。

阿里云RDS-MySQL搭建从服务器_第2张图片

 (5)验证主从复制的效果

        主库将prac_sync表加一行数据。

阿里云RDS-MySQL搭建从服务器_第3张图片

        

        从库对应的表也出现了该数据。

阿里云RDS-MySQL搭建从服务器_第4张图片

 验证通过,这里只截图一个,其他的操作也是没问题的。

4、可能遇到的问题

(1)刚装完从库MySQL各种连不上

        可以百度,直到让管理工具可以正常连上从库MySQL。主要是端口号没设置,没有关闭防火墙,没有关闭仅内网可连的配置,没有修改密码缓存策略。

(2)配置完从库后,修改无法同步

        原因很多,我这里记录遇到的一个。

        执行 show slave status 时,会出现 Last Error,里面记录了最近一次的同步失败原因。

Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '569cf910-2792-11ec-b7dc-00163e1fa3a6:1028972' at master log mysql-bin.000727, end_log_pos 121521. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

        大致是由于修改了主库,从库上这个事务同步失败,就一直卡住了。我认为一般是初始设置的时候,以为已经设置好主从同步关系了,于是去改主库,实际上还没有,这时造成了还没开始同步的时候,主从数据不一致的情况,就会这样。

解决方案:跳过这个无法执行成功的去执行后面的事务。下面这个GTID_NEXT就是上面的。一行行执行完即可,然后再show slave status看从库还有没有Last Error

Stop slave;
Set @@SESSION.GTID_NEXT='569cf910-2792-11ec-b7dc-00163e1fa3a6:1028972'
Begin;
Commit;
Set @@SESSION.GTID_NEXT = AUTOMATIC;
Start slave;

(3)与主库的连接等配置错误

        这时候就建议重来,把从库的配置重置掉。

        停止SLAVE的同步进程。

STOP SLAVE;

        重置SLAVE。然后重新按照3-3、3-4步骤重做一遍。

RESET SLAVE;

你可能感兴趣的:(数据库,Linux,运维,数据库架构,linux,mysql)