分享

mysql主从服备份

 速查室 2011-11-15

一、概述

备份,通俗来说就是数据复制。在mysql主从备份这个概念中,我们需要有一台主服务器(Master Server),然后可以有一台或者多台从服务器(Slave Server)。在复制过程中,从服务器会根据主服务器生成的二进制日志,对从服务器上的数据库进行更新(修改,增加或删除)。从服务器其实也称为奴隶服务器,它只会根据主服务器生成的日志对自己的数据库进行更新,并保证和主服务器上的数据一致。

二、细节以及注意事项

在主从备份这个过程中,会有三个活动线程来完成这一系列的工作。其中主服务器会创建一个线程,用于执行I/O操作,当从服务器上的数据发生了变化,就会把这些变化写入到一个二进制的日志文件中去。从服务器会有两个工作线程,其中一个工作线程连接到主服务器,并请求主服务器让其把二进制日志文件发送过来并保存到本地,这也称为中继日志。从服务器所创建的另外一个工作线程便是用于读取中继日志中的SQL语句并执行。在执行主从备份的时候要确保主从服务器的版本兼容。从服务器至少与主服务器版本相同或更高。

三、mysql建立主从服务器配置方法

1.兼容性以及mysql环境准备
确保主从服务器的版本兼容。从服务器至少与主服务器版本相同或更高。

2.配置文件
确保主服务器上的my.cnf文件的含有log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为1到232–1之间的一个正整数值。如:

1
2
3
[mysqld]
log-bin=mysql-bin
server-id=1

这里需要注意一下的就是,主服务器与从服务器的server-id必须唯一,不能相同。

3.启动主服务器
注意:主服务器需要指定对哪些数据库记录二进制日志,这通过在启动主服务器时,加上–binlog-do-db= db_name选项来实现。如果要记录多个数据库,要分别为每个数据库指定该选项。目前主服务器上的启动脚本请使用/data/mysql/bin/startmysql。另外,主机开机后自动启动mysqld的脚本也已经修改。

4.创建主服务器连接账户
在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICAITON SLAVE权限。

1
GRANT REPLICATION SLAVE ON *.* TO '账号'@'从服务器IP' IDENTIFIED BY '密码';

5.备份数据库

1
shell > mysqldump --master-data --opt database_name > backup-file.sql

6.查看主服务器的状态

1
show master status/G;

记录File 和 Position 项的值

注:由于没有锁定主服务器,这里记录的主服务器二进制日志position值可能会大于做mysqldump时的值,这将导致从服务器丢失在此期间的更新。如果可以保证在此期间主服务器不会出现创建新表的更新,那么丢失的影响不大;否则,将导致从服务器复制线程失败,这时必须在做mysqldump时锁定主服务器。

7.配置从服务器
在从服务器的my.cnf文件中添加下面的行:

1
2
[mysqld]
server-id=slave_id

slave_id值必须为2到232–1之间的一个正整数值。ID值唯一的标识了复制群集中的主从服务器,因此它们必须各不相同。

8.保证数据同步
在主从服务器备份功能开启之前,必须要先保持主从数据库的数据一致。使用–skip-slave-start选项启动从服务器启动从服务器,并导入备份数据库文件。

1
2
shell > mysqladmin create target_db_name
shell > mysql target_db_name < backup-file.sql

9.在从服务器上执行下面的语句,以系统的实际值替换选项值:

1
2
3
4
5
6
CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;

其中recorded_log_file_name和recorded_log_position分别为步骤6所记录的File和Position值。

10.启动从服务器线程

1
START SLAVE;

执行上述程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。如果没有正确更新,请检查复制线程状态以及data目录下的.err文件获取信息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多