使用, mysqldump创建数据库的副本使您能够以一种格式捕获数据库中的所有数据,使信息能够导入到另一个MySQL服务器实例(参见mysqldump -一个数据库备份程序).由于信息的格式是SQL语句,因此在紧急情况下需要访问数据时,可以很容易地分发该文件并将其应用到正在运行的服务器。但是,如果数据集非常大,, mysqldump可能不切实际。
考虑使用MySQL Shell转储实用程序,它提供多线程并行转储、文件压缩和进度信息显示,以及云特性,如Oracle云基础设施对象存储流和MySQL数据库服务兼容性检查和修改。转储可以很容易地导入到MySQL服务器实例或MySQL数据库服务DB系统使用MySQL Shell负载转储实用程序.可以找到MySQL Shell的安装说明在这里.
当使用, mysqldump,在启动转储过程之前,应停止副本上的复制,以确保转储包含一致的数据集:
停止副本处理请求。可以在副本上使用mysqladmin:
Shell > mysqladmin stop-slave
或者,你可以只停止复制SQL线程来暂停事件执行:
shell> mysql -e 'STOP SLAVE SQL_THREAD;'或从mysql 8.0.22: shell> mysql -e 'STOP REPLICA SQL_THREAD;'
这使副本能够继续从源的二进制日志中接收数据更改事件,并使用复制I/O线程将它们存储在中继日志中,但阻止副本执行这些事件并更改其数据。在繁忙的复制环境中,允许在备份期间运行复制I/O线程可以在重新启动复制SQL线程时加快追赶过程。
运行, mysqldump转储数据库。可以转储所有数据库,也可以选择要转储的数据库。例如,转储所有数据库:
Shell > mysqldump——所有数据库> fulldb.dump
一旦转储完成,再次启动复制:
Shell > mysqladmin start-slave
在前面的示例中,您可能希望向命令添加登录凭据(用户名、密码),并将该过程捆绑到一个脚本中,以便每天自动运行。
如果使用这种方法,请确保监视复制过程,以确保运行备份所花费的时间不会影响副本跟上来自源的事件的能力。看到检查复制状态.如果副本无法跟上进度,您可能需要添加另一个副本并分发备份进程。有关如何配置此场景的示例,请参见将不同的数据库复制到不同的副本.