环境准备
服务器系统 | Centos7.5 |
---|---|
内存 | 1G |
CPU | 2核 |
IP地址 | 192.168.46.131 |
服务 | MySQL-Master(主) |
服务器系统 | Centos7.5 |
---|---|
内存 | 1G |
CPU | 2核 |
IP地址 | 192.168.46.181 |
服务 | MySQL-Slave(从) |
安装MySQL服务
yum -y install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql-server mysql
131主机上操作
编辑主库的配置文件
vim /etc/my.cnf
重启mysql
service mysql restart
查看服务状态
service mysql status
mysql
show master status;
181主机上操作
编辑从库的配置文件
vim /etc/my.cnf
service mysql restart
mysql
131主机上操作
mysql
登陆主库,执行授权操作
grant replication slave on *.* to 'slave'@'192.168.46.181' identified by '123';
flush privileges;
181主机上操作
mysql
stop slave;
change master to
master_host='192.168.46.131',
master_user='slave',
master_password='123',
master_log_file='mysql-bin.000002',
master_log_pos=411;
start slave;
show slave status \G;
查看到IO和SQL线程都为Yes说明已经成功,下面可以在Master主机上创建一个数据库测试,slave是否同步;
show databases;
目前来看数据还是一样的,如果不一样,在做主从之前一定要让两个库保持一致。
create database wg;
131主机上操作
use wg;
create table szm(ID int);
insert into szm values(1);
181从主机库上查询
select * from wg.szm;
可以看到数据已经从主库上同步过来了。
create database aaronszm;
这么一来就会冲突,会报错,这个操作会写入二进制日志,写完之后,中继日志会同步,同步完之后会执行,就会报错。
报错原因很明显了,数据库已经存在了。
从库上查看
show slave status \G;
IO同步过来是没有问题的,中继和二进制没有问题,有问题的是SQL读取中继创建的时候发现执行不了,因为数据库已经存在了。
所以在做主从架构的时候要注意从库上不要写操作。
跳过本次错误事件,跳过一次同步的错误事件
set global sql_slave_skip_counter=1;
stop slave;
start slave;
可以看到IO和SQL线程又变为Yes了
show slave status \G;
或者再stop slave,再次重新change一下,再次change的时候就不需要host了和password也不用指定,重新指定一下position就可以了。