听说Mysql你很豪横?-------------MySQL5.7主从同步
生产环境中,服务器不可能只有一台,而多台服务器的存在必然要用到主从复制同步。
一、主从复制原因与解决
1、原因
在企业网站中,后端MySQL数据库只有一台时,会有以下问题: 遇到单点故障,服务不可用 无法处理大量的并发数据请求 数据丢失将会造成很大损失
2、解决办法
增加MySQL数据库服务器,对数据进行备份,形成主备 确保主备MySQL数据库服务器数据是一样的 主服务器宕机了,备份服务器继续工作,数据有保障 MySQL主从复制与读写分离是密切相关的
3、更高级的解决方案
通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力
Amoeba:是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,外号变形虫
读取请求发送给从服务器时,采用轮询调度算法
主服务器挂掉,我们会采用MHA解决(此实验用不到)
此实验涉及到的账号权限
主从同步账号 节点服务器开放调度账号 Amoeba代理账号
4、MySQL主从复制的类型
基于语句的复制(默认) 在主服务器上执行的语句,从服务器执行同样的语句 基于行的复制 把改变的内容复制到从服务器 混合类型的复制 一旦发现基于语句无法精确复制时,就会采用基于行的复制
5、主从复制的工作过程
当你更新数据库数据的时候 ,首先 将日志文件写入二进制日志文件,然后通过io线程,将binarylog日志文件同步到中继日志,然后sql线程读取中继线程 将数据复制到从服务器这里来 需要注意的点 权限,要让slave服务器有权限复制 ,不能让所有人都可以复制,所以需要创建一个账号来解决。
二、主从复制实验实操
1、环境
三台centos7服务器 同一安装mysql5.7版本的 一台做master 两台做slave 主 :192.168.110.134 server-id 10 从 :192.168.110.135 server-id 30 从 :192.168.110.136 server-id 20
2、实验过程
(1)手动编译安装mysql5.7版本
具体编译可参展小编之前的博客
(2)配置mysql主服务器
修改/etc/my.cnf配置文件,增加服务器id,配置二进制日志选项
[root@master ~]# vim /etc/my.cnf
...省略内容
'//mysqld字段下面修改'
server-id = 10 '//修改为10'
log-bin=master-bin '//设置二进制日志名'
log-slave-updates=true '//从服务器更新二进制日志'
[root@master ~]# systemctl restart mysqld.service '//重启mysql服务'
(3)登陆mysql服务,授权所有从服务器复制二进制日志的权限
[root@master ~]# mysql -u root -p
Enter password:
'//192.168.110.0段的从服务器拥有复制权限,可以使用myslave身份123456密码复制所有的库和表'
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.110.%' IDENTIFIED BY 'Abc123';
mysql> flush privileges; '//刷新'
Query OK, 0 rows affected (0.00 sec)
mysql> show master status; '//查看位置id'
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 603 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
(4)配置两台从服务器
修改/etc/my.cnf配置文件,增加服务器id,配置二进制日志选项
[root@slave1 ~]# vim /etc/my.cnf
...省略内容
'//mysqld字段下面修改'
server-id = 20 '//修改为20,另一台从服务器的id设为30,三个id不可相同'
relay-log=relay-log-bin '//设置二进制日志名'
relay-log-index=slave-relay-bin.index '//从服务器更新二进制日志'
[root@master ~]# systemctl restart mysqld.service '//重启mysql服务'
登陆mysql服务,配置组从同步
[root@slave1 ~]# mysql -uroot -p
Enter password:
mysql> change master to master_host='192.168.110.134',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=603;
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave statusG;
...省略内容
Slave_IO_Running: Yes '//发现IO是正常的'
Slave_SQL_Running: Yes '//SQL是正常的'
...省略内容
这里克隆的虚拟机有坑,具体解决方案可查看我排障集锦
3、实验验证
[root@master ~]# mysql -uroot -p
Enter password:
mysql> create database schoo;
Query OK, 1 row affected (0.00 sec)
两台从服务器查看是否同步 mysql> show databases; ±-------------------+ | Database | ±-------------------+ | information_schema | | school | ‘//成功同步’ | mysql | | performance_schema | | sys | ±-------------------+ 5 rows in set (0.00 sec)
- 3秒钟,用python破解加密PDF|附工具地址
- [译]Laravel 5.0 之云存储驱动
- [译]Laravel 5.0 之自定义错误页面
- 使用Google的Quickdraw创建MNIST样式数据集!
- CentOS 7 开启 BBR 加速
- 开源项目Minio:提供非结构化数据储存服务
- [译]Laravel 5.0 之事件自动生成
- [译]Laravel 5.0 之 Eloquent 属性转换
- [译]Laravel 5.0 之事件及处理程序
- 自相关与偏自相关的简单介绍
- [译]Laravel 5.0 之命令及处理程序
- Deep Photo Styletransfer的一种纯Tensorflow实现,教你如何转换图片风格
- 如何提前体验 Laravel 5.5
- Laravel 4 小技巧两则
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- NFS+NIS+Autofs 实现用户的集中化管理
- [docker]Tomcat安装及配置访问权限
- Nginx+Keepalived 保障HA高可用
- Hash一致性闭环算法 - ( 适用于Redis扩容、Nginx多级缓存 等等 )
- MySQl 事务测试
- 百万数据,SQL数据分流查询
- Linux 安装Apr - 提高Tomcat 的可伸缩性和性能
- Linux下MySQL的彻底卸载
- Excel生成导入SQL语句,快速创建批量 insert/update/delete
- MySQL 执行计划详解
- MySQL 5.7详细安装步骤
- win10必备效率预览神器-Quick look
- 史上最全-Nginx和Tengine安装部署
- Jenkins+Ansible 实现自动化运维 DevOps
- FFmpeg 内容介绍 音视频解码和播放