Windows下MySQL备份
关键字:Windows MySQL 备份
一、单机备份
①假想环境:
MySQL安装位置:C:\AppServ\MySQL\
论坛数据库名称为:wiki
数据库备份目的地:D:\db_bakup\
新建dbbak.bat,写入以下代码
Java代码
2.xcopy C:\AppServ\MySQL\data\wiki\*.* D:\db_bakup\wiki\%date:~0,3%\ /y
net stop mysql
xcopy C:\AppServ\MySQL\data\wiki\*.* D:\db_bakup\wiki\%date:~0,3%\ /y
net start mysql
然后使用Windows的“计划任务”定时执行该批处理脚本即可。
解释:备份和恢复的操作都比较简单,完整性比较高,控制备份周期比较灵活,例如,保存一周的数据,用%date:~0,3%,保存每天的数据,%date:~4,10%。此方法适合有独立主机但对MySQL没有管理经验的用户。缺点是占用空间比较多,备份期间MySQL会短时间断开。
②假想环境:
MySQL安装位置:C:\AppServ\MySQL\
论坛数据库名称为:wiki
MySQL root密码:123456
数据库备份目的地:D:\db_backup\
脚本:
Java代码
1.@echo off
2.C:\AppServ\MySQL\bin\mysqladmin -u root --password=123456 shutdown
3.C:\AppServ\MySQL\bin\mysqldump --opt -u root --password=123456 bbs > D:\db_backup\wiki.sql
4.C:\AppServ\MySQL\bin\mysqld-nt
@echo off
C:\AppServ\MySQL\bin\mysqladmin -u root --password=123456 shutdown
C:\AppServ\MySQL\bin\mysqldump --opt -u root --password=123456 bbs > D:\db_backup\wiki.sql
C:\AppServ\MySQL\bin\mysqld-nt
将以上代码保存为backup_db.bat
然后使用Windows的“计划任务”定时执行脚本即可。
利用WinRAR对MySQL数据库进行定时备份。
对于MySQL的备份,最好的方式就是直接备份MySQL数据库的data目录。下面提供了一个利用WinRAR来对data目录进行定时备份的方法。
首先当然要把WinRAR安装到计算机上。、
将下面的命令写入到一个文本文件里
Java代码
2.del C:\AppServ\MySQL\wiki /q
3.c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar C:\AppServ\MySQL\data
net stop mysql
del C:\AppServ\MySQL\wiki /q
c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar C:\AppServ\MySQL\data
net start mysql
保存,然后将文本文件的扩展名修改成CMD
进入控制面板,打开计划任务,双击“添加计划任务”。在计划任务向导中找到刚才的CMD文件,接着为这个任务指定一个运行时间和运行时使用的账户密码就可以了。
二、MySQL数据库的主从同步备份步骤
实现功能:A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的。
环境:
A、B的MySQL数据库版本同为5.0.45
A:
操作系统:Windows 2003 server
IP地址:192.168.0.113
B:
操作系统:Windows 2003 server
的IP地址:192.168.0.173
配置过程:
1、在A的数据库中建立一个备份帐户,命令如下:
Java代码
1.GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
2.TO backup@'192.168.0.173'
3.IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO backup@'192.168.0.173'
IDENTIFIED BY ‘123456’;
建立一个账户backup,并且只能允许从192.168.0..173这个地址上来登录,密码是123456
2、因为MySQL版本新密码算法不同,所以进入MySQL下,输入:set password for'backup'@'192.168.0.173'=old_password('123456');
3、关停A服务器,将A中的数据拷贝到B服务器中,使得A和B中的数据同步,并且确保在全部设置操作结束前,禁止在A和B服务中进行写操作,使得两数据库中的数据一定要相同。
4、对A服务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
Java代码
1.server-id=1
2.log-bin=c:\log-bin.log
server-id=1
log-bin=c:\log-bin.log
server-id:为主服务器A的ID值
log-bin:二进制变更日值
5、重启A服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去。
6、关停B服务器,对B服务器锦熙配置,以便让它知道自己的镜像ID、到哪里去找主服务器以及如何去连接服务器。最简单的情况是主、从服务器分别运行在不同的主机上并都使用着默认的TCP/IP端口,只要在从服务器启动时去读取的mysql/my.ini文件里添加以下几行指令就行了。
Java代码
1.[mysqld]
2.server-id=2
3.master-host=192.168.0.113
4.master-user=backup
5.master-password=123456
6.//以下内容为可选
7.replicate-do-db=backup
8.
9.server-id:从服务器B的ID值。注意不能和主服务器的ID值相同。
10.master-host:主服务器的IP地址。
11.master-user:从服务器连接主服务器的帐号。
12.master-password:从服务器连接主服务器的帐号密码。
13.replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。
[mysqld]
server-id=2
master-host=192.168.0.113
master-user=backup
master-password=123456
//以下内容为可选
replicate-do-db=backup
server-id:从服务器B的ID值。注意不能和主服务器的ID值相同。
master-host:主服务器的IP地址。
master-user:从服务器连接主服务器的帐号。
master-password:从服务器连接主服务器的帐号密码。
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。
7、重启从服务器B。至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。如果从服务器没有进行同步更新,你可以通过查看从服务器中的mysql_error.log日志文件进行排错。
8、由于设置了slave的配置信息,mysql在数据库data目录下生成master.info,所以如有要修改相关slave的配置要先删除该文件,否则修改的配置不能生效。
-END-