一共安装了两个数据库,一个在虚拟机里面,一个在本机。使用桥接进行联网。系统是windows 7。数据库是5.6
1. 安装好mysql
可以参考我另外一篇安装说明。
记录一下需要用的命令:
登入sql:mysql –u 账号–p;
退出:exit
切换数据库:use 数据库名字;
显示master的情况:show master status;
显示slave的情况:show slave status;
为root添加远程连接的: GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "password";
2. 确保数据库可以被远程连接
用客户端去连接远程数据库,如果不能连接需要开启账号权限远程访问。自行解决。不同版本的数据库的修改方式不一样。5.6的可以打开数据库mysql->user表修改用户的ip地址。
3. 修改主机配置
1. 在主机的安装目录下面找到my.ini。一般在C:\ProgramData\MySQL\MySQL Server 5.6,可能以前版本的数据库my.ini不在这里,要自己确认文件的具体位置。
2. 修改主库的my.ini参数:
1. server-id=1 #服务器 id 不能重复,可以依次累加
2. log-bin #开启这个,数据库的操作日志二进制,默认在安装目录下面。比如:C:\ProgramData\MySQL\MySQL Server 5.6\data。如果后面不加 log-bin=xxx,那么文件名字以计算机的名字加编号来命名二进制文件自动生成。
下图是配了名字的:
3. binlog-do-db=test #设置二进制日志记录的库,可以设置多个,逐条累加,不写同步所有的数据库
4. binlog-ignore-db=mysql ##设置二进制日志不记录的库,看情况配置.
5.general-log=on #开启所有操作日志,这个用来区分是否操作了主库,实际使用可以不开
5. 在主数据库上面新建复制用的账户:grant replication slave on *.* to ‘replication’@’192.168.0.104’identified by 'admin'; (需要登入主数据库执行)给主机192.168.0.104添加权限,用户名:replication(自定义),密码:admin(自定义);如果是要给所有的地址的从机访问,就需要把ip改成%
重启主库;
1. 在主上执行flush tables with read lock;(需要登入主数据库执行)
2. 设置完成之备份需要复制的数据库,备份方法很多,自己找。
3. 在主上面unlock tables;(需要登入主数据库执行)
4. 在主上执行show master status;(需要登入数据库执行),执行之后需要记录:Position的值,File的值。
3. 设置从库的my.ini参数
log-bin=mysql-bin #可以不配置,
server-id = 2 #不能相同,最好累加
replicate-do-db=test #设置同步的库,和主库的对应
replicate-ignore-db=mysql #设置不同步的库
log-slave-updates #同步后记录二进制日志,可以不开
general-log=on #开启所有操作日志,这个用来区分是否操作了从库,实际使用可以不开
把主库的数据恢复进来
重启数据库
4. 从库配置服务
登入从数据库:
执行:slave stop
执行:change master to master_host='192.168.1.189主机地址',master_user=' replication主机里面建立的同步账号',
master_password=' replication 对应密码',master_log_file='mysql-bin000014.000001前面说的file的值',master_log_pos=107前面说的position的值;(上面是一条sql,不要少考了)。
执行:slave start
执行:show slave status;
如果发现说明成功了。
测试看看。
5.停止主从备份:
在从机上面执行:
stop slave;
reset slave;