Mysql的实时同步 - 双机互备
时间:2010-09-29 来源:jiangchao
Mysql的实时同步 - 主从模式.
设置方法:
步一 在主服务服上建立 同步用的用户并给予 权限
GRANT REPLICATION SLAVE ON *.* TO backup@'%' IDENTIFIED BY '123456';
给任何连接的backup用户以replication的权限
(这里是mysql 5.0的 如果是4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
GRANT FILE ON *.* TO backup@'%' IDENTIFIED BY '123456';
)
步二 配置 mysql.ini:
主服务器
#master
server-id = 1
log-bin="c:\mysql\logs\mysql_binary_log"
binlog-do-db="test"
解释:
1)server-id表示是本机的序号为1,slave的server-id 不能与master的相同
2)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;
其中mysql_binary_log是日志文件的名称,mysql将建立不同扩展名,文件名为mysql_binary_log的几个日志文件.
3)binlog-do-db=test 表示需要备份的数据库是test这个数据库,
如果需要备份多个数据库,那么应该写多行,如下所示:
binlog-do-db=backup1
binlog-do-db=backup2
binlog-do-db=backup3
从服务器
# Replication slave
server-id=2
master-host="192.168.10.33"
master-user="backup"
master-password="123456"
master-port=3306
master-connect-retry=60
replicate-do-db=test
解释:
1) server-id=2表示本机器的序号;
2) master-host=192.168.10.33 表示本机做slave时的master为192.168.10.33;
3) master-user=username 这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制;
4) master-password=password 表示授权用户的密码;
5) master-port=3306 master上MySQL服务Listen3306端口;
6) master-connect-retry=60 同步间隔时间;
7) replicate-do-db=backup 表示同步backup数据库,这个数据库名是区分大小写的,必须与master的数据库一致;
log-bin 打开logbin选项以能写到slave的 I/O线程;
最后重新启动两台机器的mysql.
步三 将master上已有的记录 导入到slave中.
------------------------------------------------
查看状态 及调试
1,查看master的状态
SHOW MASTER STATUS;
Position 不应为0
2,查看slave的状态
show slave status;
Slave_IO_Running | Slave_SQL_Running 这两个字段 应为 YES|YES.
show processlist;
会有两条记录与同步有关 state为 Has read all relay log; waiting for the slave I/O thread to update it
和s Waiting for master to send event .
3,错误日志
MySQL安装目录\data\Hostname.err
删除 relay-log.info , master.info ,xwb0703-relay-bin.*
slave利用这2个文件来跟踪处理了多少master的二进制日志。
每次删除 relay-log.info , master.info 后会重新从 主服务器下载 更新。
必须要主服务上 将 log-bin 下的文件删除 才可以。
设置方法:
步一 在主服务服上建立 同步用的用户并给予 权限
GRANT REPLICATION SLAVE ON *.* TO backup@'%' IDENTIFIED BY '123456';
给任何连接的backup用户以replication的权限
(这里是mysql 5.0的 如果是4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
GRANT FILE ON *.* TO backup@'%' IDENTIFIED BY '123456';
)
步二 配置 mysql.ini:
主服务器
#master
server-id = 1
log-bin="c:\mysql\logs\mysql_binary_log"
binlog-do-db="test"
解释:
1)server-id表示是本机的序号为1,slave的server-id 不能与master的相同
2)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;
其中mysql_binary_log是日志文件的名称,mysql将建立不同扩展名,文件名为mysql_binary_log的几个日志文件.
3)binlog-do-db=test 表示需要备份的数据库是test这个数据库,
如果需要备份多个数据库,那么应该写多行,如下所示:
binlog-do-db=backup1
binlog-do-db=backup2
binlog-do-db=backup3
从服务器
# Replication slave
server-id=2
master-host="192.168.10.33"
master-user="backup"
master-password="123456"
master-port=3306
master-connect-retry=60
replicate-do-db=test
解释:
1) server-id=2表示本机器的序号;
2) master-host=192.168.10.33 表示本机做slave时的master为192.168.10.33;
3) master-user=username 这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制;
4) master-password=password 表示授权用户的密码;
5) master-port=3306 master上MySQL服务Listen3306端口;
6) master-connect-retry=60 同步间隔时间;
7) replicate-do-db=backup 表示同步backup数据库,这个数据库名是区分大小写的,必须与master的数据库一致;
log-bin 打开logbin选项以能写到slave的 I/O线程;
最后重新启动两台机器的mysql.
步三 将master上已有的记录 导入到slave中.
------------------------------------------------
查看状态 及调试
1,查看master的状态
SHOW MASTER STATUS;
Position 不应为0
2,查看slave的状态
show slave status;
Slave_IO_Running | Slave_SQL_Running 这两个字段 应为 YES|YES.
show processlist;
会有两条记录与同步有关 state为 Has read all relay log; waiting for the slave I/O thread to update it
和s Waiting for master to send event .
3,错误日志
MySQL安装目录\data\Hostname.err
删除 relay-log.info , master.info ,xwb0703-relay-bin.*
slave利用这2个文件来跟踪处理了多少master的二进制日志。
每次删除 relay-log.info , master.info 后会重新从 主服务器下载 更新。
必须要主服务上 将 log-bin 下的文件删除 才可以。
相关阅读 更多 +