准备工作:
Centos7.
192.168.96.9 master数据库 ;
192.168.96.10 slave数据库;
1. master数据库配置
(1)修改mysql的配置文件 vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
server-id=1 #服务器id (主从必须不一样)
log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径
#作为主机的配置
binlog-do-db=test #要给从机同步的库
#binlog-do-db=
binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改
(2) 重启mysql service mysqld restart
(3) 进入mysql客户端,查看bin-log日志是否开启
mysql> show variables like '%log_bin%';
(4)查看master数据库的server_id状态,默认是0;
mysql> show variables like '%server_id%';
(5)查看master的状态;
mysql> show master status;
(6)master创建一个账号hadoop给slave数据库使用;因为slave到master上去拉取二进制文件的时候其实质也建立了一个jdbc长连接,需要账号密码;
GRANT REPLICATION SLAVE ON *.* to 'hadoop'@'%' identified by '1328174';
查看账号是否创建成功;
mysql> use mysql;
mysql> select user , authentication_string, host from user;
到此,master配置完毕!!
2. slave数据库配置
(1)修改配置文件 vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
server-id=10 #服务器id (主从必须不一样)
log-bin=mysql-bin
binlog-do-db=test
#加上以下参数可以避免更新不及时SLAVE重启后导致的主从复制出错。
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
#relay_log_recovery=1 #slave禁止写
#super_read_only=1 #slave禁止写
(2) 由于master 和 slave两台虚拟机服务器是克隆的同一台主机,所以我们需要修改auto.cnf文件的server-uuid的值,保证master和slave的mysql实例不一样,如同不修改,主从复制会失败的。查看错误日志如下:
所以需要修改:vi /var/lib/mysql/auto.cnf
(3)继续配置slave
stop slave;
change master to master_host='192.168.96.9',master_user='hadoop',master_password='1328174',
master_log_file='mysql-bin.000002',master_log_pos=358;
### mysql-bin.000001,639 这两个值是通过 show MASTER status 查询出来的。
start slave;
SHOW SLAVE STATUS;
如果这两个都是Yes,说明主从复制基本成功了!!!
3. 测试
往master服务器的表中插入一条数据:
查看slave服务器中表的状况:
测试成功。