赞
踩
个人理解,mysql主从配置主要是为了读写分离,只在主库写数据,从库向用户提供读数据的服务。
准备:
两台装好mysql5.7的服务器(本文为虚拟机测试,192.168.xx.131和192.168.xx.132)
其中192.168.xx.131设为主库,192.168.xx.132为从库。
一、检查防火墙是否关闭,或者是否开放3306端口
systemctl status firewalld.service
没关闭就把防火墙关闭
systemctl stop firewalld.service
二、修改mysql配置文件my.cnf
先修改 主库 的配置文件
vim /etc/my.cnf
将下列配置项粘贴到my.cnf 文件中
symbolic-links=0
server_id = 1 //主库从库不可相同,此id为唯一
log-bin = mysql-bin //开启binlog
binlog-format = ROW
auto-increment-increment=2
auto-increment-offset=1
#binlog-do-db=test //已注释,代表只同步的数据库
binlog-ignore-db=mysql //不同步的数据库,若多个数据库不同步,可多写几行
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
保存后配置 从库 的my.cnf,如下
symbolic-links=0
server_id = 2 //与主库不能一致
log-bin = mysql-bin
binlog-format = ROW
auto-increment-increment=2
auto-increment-offset=2
binlog-do-db=test //同步测试库,可修改成你想同步的数据库
三、修改好后,创建测试用到的测试库test,主库和从库都要建
create database test;
建一张测试表
CREATE TABLE `dept` (
`deptno` int(2) NOT NULL,
`dname` varchar(14) DEFAULT NULL,
`loc` varchar(13) DEFAULT NULL,
PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在“主库”所在的服务器上创建一个可以在“从库”服务器上登录“主库”的用户
CREATE USER 'slave'@'192.168.xx.132' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.xx.132';
可以查看一下用户表是否创建成功
select user,host from mysql.user;
创建成功后记得给该用户赋权,远程登录,并刷新权限
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'192.168.xx.132' WITH GRANT OPTION;
flush privileges;
退出mysql,重启mysql服务,让它们读取修改后my.cnf。
重启后,可以登录mysql查看各自的service_id是否与配置文件一致
SHOW VARIABLES LIKE 'server_id'
主库为1
从库为2
确认无误后准备同步配置
四、同步配置
在“主库”服务器中查看binlog位置
SHOW MASTER STATUS;
在“从库”的服务器上输入以下命令,请保证以下命令为一行,没有换行符
MASTER_HOST为主库的IP
MASTER_HOST为刚刚创建的用户
MASTER_HOST为刚刚创建的用户密码
MASTER_LOG_FILE与上图的File对应
MASTER_LOG_POS与上图的Position对应
CHANGE MASTER TO
MASTER_HOST='192.168.xx.131',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=1085 \g;
在“从库”开启主从
start slave;
查看主从状态
SHOW SLAVE STATUS \G;
注意,若Slave_IO_Running为connecting,请检查自己的防火墙、用户登录权限以及配置文件service_id是否重复
可以在“从库”的服务器上测试是否能登陆主库
mysql -uslave -p123456 -htest1
五、实例测试
先在主库中插入一条数据
insert into dept values(4,"d","dd");
查看表
再到“从库”中查看dept表
完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。