这是本文档旧的修订版!


本篇文章介绍如何设置mysql的主从复制功能,实现同步本地与远程服务器的mysql增加、修改、删除数据。实验已本地两台虚拟机模拟master的IP地址192.168.1.80,设置推送mysql数据内容给slave服务器,slave的主机IP地址为192.168.1.80,设置只复制master推送来的astercc10库的数据。

一、修改配置文件my.cnf。

【master的my.cnf配置】

  1. 添加 log-bin=mysql-bin 启用二进制日志,master必须,slave可选。
  2. 添加 server-id=1 可以是1,也可以取主机IP最后一段。
  3. 添加 binlog-do-db=ccupdate
  4. 添加 binlog-ignore-db=mysql

【slave的my.cnf配置】

  1. 添加 server-id=2 可以是2,也可以取从机IP最后一段,master、slave必须不一样。
  2. 添加 replicate_wild_do_table=ccupdate.%
  3. 添加 replicate_wild_ignore_table=mysql.%

二、在master服务器上建立授权帐户并授权。

1、执行 grant replication slave on *.* to 'master'@'192.168.1.248' identified by '123456';

解决grant replication slave ont 操作提示密码PASSWORD(),执行 show variables like 'old_passwords';若得到old_passwords = 1,则执行set old_passwords=0;解决该问题。

三、登录master服务器的mysql控制台并配置。

  1. 执行 flush tables with read lock; 刷新所有表并且阻止其它写入。
  2. 执行 show master status; 查看主服务器主从状态,记录表中File、Position下的值。
  3. 此后不要再操作主服务器mysql,防止主服务器状态值变化,勿退出mysql防止read unlock发生。
  4. 另开一个shell执行mysqldump -pastercc –databases astercc10 > astercc10.sql备份master的astercc10库并还原给slave。

四、登录slave服务器的mysql控制台并配置。

  1. 执行 change master to master_host='192.168.1.80',master_user='ccmaster', master_password='passw0rd', master_log_file='mysql-bin.000001', master_log_pos=Position值(无引号); 使slave获得master的复制权限。
  2. 执行 start slave; 启动从服务器复制功能。
  3. 执行 show slave status\G 检查从服务器主从复制功能状态。
  4. 其中参数Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 状态均为Yes。参数Last_IO_Errno: 0,Last_IO_Error:,Last_SQL_Errno: 0,Last_SQL_Error: ,无错误信息,则主从复制功能已经实现。

如果 master 用的 mysql5.6 , binlog_checksum 默认设置的是 “crc32”,并且 slave 用的 5.5 或者更早的版本,请将 master 的 binglog_checksum 设置为 none。可以在控制台上执行 set global binlog_checksum='NONE',或写入my.cnf,添加binlog_checksum=NONE永久生效。

zh/常见问题及解答/mysql主从复制.1482404498.txt.gz · 最后更改: (外部编辑)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki