开发者社区 > 数据库 > 关系型数据库 > 正文

如何实现阿里云MySQL服务器配置成从服务器?

我想实现一个主从备份,本地MySQL数据库做为主数据库,阿里云MySQL做为从数据库。我用下面这段来实现从数据库备份时,提示权限不够

change master to master_host = 'xxx', master_port = 3306, master_user = 'xxx', master_password='xxx', master_auto_position = 1;

问题如下

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or REPLICATION_SLAVE_ADMIN privilege(s) for this operation

跟阿里云那边沟通后说为了安全考虑不能授予最高权限,请问有其他方案解决阿里云做为从数据库吗?

展开
收起
游客rqqvipgbkv3ri 2023-05-18 08:34:47 71474 1
9 条回答
写回答
取消 提交回答
  • 目前阿里云rds无法直接完成你想做的这个操作,因为超级权限没有开放给用户。 你可以提工单咨询一下,看后台是否能帮你做处理,如果不能,建议用阿里云的数据传输服务DTS,配置很简单,实时性和稳定性也都很好。

    2023-06-09 18:28:23
    赞同 展开评论 打赏
  • 是的,为了安全起见,阿里云MySQL不允许用户通过普通的账号授予REPLICATION_SLAVE_ADMIN权限。但是,您可以通过以下两种方式来实现主从备份:

    1. 使用binlog复制:在主数据库中开启binlog,并将binlog传输到从数据库中,然后在从数据库中通过读取binlog的方式来同步主数据库的数据。这种方式不需要授予REPLICATION_SLAVE_ADMIN权限,并且可以通过普通的账号实现备份。您可以参考MySQL官方文档中的相关部分来了解如何使用binlog复制。

    2. 使用阿里云RDS的数据同步服务:阿里云RDS提供了数据同步服务,可以将主数据库的数据同步到备份数据库中。该服务不需要授予REPLICATION_SLAVE_ADMIN权限,并且可以实现自动同步和实时备份。您可以在阿里云RDS控制台中开通数据同步服务,并根据需要进行配置和管理。

    综上所述,您可以选择以上两种方式来实现主从备份,以便在不授予REPLICATION_SLAVE_ADMIN权限的情况下完成数据备份。

    2023-05-23 11:20:04
    赞同 2 展开评论 打赏
  • 在 Mysql 中启用从数据库需要超级权限或者 REPLICATION_SLAVE_ADMIN 权限,而在阿里云上,通常阿里云会禁止用户拥有 SUPER 权限,因此您需要使用另一种方法来实现主从备份。

    一种常见的方法是使用 binlog。binlog(二进制日志)是 MySQL 中记录所有增量更改的二进制文件,因此您可以通过创建定期计划任务,将 binlog 文件从主服务器同步到从服务器中,使得从服务器的数据保持同步。

    下面是具体的步骤:

    1. 在主服务器上启用 binlog,并设置 binlog 格式。您可以在主服务器上执行以下命令:
    mysql> show variables like '%bin%';
    +-----------------------------------------+------------------------+
    | Variable_name                           | Value                  |
    +-----------------------------------------+------------------------+
    | binlog_cache_size                       | 32768                  |
    | binlog_direct_non_transactional_updates | OFF                    |
    | binlog_format                           | MIXED                  |
    | binlog_stmt_cache_size                  | 32768                  |
    | innodb_api_enable_binlog                | OFF                    |
    | innodb_log_block_size                   | 512                    |
    | innodb_log_file_size                    | 50331648               |
    | innodb_log_files_in_group               | 2                      |
    | log_bin                                 | ON                     |
    | log_bin_basename                        | /var/lib/mysql/mysql   |
    | log_bin_index                           | /var/lib/mysql/mysql   |
    | max_binlog_cache_size                   | 18446744073709547520   |
    | max_binlog_size                         | 1073741824             |
    | max_binlog_stmt_cache_size              | 18446744073709547520   |
    | sql_log_bin                             | ON                     |
    | sync_binlog                             | 0                      |
    +-----------------------------------------+------------------------+
    

    如果您的主服务器没有启动 binlog,则将 log_bin 设置为 ON,并将 binlog_format 的值设置为 MIXED 或 ROW。

    1. 在从服务器上启用 binlog,您可以在从服务器上执行以下命令:
    mysql> show variables like '%bin%';
    +-----------------------------------------+------------------------+
    | Variable_name                           | Value                  |
    +-----------------------------------------+------------------------+
    | binlog_cache_size                       | 32768                  |
    | binlog_direct_non_transactional_updates | OFF                    |
    | binlog_format                           | MIXED                  |
    | binlog_stmt_cache_size                  | 32768                  |
    | innodb_api_enable_binlog                | OFF                    |
    | innodb_log_block_size                   | 512                    |
    | innodb_log_file_size                    | 50331648               |
    | innodb_log_files_in_group               | 2                      |
    | log_bin                                 | OFF                    |
    | log_bin_basename                        | /var/lib/mysql/mysql   |
    | log_bin_index                           | /var/lib/mysql/mysql   |
    | max_binlog_cache_size                   | 18446744073709547520   |
    | max_binlog_size                         | 1073741824             |
    | max_binlog_stmt_cache_size              | 18446744073709547520   |
    | sync_binlog                             | 0                      |
    +-----------------------------------------+------------------------+
    

    需要确保在从服务器上的主从复制过程中,log_bin 的值为 OFF。

    1. 在主服务器上的 MySQL 创建主从帐号并授权(根据您的实际情况设定):
    mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
    
    1. 在从服务器上的 MySQL 创建主从帐号并授权(根据您的实际情况设定):
    mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
    
    1. 获取主服务器的 binlog 文件名称和位置,您可以在主服务器上执行以下命令:
    mysql> SHOW MASTER STATUS;
    +--------------------+----------+--------------+------------------+-------------------+
    | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +--------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001   |      144 |              |                  |                   |
    +--------------------+----------+--------------+------------------+-------------------+
    
    1. 在从服务器上执行以下命令,将从服务器连接到主服务器:
    mysql> CHANGE MASTER TO MASTER_HOST='<主服务器IP>', MASTER_USER='<主服务器用户名>', MASTER_PASSWORD='<主服务器密码>', MASTER_PORT=<主服务器端口>, MASTER_LOG_FILE='<主服务器binlog文件名称>', MASTER_LOG_POS=<主服务器binlog文件位置>;
    
    1. 启动从服务器上的主从复制,您可以在从服务器上执行以下命令:
    mysql> START SLAVE;
    

    请根据您的实际情况自定义上述命令,尤其需要注意权限和主从服务器的信息配置。

    通过使用 binlog,您可以对主数据库的更改进行追踪和同步,从而实现主从备份。

    2023-05-20 16:44:23
    赞同 1 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    阿里云MySQL服务器支持配置成从服务器,实现主从复制功能。具体操作如下:

    1. 登录阿里云MySQL数据库控制台,在左侧导航栏中选择“实例列表”,然后选择需要配置成从服务器的MySQL实例。

    2. 进入实例详情页,点击“主备复制”模块,然后点击“创建实例”按钮。

    3. 在创建实例页面中,选择从实例类型,然后设置相应的配置信息,包括实例名称、地域、可用区、规格等。在“付费”选项卡中选择相应的计费方式和时长,然后点击“立即购买”按钮。

    4. 在创建从实例之后,需要在主实例的控制台中配置主从复制功能。在实例详情页,点击“主备复制”模块,然后在“从实例”列表中找到新创建的从实例,并点击“添加从实例”按钮。

    5. 在“添加从实例”页面中,选择从实例类型并选择新建的从实例,在“复制对象”区域中选择需要进行主从复制的数据库和表,然后在“同步延迟检查”选项卡中设置同步延迟检查的时间,并点击“确定”按钮。

    6. 等待主从复制配置生效后,你就可以在新的从实例中进行数据库的读取和查询操作了。

    配置主从复制功能后,主实例和从实例之间会产生一定的网络流量和数据传输开销,如果数据库负载较高或访问频率较高,可能会导致主从同步延迟或数据传输失败等问题。因此,需要合理规划数据库的负载和访问模式,以保证主从复制功能的稳定和可靠性。

    2023-05-18 18:46:41
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    在阿里云MySQL中配置从服务器,需要进行以下步骤:

    在阿里云MySQL中创建一个新的数据库实例,并确保该实例可以与本地MySQL主数据库进行通信。

    在本地MySQL主数据库中启用二进制日志(binlog),以便从服务器可以复制主服务器的数据。可以使用以下命令启用二进制日志:

    mysql> SET GLOBAL binlog_format = 'ROW'; mysql> SET GLOBAL log_bin = ON; 在阿里云MySQL从服务器中配置主服务器的信息,并启动从服务器的复制进程。可以使用以下命令配置主服务器信息:

    mysql> CHANGE MASTER TO MASTER_HOST='xxx', MASTER_USER='xxx', MASTER_PASSWORD='xxx', MASTER_PORT=3306, MASTER_AUTO_POSITION=1; 注意:在阿里云MySQL中,由于安全性考虑,普通用户没有 REPLICATION SLAVE ADMIN 权限,因此无法使用 CHANGE MASTER 命令进行主从配置。如果您需要进行主从配置,请联系阿里云客服或技术支持团队,请求授予相应的权限。

    在阿里云MySQL从服务器中启动复制进程,以开始从主服务器复制数据。可以使用以下命令启动复制进程:

    mysql> START SLAVE; 执行该命令后,阿里云MySQL从服务器将开始复制主服务器的数据,并将其保存到本地数据库中。

    总之,在阿里云MySQL中配置从服务器需要进行一些复杂的操作,需要具备一定的技术和经验。如果您对主从配置有任何问题或需要帮助,请联系阿里云客服或技术支持团队,他们会为您提供更详细的解答和帮助。

    2023-05-18 17:02:58
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    在阿里云的MySQL服务器中,可以通过以下步骤将其配置为从服务器:

    1. 创建一主一从的MySQL实例,可以参考阿里云官网上的文档进行操作;

    2. 登录从服务器MySQL实例;

    3. 在从服务器MySQL实例中运行以下命令,将其配置成从服务器:

    STOP SLAVE;
    CHANGE MASTER TO
    MASTER_HOST='你的主库实例连接串',
    MASTER_PORT=3306,
    MASTER_USER='你的主库实例名',
    MASTER_PASSWORD='你的主库实例密码',
    MASTER_LOG_FILE='主库binlog文件名',
    MASTER_LOG_POS=偏移量;
    START SLAVE;
    

    需要将上述命令中的参数分别替换成你的主库实例信息。

    1. 开启从服务器同步功能

    在阿里云的MySQL控制台中,找到从服务器实例,进入实例详情页,选择“参数设置” -> “高可用集群配置”,将参数“relay_log”设置为“ON”,保存设置即可。

    以上就是在阿里云MySQL服务器中配置从服务器的方法。

    2023-05-18 10:26:17
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    阿里云RDS-MySQL搭建从服务器 可能遇到的问题:

    刚装完从库MySQL各种连不上         多次尝试直到让管理工具可以正常连上从库MySQL。主要是端口号没设置,没有关闭防火墙,没有关闭仅内网可连的配置,没有修改密码缓存策略。

    配置完从库后,修改无法同步         原因很多,可能 执行 show slave status 时,会出现 Last Error,

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

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

    与主库的连接等配置错误,建议重来,把从库的配置重置掉。停止SLAVE的同步进程。

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

    阿里云mysql主从配置 ,

    在配置主从之前,首先保证3306端口的可用,或者关闭防火墙,两台机子可以互相ping。

    进去mysql设置允许从库获得主库日志  注:这里使用root用户配置,不建议使用,正常使用新创建的用户进行授权。

    在从库中创建一个和主库相同的数据库,不然两个数据库不能同步(进行过数据迁移就跳过)。

    如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。

    下面整理一些经常出现的问题与操作

    ERROR:

    No query specified

    注:如果Slave_IO_Running: No  出现下面的错误

    Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

    说明主服务器的UUID和从服务器的UUID重复,更改方式

    [root@localhost ~]# vim /usr/local/mysql/data/auto.cnf  #这是我的安装路径修改auto.cnf的server-uuid

    注:如果Slave_IO_Running: Connecting 并出现下面错误

    error connecting to master 'root@192.168.3.28:3306' - retry-time: 60 retries: 1

    解决方法,查看主库是否授权,查看change master to... 是否有用户密码ip填写错误

    注:如果Slave_IO_Running: No 出现下面错误

    Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

    解决方法:复位

    mysql>stop slave;  //停止

    mysql>reset slave;  //清空

    mysql>start slave;  //开启

    关于增删改查,主从数据不一致问题:

    delete 语句,主库删除多条数据,发现数据不一致

    原因:在主库的logbin中的确有执行删除语句,但是在从库的logbin中却没有删除语句

    解决:使用 use database 选取当前数据库架构中的需要操作的数据库,然后在执行删除,OK同步成功

    2023-05-18 09:53:28
    赞同 1 展开评论 打赏
  • 热爱开发

    出现这个问题是因为在执行 "change master" 命令时需要 SUPER 或 REPLICATION_SLAVE_ADMIN 权限,而对于阿里云 MySQL 实例,你只拥有普通的用户权限。

    如果你想要实现主从备份,可以考虑使用阿里云提供的 RDS 备份服务。 RDS 提供了自动备份和手动备份两种方式,可以满足你的需求。具体操作步骤请参考阿里云 RDS 官方文档。

    另外,如果你想要自己搭建主从备份环境,你需要获取超级管理员权限或者 REPLICATION_SLAVE_ADMIN 权限才能执行 "change master" 命令。

    2023-05-18 08:59:46
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    阿里云MySQL服务器配置成从服务器的步骤如下:

    1. 登录到主服务器MySQL数据库中,执行以下命令创建一个用于同步数据的从服务器账号:
    CREATE USER 'slave_user'@'%' IDENTIFIED BY 'slave_password';
    

    其中,'slave_user'是用于连接从服务器的用户名,'%'表示任意主机都可以连接,'slave_password'是用于连接从服务器的密码。

    1. 在主服务器MySQL数据库中,执行以下命令创建一个用于同步数据的从服务器账户:
    GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password';
    

    其中,'.'表示允许从服务器访问所有的数据库和表,'slave_user'和'slave_password'同上。

    1. 在主服务器MySQL数据库中,执行以下命令启用从服务器的主键复制:
    START SLAVE;
    
    1. 在从服务器MySQL数据库中,执行以下命令连接到主服务器上的二进制日志文件:
    CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='binlog_file', MASTER_LOG_POS=binlog_pos;
    

    其中,'master_host_name'为主服务器的IP地址或主机名,'replication_user'和'replication_password'同上,'binlog_file'和binlog_pos同上。

    1. 在从服务器MySQL数据库中,执行以下命令启动从服务器的主键复制:
    START SLAVE;
    

    至此,阿里云MySQL服务器配置成从服务器就完成了。

    2023-05-18 08:41:20
    赞同 展开评论 打赏
滑动查看更多

相关产品

  • 云数据库 RDS MySQL 版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像