环境:
宿主机系统:
windows7

虚拟机:Oracle VMVirtualBox

Linux: ubuntukylin-14.04.1-amd64.iso

mysql:5.7.*


虚拟主机2台
MASTER: 192.16.41.9(主)   mysql版本: 5.7.12
 SLAVE:    192.16.41.7(从)   mysql版本:5.7.14

其他基础配置:

1.mysql的安装:http://blog.csdn.net/lanonola/article/details/51423249

2.ssh的安装,保持两台机器可互相通信:http://blog.csdn.net/lanonola/article/details/51384914

开始主从配置:

Step1:master部分数据准备

1.在master服务器上,创建专用备份账户:

mysql -uroot -p

 GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backuser'@'192.16.41.7' IDENTIFIED BY '123456';

2. 将主服务器的test库导出sql文件,并将sql文件拷贝到从服务器

mysqldump -u root -p test >/home/backup/test.sql

cd /home/backup

scp test.sql root@192.16.41.7:/home/backu/test.sql

 

Step2.slave部分数据准备    

1.新建数据库,将主机上的备份数据拷贝到从机上

create database test;

mysql -h localhost -u root -p test</home/backup/test.sql;

show database;

use test;

show tables;

2.在从服务器上连接主服务器:mysql -ubackuser -h 192.16.41.9 -p.

Step3:配置master和slave的配置文件

1.master 部分

vi /etc/my.cnf  

#[必须]启用二进制日志  

log-bin=mysql-bin  

#[必须]服务器唯一ID,默认是1,一般取IP最后一段  

server-id=9 

修改文件后,重启服务,让配置生效:sudo servicemysql restart

其他参数:

binlog-do-db=testdb      #允许复制的数据库名称,一行代表一个数据库

binlog-ignore-db=mysql #不复制的数据库

查看主服务器状态:show slave master;


看到file和position,记录下来,后面需要用到。分别是mysql-bin.000008和1254

2.slave部分

vi /etc/my.cnf  

#[可选]启用二进制日志 

log-bin=mysql-bin  

 #[必须]服务器唯一ID,默认是1,一般取IP最后一段  

 server-id=152 

    修改文件后,重启服务,让配置生效:sudo service mysql restart

 其他参数:

replicate-do-db=testdb

replicate-ignore-db=mysql

然后关闭slave同步进程

stop slave;

change master to master_host='192.16.41.9',master_user='backuser',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=1254;

start slave;

show slave status;

这两个参数必须都是yes。

如果有错误,则stop slave,排错,然后showmaster status;

将最新的file和pos信息给从机:

change master to master_host='192.16.41.9',master_user='backuser',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=1254;

start maser;

如此,直到成功。

Step4:测试 (略)

在主库新建表,并对表进行insert,update,delete操作,从库实现同步更新。

此时并未实现读写分离,从库可以进行insert,update,delete操作,主库未同步更新。

注意:

使用分布式mysql数据库时,

my.cnf必须去掉bind_address=127.0.0.1,注释掉即可。

然后更改mysql的权限,进入mysql命令端,

use mysql;

把root账户的localhost改为%

update mysql.user set host="%" where user=root;

接着刷新下权限;

flush privileges;

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐