在开始主从复制前,搭建好自己的MySQL服务器,主服务器master,从服务器slave。
如果你的slave是从master 直接克隆过来的,首先 执行 find / -name auto.cnf 查找 auto.cnf文件 ,去修改auto.cnf文件,修改最后一位就行。
1、去编辑master 和 slave 的配置
master : /etc/my.cnf
[mysqld]下添加
server-id =1
log-bin=mysql-bin
binlog-format=mixed
每一个mysql 都拥有一个唯一的id,在这给他加一个唯一的id。log-bin 开启二进制日志 。
binlog-format两种方式 , mixed 混合的 row :记录磁盘变化
slave : /etc/my.cnf
[mysqld]下添加
server-id =2
log-bin=mysql-bin
relay-log=mysql-relay
在slave这边也给他一个id,不要和master那边一样 ,打开relay-log 日志
编辑完以后重启maste 和slave 的 mysqld 服务
systemctl restart mysqld
在master 中 ,进入MySQL,在mysql库创建一个用户并授权给slave
grant all privileges on *.* to repl@'192.168.127.%' identified by 'MySQL-123456';
grant 权限(all为全部) on 数据库.*(建议给*.* 全部数据库) to 用户名@登录主机(slave的ip地址,最后一位建议给%) identified by "密码(这里会出一个密码过于简单的错误,建议使用MySQL-123456,我用这个直接成功)";
用下边的命令查看master状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
到了这一步,master这边的操做就差不多了。
再去配置slave
change master to
master_host='192.168.1.201',
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000001',
master_log_pos=308;
host为master地址 //user和 password 为 刚才创建的 用户名 、密码
log_file 为 文件名(可以在master服务器 show master status获得)
重启slave复制功能
start slave
查看slave复制功能的状态
mysql>show slave status\G
可以看到Slave_IO_Running 和 Slave_SQL_Running 是 yes 状态,如果有一个不是yse那就是没配置成功。
然后回到master ,进行测试 :
建 一个表
mysql> create database t1;
进入t1表,创建表 :
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
添加数据
insert into t1 values(null,'haha');
然后到slave查看:
show databases;
如果能看到刚刚的表就说明主从复制配置成功了。