mysql 5.7 安装与主从配置

主从配置介绍

主从配置又叫做Replication、AB复制。是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。默认情况下,复制是异步的, 从站不需要永久连接以接收来自主站的更新。根据配置,可以复制数据库中的所有数据库,所选数据库甚至选定的表。

各种方式

  • 一主一从 (本次主要以该方式配置)
  • 主主复制 --扩展系统读取的性能,因为读是在从库读取的
  • 一主多从
  • 多主一从 – 5.7 开始支持
  • 联级复制

主从复制

优点

  1. 横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可能发生在一个或多个从站上。该模型可以提高写入性能(因为主设备专用于更新),同时显着提高了越来越多的从设备的读取速度。
  2. 数据安全性 - 因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。
  3. 分析 - 可以在主服务器上创建实时数据,而信息的分析可以在从服务器上进行,而不会影响主服务器的性能。
  4. 远程数据分发 - 您可以使用复制为远程站点创建数据的本地副本,而无需永久访问主服务器。

主从复制原理

  1. 主库将更改操作记录到binlog里, 需开启binlog日志
  2. 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog
  3. 从库生成两个线程,一个I/O线程,一个SQL线程
  4. I/O线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中
  5. SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致

准备工作

  • 主从数据库版本最好一致
  • 主从数据库内数据保持一致
  • 从库服务器能连通主库

mysql 5.7 安装

root登录
查看mysql的安装情况

rpm -qa | grep -i mysql

将显示的删除

rpm -e --noscripts 包名

查看之前的mysql目录并删除

find / -name mysql
rm -rf /var/lib/mysql 
...

最后删除 my.cnf 文件

rm -rf /etc/my.cnf

最后再查看是否还有已安装的mysql

rpm -qa | grep -i mysql

无结果就可进行 wget 安装了
用 wget 下载mysql源安装包
安装 yum install 安装包
MySQL 安装
安装mysql

yum install mysql-community-server

MySQL 安装
启动mysql

systemctl start mysqld

查看启动状态

systemctl status mysqld

MySQL 安装
设置为开机启动

systemctl enable mysqld
systemctl daemon-reload

查看密码

grep 'temporary password' /var/log/mysqld.log

MySQL 安装
修改密码

set password for 'root'@'localhost'=password('新密码');

打开3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
查看以开放端口
firewall-cmd --list-ports

准备工作

用VM 克隆当前虚拟机
启动后查看该克隆虚拟机IP
准备工作
发现与被克隆的IP地址一致,修改该虚拟机的IP,上面显示的是ens33

vim /etc/sysconfig/network-scripts/ifcfg-ens33

准备工作
将IPADDR改为 192.168.23.111
重启网卡

/etc/init.d/network restart

查看IP发现已更改为所设置IP
查看二台虚拟机是否都已启动mysql
准备工作
准备工作

配置主从

修改 /etc/my.cnf
添加server-id ,定义binlog的前缀与其他配置

主从配置
重启动mysql

systemctl restart mysqld

连接mysql创建账号 account

grant replication slave on *.* to 'account'@'192.168.23.111' identified by '密码';

更新数据库权限

flush privileges;

查看主服务器状态

show master status\G;

主从配置

配置从服务器

修改my.cnf 文件

主从配置
重启mysql
登录mysql执行同步命令, 设置主服务器ip,同步账号密码,同步位置

change master to master_host='192.168.23.110',master_user='account',master_password='密码',master_loaster_log_file='mysql-bin.000001',master_log_pos=605;

开启同步功能

start slave;

最后查看服务器状态,Slave_IO_Running, Slave_SQL_Running 需都为yes
主从配置

验证是否成功

主服务器创建test库

主从配置

查看从服务器发现也新建了test库

主从配置

新建一张测试表

主从配置

查看从服务器是否也有

主从配置

主服务器创建 user表

主从配置

从服务器忽略了该表

主从配置

取消主从

一般从服务器执行

stop slave;
reset slave;

查看 show slave status\G; 显示的 Slave_IO_Running 和 Slave_SQL_Running为No则成功取消

主服务器数据库已有数据

主服务器先配置好,使用mysqldump创建数据快照

flush tables with read lock;   //锁库
mysqldump -u账号 -p密码 --databases 数据库 > 名称.sql
unlock tables;  //解锁
//从服务器
//source 文件位置
//设置
change master to master_host='192.168.23.110',master_user='account',master_password='密码*',master_loaster_log_file='mysql-bin.000002',master_log_pos=436;
start slave; 	//启动
show slave status\G;  //查看是否成功

主从配置

安装过程中出现的问题

发现是之前安装的mysql没有卸载干净导致冲突,解决方案完全卸载后重新安装即可

出现问题
出现问题

配置好从服务器启动mysql报错
查看日志 cat /var/log/mysqld.log 发现是配置项slave-net-timeout 写错了,改好后重启成功

出现问题

查看从服务器状态发现Slave_IO_Running 为No,正确状态应该为yes

出现问题

查看日志发现是UUID重复,因为是克隆过来的,所以需要修改一下UUID
删除从服务器 /var/lib/mysql/auto.cnf 文件后重启mysql后问题解决

出现问题

master和slave后续改动my.cnf配置文件后重启后发现从服务器 Slave_IO_Running为yes, Slave_SQL_Running 为No,查看日志发现是test数据库已存在. 不能再次创建该数据库.原因是master已经把创建的语句存入二进制日志文件中,slave重置后再次执行该二进制日志文件,也就是二者的初始化数据不一致.解决方法将该数据库删除后重启问题解决.所有数据都为已同步状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值