MySQL主从复制和读写分离实现(上)
了解主从复制原理
一,前期准备
1,VM虚拟机 (安装可参考:https://www.cnblogs.com/yoyoblogs/p/10942257.html,https://blog.csdn.net/tsundere_x/article/details/104263100)
2,安装centos7(镜像下载参考:https://pan.baidu.com/s/1XIf9lAxarLtVHHUqaE1LKQ 提取码:wfxe,如失效,可自行下载其他)
3,ftp 连接工具(也可在虚拟机机终端中操作,就是麻烦一些)
4,准备两台服务器 ,参照1中克隆步骤(我的示例服务器是 127(主) 128(从) )
5,下载对应的mysql安装文件(我示例装的是5.7.29版本.下载地址:https://dev.mysql.com/downloads/mysql/)
二:环境安装操作
1, 1,2步骤顺利完成安装,安装好vmware并在其下安装好centos7后,我尝试ssh端连接不上.ping centos 的IP地址,出现如下错误:
可参考:https://blog.csdn.net/A_jungle/article/details/80285147 进行处理,没有此错误,自动跳过此步骤
2,查看是否安装mysql : rpm -qa | grep -i mysql
接下来在服务器中查找是否有相关的mysql包文件 :find / -name mysql ,为了不影响后续安装mysql的操作 将查询出来的文件删除,三个文件可同时删除,记住要留空格额.在运行find / -name mysql查看是否有相关的mysql包文件.另外一台服务器同理操作.
3,接下来将下载好的mysql包解压上传到服务器(另外一台服务器同理操作)
4,接下来进行 mysql 服务端和客户端的安装(另外一台服务器同理操作)
安装服务端: rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm --force --nodeps
安装客户端:rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm --force --nodeps
5,安装成功以后进行连接数据库 mysql -uroot -p 这个时候肯定是不知道密码的,点击enter进行下一步是会有一个报错的.接下来我们可以对/etc/my.cnf进行编辑跳过授权重置mysql密码,skip-grant-tables ##追加此行,跳过权限表.保存文件:wq!.重启mysql 服务: service mysqld restart.可不修改密码直接进行下一步操作.(另外一台服务器同理操作),实际应用一定要设置密码保证安全额.
接下来修改密码参考 https://blog.csdn.net/hdyebd/article/details/89153934;最后如果还是无法连接报错:ERROR 1820 (HY000): Unknown error 1820 的话进行如下操作:
需要修改两个全局参数:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set password=password("mysql");
Query OK, 0 rows affected, 1 warning (0.00 sec)
.三:主从服务器配置
1,为了主从复制,创建数据库:create database demo;
2,编辑主服务器,修改配置文件: vi /etc/my.cnf
添加如下配置
#日志文件的名字(可自定义为自己的)
log_bin=master-a-bin
#日志文件的格式
binlog-format=ROW
#服务器的id 一定要是唯一的值
server-id=1
对应需要实现主从复制的数据库(根据自己的数据库进行编辑)
binlog_do_db=demo
3,配置完之后登陆主服务器数据库给从服务器授权:grant replication slave on *.* to 'root'@'192.168.68.%' identified by 'root';然后刷新权限: flush PRIVILEGES;
4,编辑从服务器
修改配置文件: vi /etc/my.cnf
添加如下配置
#日志文件的名字(可自定义为自己的)
log_bin=master-a-bin
#日志文件的格式
binlog-format=ROW
#服务器的id 一定要是唯一的值
server-id=2
保存重启主从服务器 : service mysqld restart
5,验证主从复制是否成功
进入mysql服务器,查看主服务器的状态:show master status;
6,登陆从服务器并且设置主从复制的日志和偏移量:
change master to master_host='192.168.68.127',master_port=3306,master_use
r='root',master_password='root',master_log_file='master-a-bin.000001',master_log
_pos=154;
7,启动slave的数据同步:start slave;
查看slave的状态:show slave status\G;
使用数据库连接工具测试连接是否成功:
我这里是可以通过数据库连接工具连接成功的,如果有连接不成功报错的:以下三点原因进行排查
1,防火墙 2,3306端口未开放 3,未授权
无论能不能连接成功都要进行授权操作,在主服务器进行将权限授权给客户端:grant replication slave on *.* to 'root'@'%' identified by 'root' with grant option;这时候会报一个1819的错,这个报错的主要原因是数据库对于密码的要求.我这里密码root是纯字母.不符合数据库的密码要求.可以通过修改配置文件修改密码验证的规则:
set global validate_password_length=1;
set global validate_password_policy=0;
这样的话纯字母密码就可以通过密码验证了.再次运行grant replication slave on *.* to 'root'@'%' identified by 'root' with grant option;就运行ok了
然后在主服务器上demo数据库中新建一个表,我的是Student表,建表自行百度
登陆从服务器查看是否进行主从复制了 ,Student表在从服务器中也存在了.
往主服务器Student中插入几条数据在从服务器中也可以同步复制过去,完美.
到此主从复制就已经结束了.希望能帮到大家.读写分离的实现是一定基于主从复制的,下个文章写读写分离.
MySQL主从复制和读写分离实现(上)相关推荐
- mysql主从复制、读写分离到数据库水平拆分及库表散列
文章转载自http://blog.csdn.net/sd4422739/article/details/49514981 web项目最原始的情况是一台服务器只能连接一个mysql服务器(c3p0只能配 ...
- MySQL主从复制与读写分离配置及实操
MySQL主从复制与读写分离 一.MySQL主从复制 1.复制类型 2.工作过程 二.MySQL读写分离 1.定义 2.存在意义 3.作用时间 4.原理 5.类型 基于程序代码内部实现 基于中间代理层 ...
- 【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)
目录 前言 一. 介绍 二. 主从复制 1. 原理 2. 克隆从机 3. 克隆从机大坑 4. 远程登陆 5. 主机配置 6. 从机配置 7. 主机:建立账户并授权 8. 从机:配置需要复制的主机 9. ...
- 如何进行MySQL主从复制与读写分离的配置
MySQL主从复制与读写分离 什么是读写分离? 为什么要读写分离呢? 什么时候要读写分离? 主从复制与读写分离 mysq支持的复制类型 主从复制的工作过程 MySQL主从复制延迟 MySQL主从复制实 ...
- 【数据库七】搭建MySQL主从复制和读写分离详解
详解搭建搭建MySQL主从复制和读写分离 1.案例实施:搭建MySQL主从复制 1.1 主节点数据库(CentOS 7-5) 1.2 从节点数据库(CentOS 7-6) 1.3 从节点数据库(Cen ...
- 运维之道 | Mysql主从复制+mycat读写分离
运维之道 | Mysql主从复制 + Mycat读写分离 1.什么是读写分离 读写分离,基本的原理是让主数据库处理事务性增.删.改操作(INSERT.UPDATE.DROP),而从数据库处理SELEC ...
- mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
一.主服务器(master)配置 1.修改MySQL配置文件my.ini [mysqld] log-bin=mysql-bin log-bin-index=mysql-bin.index server ...
- e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)
主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...
- mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离(双机热备)
主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...
最新文章
- Nature综述:古菌的多样性、生态功能和进化史
- Go 语言编程 — 变量与常量
- 7、使用CallableStatement接口调用存储过程
- formal method online checking tool
- 从FM推演各深度学习CTR预估模型
- linux查看镜像的详细信息,docker inspect命令查看镜像详细信息
- Repeater片段
- Objective-c 程序结构
- 前端学习(1914)vue之电商管理系统电商系统之创建right分支并把代码推到码云
- 现代软件工程 结对/团队作业 - 汉字的 2048 + 俄罗斯方块
- android style边界显示兼容问题,android – IDE“无法解析@ style/Theme.Appcompat”时使用v7兼容性支持主题...
- 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
- 把ICDAR2019-LSVT原始数据集转为REC任务识别数据
- 至强E5系列CPU后面的数字含义
- 平面排版时,教你突出中文美感的几种方法
- [一本通]题解 1031
- 搭建STM32开发环境
- Unity 2D 打地鼠游戏制作过程总结
- scheduled java 失败_Unexpected error occurred in scheduled task.
- 来与大家分享一些我们珍藏的、有力量的语句