mysql数据库同步详解(二)

2014-11-24 10:26:16 · 作者: · 浏览: 1
是保证slave 能与master 保持相同的记录读取,并读取正确的bin-log 日志文件)

在slave 执行下面sql 操作

mysql> 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;

这里,把 上面的redcorded_log_file_name 改为 mysql-bin.003 而recorded_log_position 改为73 (特别注意,这是关系关键)。

linux 下的mysql 与win2k 下的MySQL 作replication 会有什么技巧:

注意Linux 下有大小写区分,而win2k 下没有。所以最好使用mysqldump 方法来让两个数据库初始化同步,而不能使用tar 方式直接copy 数据库表文件。使用mysql studio 来作database backup 也不错

注意win2k 下的mysql 配置文件是c:\my.ini。你可以使用mysql administrator 0.9 这个图型界面的实用工具来设置。

如果win2k 下的mysql 为master , 一定要注意show master status 中显示出来的结果。

win2k 下的mysql 为slave 时,注意不要把同步时间周期设置太长。

同步实战:

环境:

环境配置

操作系统:CentOS release 5.3 (Final) 64bit

MySQL:5.14

主服务器A IP:10.224.194.239

从服务器B IP:10.224.194.237

同步数据库: test(用于测试,两台服务器初始数据一致)

主服务器(master)设置

新建一个用于备份的用户(直接用root用户也可以):

GRANT FILE ON *.* TO backup@10.224.194.237 IDENTIFIED BY ‘pass’;

GRANT REPLICATION SLAVE ON *.* TO backup@10.224.194.237 IDENTIFIED BY 'pass';

编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:server-id=1 #设置服务器id,主从服务器要不同log-bin=mysqllog #启用二进制变更日志(即把所有对数据进行操作的SQL命令以二进制格式记入日志)#其中mysqllog是日志文件的名称,日志的文件名是mysqllog.n,其中n是一个6位数字的整数。binlog-do-db=test #指定需要启用二进制变更日志的数据库"test" binlog-ignore-db = mysql #指定不需要启用二进制变更日志的数据库"mysql"

重启mysqld服务,可以用mysql命令:SHOW MASTER STATUS;查看“启用二进制变更日志”情况

从服务器(slave)设置

编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:

server-id=2 #设置服务器id,主从服务器要不同replicate-do-db=test #指定需要从master同步过来的数据库"test" replicate-ignore-db = mysql #指定不需要从master同步过来的数据库"mysql" #设置master服务器的IP地址、登陆用户、密码、端口master-host=10.224.194.239 master-user=backup master-password=pass master-port=3306 master-connect-retry=60 #连接master服务器失败后重试的延迟时间slave-skip-errors=all #跳过所有错误继续执行同步工作log-slave-updates #启用从属服务器上的日志同步功能

注意:如果从服务器上存在master.info文件(如:/var/lib/mysql/master.info),要使以上配置选项生效,在重启mysqld服务前必须删除该文件。

重启mysqld服务,可以用mysql命令:SHOW SLAVE STATUS;查看同步情况

从数据库的相关命令:

slave st; slave start ; 开始停止从数据库。

show slave statusG; 显示从库正读取哪一个主数据库二进制日志

验证:

在主/次 服务器上创建一张表名为test01,最好设置主键:让后在主服务器上插入一条数据,此时会同步到次服务器上,如果没有成功,查看log,号配置项是否正确

create table test01

( name_id varchar(10) not null,

primary key(name_id)

)

insert into test01(name_id) value(1);

成功完成以上配置后,在主服务器A的test库里添加数据或删除数据,在从服务器B的test库里马上也能看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。

本文出自 “迈小步、不停步!” 博客