我想实现一个主从备份,本地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
跟阿里云那边沟通后说为了安全考虑不能授予最高权限,请问有其他方案解决阿里云做为从数据库吗?
目前阿里云rds无法直接完成你想做的这个操作,因为超级权限没有开放给用户。 你可以提工单咨询一下,看后台是否能帮你做处理,如果不能,建议用阿里云的数据传输服务DTS,配置很简单,实时性和稳定性也都很好。
是的,为了安全起见,阿里云MySQL不允许用户通过普通的账号授予REPLICATION_SLAVE_ADMIN权限。但是,您可以通过以下两种方式来实现主从备份:
1. 使用binlog复制:在主数据库中开启binlog,并将binlog传输到从数据库中,然后在从数据库中通过读取binlog的方式来同步主数据库的数据。这种方式不需要授予REPLICATION_SLAVE_ADMIN权限,并且可以通过普通的账号实现备份。您可以参考MySQL官方文档中的相关部分来了解如何使用binlog复制。
2. 使用阿里云RDS的数据同步服务:阿里云RDS提供了数据同步服务,可以将主数据库的数据同步到备份数据库中。该服务不需要授予REPLICATION_SLAVE_ADMIN权限,并且可以实现自动同步和实时备份。您可以在阿里云RDS控制台中开通数据同步服务,并根据需要进行配置和管理。
综上所述,您可以选择以上两种方式来实现主从备份,以便在不授予REPLICATION_SLAVE_ADMIN权限的情况下完成数据备份。
在 Mysql 中启用从数据库需要超级权限或者 REPLICATION_SLAVE_ADMIN 权限,而在阿里云上,通常阿里云会禁止用户拥有 SUPER 权限,因此您需要使用另一种方法来实现主从备份。
一种常见的方法是使用 binlog。binlog(二进制日志)是 MySQL 中记录所有增量更改的二进制文件,因此您可以通过创建定期计划任务,将 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。
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。
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
mysql> SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 144 | | | |
+--------------------+----------+--------------+------------------+-------------------+
mysql> CHANGE MASTER TO MASTER_HOST='<主服务器IP>', MASTER_USER='<主服务器用户名>', MASTER_PASSWORD='<主服务器密码>', MASTER_PORT=<主服务器端口>, MASTER_LOG_FILE='<主服务器binlog文件名称>', MASTER_LOG_POS=<主服务器binlog文件位置>;
mysql> START SLAVE;
请根据您的实际情况自定义上述命令,尤其需要注意权限和主从服务器的信息配置。
通过使用 binlog,您可以对主数据库的更改进行追踪和同步,从而实现主从备份。
阿里云MySQL服务器支持配置成从服务器,实现主从复制功能。具体操作如下:
登录阿里云MySQL数据库控制台,在左侧导航栏中选择“实例列表”,然后选择需要配置成从服务器的MySQL实例。
进入实例详情页,点击“主备复制”模块,然后点击“创建实例”按钮。
在创建实例页面中,选择从实例类型,然后设置相应的配置信息,包括实例名称、地域、可用区、规格等。在“付费”选项卡中选择相应的计费方式和时长,然后点击“立即购买”按钮。
在创建从实例之后,需要在主实例的控制台中配置主从复制功能。在实例详情页,点击“主备复制”模块,然后在“从实例”列表中找到新创建的从实例,并点击“添加从实例”按钮。
在“添加从实例”页面中,选择从实例类型并选择新建的从实例,在“复制对象”区域中选择需要进行主从复制的数据库和表,然后在“同步延迟检查”选项卡中设置同步延迟检查的时间,并点击“确定”按钮。
等待主从复制配置生效后,你就可以在新的从实例中进行数据库的读取和查询操作了。
配置主从复制功能后,主实例和从实例之间会产生一定的网络流量和数据传输开销,如果数据库负载较高或访问频率较高,可能会导致主从同步延迟或数据传输失败等问题。因此,需要合理规划数据库的负载和访问模式,以保证主从复制功能的稳定和可靠性。
在阿里云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中配置从服务器需要进行一些复杂的操作,需要具备一定的技术和经验。如果您对主从配置有任何问题或需要帮助,请联系阿里云客服或技术支持团队,他们会为您提供更详细的解答和帮助。
在阿里云的MySQL服务器中,可以通过以下步骤将其配置为从服务器:
创建一主一从的MySQL实例,可以参考阿里云官网上的文档进行操作;
登录从服务器MySQL实例;
在从服务器MySQL实例中运行以下命令,将其配置成从服务器:
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='你的主库实例连接串',
MASTER_PORT=3306,
MASTER_USER='你的主库实例名',
MASTER_PASSWORD='你的主库实例密码',
MASTER_LOG_FILE='主库binlog文件名',
MASTER_LOG_POS=偏移量;
START SLAVE;
需要将上述命令中的参数分别替换成你的主库实例信息。
在阿里云的MySQL控制台中,找到从服务器实例,进入实例详情页,选择“参数设置” -> “高可用集群配置”,将参数“relay_log”设置为“ON”,保存设置即可。
以上就是在阿里云MySQL服务器中配置从服务器的方法。
阿里云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同步成功
出现这个问题是因为在执行 "change master" 命令时需要 SUPER 或 REPLICATION_SLAVE_ADMIN 权限,而对于阿里云 MySQL 实例,你只拥有普通的用户权限。
如果你想要实现主从备份,可以考虑使用阿里云提供的 RDS 备份服务。 RDS 提供了自动备份和手动备份两种方式,可以满足你的需求。具体操作步骤请参考阿里云 RDS 官方文档。
另外,如果你想要自己搭建主从备份环境,你需要获取超级管理员权限或者 REPLICATION_SLAVE_ADMIN 权限才能执行 "change master" 命令。
阿里云MySQL服务器配置成从服务器的步骤如下:
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'slave_password';
其中,'slave_user'是用于连接从服务器的用户名,'%'表示任意主机都可以连接,'slave_password'是用于连接从服务器的密码。
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password';
其中,'.'表示允许从服务器访问所有的数据库和表,'slave_user'和'slave_password'同上。
START SLAVE;
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同上。
START SLAVE;
至此,阿里云MySQL服务器配置成从服务器就完成了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。