此手顺为配置、操作和维护A数据库和B数据库的MySQL热备份操作说明。
5.5版本之后需要使用命令来进行热备份,修改配置文件的方式只适应5.5之前的版本
MySQL配置热备份
说明:121.40.xxx.A 主数据库(A)
120.195.C.D [外网地址] 192.168.xx.B [内网地址] 从数据库(B)
环境:MySQL Server 5.1 存储引擎 INNODB
系统:Windows 2008 server
A和B环境相同。
1) 在主数据库A上创建一个备份账号,允许此用户只能从某个指定的IP访问主数据库
脚本如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO backupB@'120.195.C.D'
IDENTIFIED BY '123xxx';
其中:backupB : 备份账号的用户名
123xxx : 备份账号的密码
120.195.C.D :IP地址(从数据库B的地址),并且这个backupB用户只能通过此IP来访问A主数据库。
2) 停止A主数据库cmd ----> net stop mysql。
3) 使用mysqldump --opt -u root --password=adminxxx xxx_database> D:\backup\backup_ewxt_db\xxxx.sql 来备份数据库。
4) 拷贝A主备份的数据库到B从上进行还原,使用source 命令来还原数据。使得A,B数据同步,并且在设置未结束之前,禁止对A,B数据进行写操作。
5) 对A主的配置文件(my.ini)进行配置。
server-id:主服务器ID,此ID不能重复(一主一从,一主二从,一主多从的server-id都不能互相重复)
log-bin:二进制变更日值
sync_binlog: 日志与硬盘同步策略
log_slave_updates: 从服务器的更新是否写入二进制日志
replicate-do-db: 要同步的数据库
6) 重启A服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去。
7) 关停B服务器,对B服务器进行配置,以便让它知道自己的镜像ID、到哪里去找主服务器以及如何去连接服务器。
server-id:从服务器B的ID值。注意不能和主服务器的ID值相同。
master-host:主服务器的IP地址。
master-user:从服务器连接主服务器的帐号。
master-password:从服务器连接主服务器的帐号密码。
master-port: 从服务器连接主服务器的端口,默认端口可以不用设置。
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。
binlog-ignore-db: 不需要同步主服务器的数据库
8) 重启从服务器B。至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。
9) 由于设置了slave的配置信息,mysql在数据库data目录下生成master.info,所以如有要修改相关slave的配置要先删除该文件,否则修改的配置不能生效。
MySQL热备份常见错误处理
1. 一般的异常只需要跳过一步即可恢复
>slave stop; #从服务停止
>SET GLOBAL sql_slave_skip_counter = 1; #跳过
>slave start;
2.断电导致主从不能同步时,或者其他情况导致主从不同步。
>show master status;在A主服务器上操作,查询日志文件和读取位置。
>slave stop;
>change master to master_host='ip', master_user='username', master_password='password', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx;
>slave start;
>show slave status;
3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定
略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060 / ALL (ALL 忽略所有错误)
关键语句与界面
是否成功,主要查看下面蓝色表示的列的内容是否一致
语句为:show slave status 查看从服务状态。