1.两台服务器,两个数据库
2.my.ini文件中[mysqld]下添加 binlog-do-db=yzcw(表示允许的数据库) binlog-ignore-db=mysql(表示不允许的数据库) log-bin="C:/pro/Program Files/MySQL/logs/iZ"(生成日志的路径)
server-id=1(数据库唯一标识id,>>每个数据库都不一样,要注意)
3.创建用户和授权
3.1 创建用户:CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
3.2 授权:GRANT REPLICATION SLAVE ON *.* TO 'name'@'192.168.0.%' IDENTIFIED BY 'password';
name是你的用户名,password是密码.(你可以专门建立一个读写的用户.)192.168.0.%(这个是你从数据库的ip,你也可以用%直接写,表示允许所有其他服务器ip都能通过该账户读写.如:GRANT REPLICATION SLAVE ON *.* TO 'name'@'%' IDENTIFIED BY 'password';.也可以配置固定ip:如:GRANT REPLICATION SLAVE ON *.* TO 'name'@'192.168.0.12' IDENTIFIED BY 'password';).
4. show master status;(在主数据使用该条语句)
file 字段和 postion 字段记住。
5.切换到从数据库配置:
执行命令:以下
首先:stop slave
其次:
change master to master_host='192.168.0.104',//这个你主数据库的ip地址master_port=3306, //数据库端口号
master_user='name', //用户名
master_password='password', //密码
master_log_file='master-bin.000001', //第4步中file字段
master_log_pos=0; //第4步中postion字段
最后:start slave
6.验证:show slave status (在从数据库中执行)
SLAVE_IO_RUNNING YES
SLAVE_SQL_RUNNING YES
看到以上两个状态为yes说明就成功了.
其次:你也可以在主数据库添加数据看看同步效果
7.以下是注意事项
7.1 my.ini文件路径可以去此处查看(右键计算机》管理》服务和应用程序》服务》找到mysql服务》右键属性》看看my.ini文件路径(注意可执行的文件路径,可能你要往后拖一点才能看到))
7.2SLAVE_IO_RUNNING NO
SLAVE_SQL_RUNNING NO
这种情况可能是你忘记 start slave 了。参考第5步,看看有什么遗漏的地方.
7.3 SLAVE_IO_RUNNING Connecting
SLAVE_SQL_RUNNING YES
以上这种情况可能是:
1.两台服务器不能互通(你可以ping 一下 如:ping 114.55.251.14)
2.账户密码错误
3.没有权限(去主数据库给从数据权限,参考第3步.)
4.pos不正确 (参考第5步)
7.4 防火墙问题.你可以关闭防火墙试试.(建议参考防火墙详细配置(自己百度))
基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了。如果延迟比较大,就先确认以下几个因素:
1. 网络延迟
2. master负载
3. slave负载4.延迟解决方式
sync_binlog=1(做主从的时候可以将slave从库 sync_binlog=0,提高从库的执行效率)
innodb_flush_log_at_trx_commit = 1
slave_net_timeout单位为秒 默认设置为 3600秒
参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
master-connect-retry单位为秒 默认设置为 60秒
参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试。
通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟
5.监测是否延迟
5.1 show slave status;
Seconds_Behind_Master 通过查看该字段监测
当该字段为Null 值时 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.
当该字段为0 值时 表示主从复制良好,可以认为lag不存在。】
当该字段为正值时 表示出现延迟了,该值越大,延迟越大。