在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库里马上也能看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。
本文出自 “迈小步、不停步!” 博客