mysql主从复制
外网数据库为主,内网数据库为从。首先确保主数据库所在的服务器防火墙打开。
如果数据库在做主从的时候已经有数据了, 则需要进行锁表操作.
mysql> flush tables with read lock;
记住数据导完后要解锁:
mysql> unloclk tables;
一.配置主数据库master
1.配置master主数据库
[mysqld] server-id = 1 //分配server-id log-bin = master-bin //默认mysql-bin,可以不修改
2.在master建立同步帐号:
grant replication client,replication slave on *.* to repl@'218.108.90.94' identified by 'repl' ;
3.查看binlog日志:
show master status;
查看A的状态,记录下file的位置和postion的参数
二 .配置slave从数据库
1.配置从数据库
server-id=208 log-bin=mysql-bin //建议log-bin功能也打开 binlog-format=mixed relay-log=mysql-relay
2. 指向主数据库
先关闭slave stop slave;
CHANGE MASTER TO MASTER_HOST='server A ip', MASTER_PORT=3306, MASTER_USER='user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
打开slave :start slave;
查看slave状态:show slave status;
ps: 如果要删除slave信息可以
change master to master_host = ''; 然后 reset slave;
如果从数据库数显如下错误
Last_IO_Error: Got fatal error 1236 from master when reading data from >> binary log: 'Slave can not handle replication events with the checksum that >> master is configured to log; the first event 'mysql-bin.000001' 这是由于 master 用的 mysql5.6 , binlog_checksum 默认设置的是 crc32。 如果slave用的 5.5 或者更早的版本,请将master的 binglog_checksum设置为 none。 binlog_checksum=none