windows服务器下mysql主从同步备份详细介绍
 


目的:
有两台MySQL数据库服务器A和B,使A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的.

原理:
负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作.因此,主服务器必须激活二进制日志功能.从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限.

环境:
A、B的MySQL数据库版本同为5.0.18
A:
操作系统:Windows 2003
IP地址:10.100.0.100
B:
操作系统:Windows 2000 server
的IP地址:10.100.0.200

配置过程:
1、在A的数据库中建立一个备份帐户,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO
IDENTIFIED BY ‘1234’;

建立一个帐户backup,并且只能允许从10.100.0.200这个地址上来登陆,密码是1234.

2、因为mysql版本新密码算法不同,所以进入mysql下,输入:set password for);


3、关停A服务器,将A中的数据拷贝到B服务器中,使得A和B中的数据同步,并且确保在全部设置操作结束前,禁止在A和B服务器中进行写操作,使得两数据库中的数据一定要相同!

4、对A服务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
server-id=1
log-bin=c:\log-bin.log

server-id:为主服务器A的ID值
log-bin:二进制变更日值

4、重启A服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去.

5、关停B服务器,对B服务器锦熙配置,以便让它知道自己的镜像ID、到哪里去找主服务器以及如何去连接服务器.最简单的情况是主、从服务器分别运行在不同的主机上并都使用着默认的TCP/IP端口,只要在从服务器启动时去读取的mysql/my.ini文件里添加以下几行指令就行了.
[mysqld]
server-id=2
master-host=10.100.0.100
master-user=backup
master-password=1234
//以下内容为可选
replicate-do-db=backup

server-id:从服务器B的ID值.注意不能和主服务器的ID值相同.
master-host:主服务器的IP地址.
master-user:从服务器连接主服务器的帐号.
master-password:从服务器连接主服务器的帐号密码.
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像.

6、重启从服务器B.至此所有设置全部完成.更新A中的数据,B中也会立刻进行同步更新.如果从服务器没有进行同步更新,你可以通过查看从服务器中的mysql_error.log日志文件进行排错.


8、查看日志一些命令
1, show master status\G;
在这里主要是看log-bin的文件是否相同.
show slave status\G;
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果都是Yes,则说明配置成功.

2,在master上输入show processlist\G;
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL

如果出现Command: Binlog Dump,则说明配置成功.

问题描述:主从复制在某个时刻,从服务器同步失败,并给出报错消息.

消息内容:基本意思是缺少某个库的某个表

原因:主从服务长时间不同步,主库已经生成很多新的表或者库,而从库却没有.

操作过程:
(1)登陆主服务器,查看主服务器的状态mysql>show master status;
(2)登陆从服务器,执行同步操作.[code]mysql>stop slave;mysql > change master to ...(此处省略);mysql > start slave;
(3)从服务器上查看状态[code]mysql > show slave status\G看报错信息少什么表或库,少什么就直接从主服务器通过scp复制,然后重复过程(1)~(3)直到不报错为止.


也许下面的会对您有所帮助:

MySQL 5.0.16 乱码问题处理办法?
http://www.34514.cn/style/info/shownews.asp?id=535

MySQL中修改密码及访问限制设置详解?
http://www.34514.cn/style/info/shownews.asp?id=651

关于MySQL数据库实用SQL语句详解?
http://www.34514.cn/style/info/shownews.asp?id=452