使用mysqldump创建数据库副本可以使您以一种格式捕获数据库中的所有数据,该格式可以将信息导入到另一个MySQL Server实例中(请参见 第4.5.4节“ mysqldump —数据库备份程序” ”)。由于信息的格式为SQL语句,因此在需要紧急访问数据时,可以轻松地将该文件分发并应用于正在运行的服务器。但是,如果数据集的大小很大,则mysqldump可能不切实际。
使用mysqldump时,应在开始转储过程之前停止从属服务器上的复制,以确保转储包含一致的数据集:
停止从站处理请求。您可以使用mysqladmin在从站上完全停止复制 :
shell> mysqladmin stop-slave
或者,您可以仅停止从属SQL线程来暂停事件执行:
shell> mysql -e ‘STOP SLAVE SQL_THREAD;’
这使从站能够继续从主站的二进制日志中接收数据更改事件,并使用I / O线程将它们存储在中继日志中,但阻止从站执行这些事件并更改其数据。在繁忙的复制环境中,允许I / O线程在备份期间运行可能会在重新启动从属SQL线程时加快追赶过程。
运行mysqldump以转储数据库。您可以转储所有数据库,也可以选择要转储的数据库。例如,要转储所有数据库:
shell> mysqldump --all-databases > fulldb.dump
转储完成后,再次启动从属操作:
shell> mysqladmin start-slave
在前面的示例中,您可能需要向命令添加登录凭据(用户名,密码),并将该过程捆绑到一个脚本中,该脚本可以每天自动运行。
如果使用这种方法,请确保监视从属复制过程,以确保运行备份所花费的时间不会影响从属跟上主服务器事件的能力。请参见 第17.1.5.1节“检查复制状态”。如果从站无法跟上,则可能要添加另一个从站并分发备份过程。有关如何配置此方案的示例,请参见 第17.3.5节“将不同的数据库复制到不同的从站”。