说明
两台linux服务器进行主从实验
mysql:mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
主(写):192.168.198.221
从(读):192.168.198.222
需要mysql初始环境一样
原理:
- 主服务器建立2进制日志,每产生语句或磁盘变化,写进日志
- 从服务器监听主服务器建立relaylog(中继日志)
- 主服务器建立授权复制账号,从服务器利用复制账号来监听主服务器的日志notice:
所有的mysql服务器都有1个独一无二的id server_id
主从设置
第一步,编辑my.cnf
vi /etc/my.cnf
主master:
log-bin=mysql-bin #写二进制日志
binlog-format=mixed
server-id=221 #同一局域网内一般为ip的后3位
从slave:
relay-log=mysql-relay
server-id=222 #同一局域网内一般为ip的后3位
第二步:重启 主,从mysql服务
sudo service mysqld restart #重启
第三步:
主: 创建账号:repl 密码:!QAZ2wsx
mysql -uroot -p #进入mysql
grant replication client,replication slave on *.* to 'repl'@'%' identified by '!QAZ2wsx; #创建账号
show master status; #查看当前master二日志进制状态
从: 抄主服务器日志,主服务器的日志位置,如上图
#进入mysql
mysql -uroot -p
#抄主服务器日志
change master to
master_host='192.168.198.221',
master_user='repl',
master_password='!QAZ2wsx',
master_log_file='mysql-bin.000001',
master_log_pos=457;
show slave status \G #查看从机slave状态
#如果状态不是配置的机器可以重置 重新执行抄主服务器的代码
reset slave #重置
启动slave
start slave; #启动slave
show slave status \G #再次查看从机slave状态
测试
主:插入测试数据
-- 创建数据库--
CREATE DATABASE test;
-- 进入数据库--
use test;
-- 创建表--
CREATE TABLE `test` (
`id` INT NOT NULL,
`test` VARCHAR (255) NULL,
PRIMARY KEY (`id`)
);
-- 插入数据--
INSERT INTO `test`.`test` (`id`, `test`) VALUES ('1', '1');
主:查看数据
SELECT * FROM `test`;
从:查看数据
-- 进入test数据库 --
use test;
-- 查看数据--
SELECT * FROM `test`;