Mysql主从配置
配置信息
Mysql主服务器:
版本:mysql Ver 14.14 Distrib 5.7.20
IP:192.168.168.226
PORT:3306
Mysql从服务器
版本:mysql Ver 14.14 Distrib 5.7.20
IP:192.168.168.227
PORT:3306
服务器:
CentOS 7
搭建步骤
-
登录主服务器,执行如下命令:
mysql -u root -p 提示密码安全策略问题: set global validate_password_policy=0; grant replication slave on *.* TO 'backup'@'192.168.168.227' identified by 'Likang123qwe'; flush privileges;
-
编辑主服务器的数据库配置文件信息my.cnf
vi /etc/my.cnf 添加如下信息: server-id=226 log_bin=/var/log/mysql/mysql-bin.log read-only=0 binlog-do-db=test //test库记录二进制文件 binlog-ignore-db=mysql //mysql库不记录二进制文件
-
登录从服务器,执行如下命令:
编辑从服务器的数据库配置文件信息:my.cnf vi /etc/my.cnf server-id=227 log_bin=/var/log/mysql/mysql-bin.log //从服务器不用做其他设置
-
重启主服务器
service mysqld restart 提示如下信息:
修改: 进入/var/log/文件夹下,新建文件mysql,进入mysql目录,新建文件mysql-bin.log文件,并赋予读写权限(mysql和mysql-bin.log)
mysql目录权限设置为 777
需要用到 winSCP 软件设置权限,建立空文件,不会显示,
用下面命令建立mysql-bin.log文件
cd /var/log/mysql
touch mysql-bin.log
mysql-bin.log 权限为 777
从服务器也同样设置 mysql / mysql-bin.log文件
设置完记得重启 service mysqld restart
-
登录主服务器,查看master状态
show master status\G;
-
登录从服务器,设置主从关系
change master to master_host='192.168.168.226',master_user='backup',master_password='Likang123qwe',master_log_file='mysql-bin.000001',master_log_pos=154;
-
查看从服务器的主从关系状态
show slave status\G;
-
主服务器下执行
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
-
从服务器下执行
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
-
如果主从库中不存在test库,则需要重新建库,然后重启,重新构建主从关系
-
从服务器下
Slave_IO_Running: Yes Slave_SQL_Running: Yes
如果都为yes,则主从搭建成功
红色框 Slave_IO_Running: Yes / Connecting
Slave_SQL_Running: Yes
注意:设置前 先关闭服务器 再设置, 设置完毕后,开启服务器
至此,mysql主从配置成功
mysql主从知识点
主从形式
mysql主从复制:
一主一从
主主复制
一主多从---扩展系统读取的性能,因为读是在从库读取的;
多主一从---5.7开始支持
联级复制---
用途及条件
-
mysql主从复制用途
实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务(备可用性和容错行) 负载平衡
-
主从部署必要条件:
主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库
主从原理
- 从库生成两个线程,一个I/O线程,一个SQL线程;
- I/O线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
- 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
- SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,最终数据一致;