Mysql 数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据文件,而是通过binlog日志复制到需要同步的服务器上.

一 主从复制的原理实现

原理图解说:

 数据库更改

 生成数据二进制日志

 从库一直开启数据库线程

 使用数据库线程读取主库的日志文件

 把主库的数据日志写入中继日志文件

 从库一直开启sql 线程读取中继日志

 从库把日志读取到从库数据中

二 mysql 权限基本操作

注意:分配权限,必须是root,且主机不能是''%''

mysql
1.精通mysql,增删改查(CURD),视图、优化SQL、
2.也是基本的SQL学习,主从复制架构 1.启动mysql
systemctl start mariadb 2.linux客户端连接自己
mysql -uroot -p -h 127.0.0.1 3.远程链接mysql服务端
mysql -uroot -p -h 192.168.11.37 4.修改mysql密码
MariaDB [(none)]> set password = PASSWORD('redhat123'); 5.创建mysql用户
create user yuanqing@'%' identified by 'yq666'; 6.查询mysql库中的用户信息
use mysql;
select host,user,password from user; 7.授权语句
给袁清这个用户,授予创建数据库的权限 mysql使用grant命令对账户进行授权,grant命令常见格式如下 grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名   对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名    对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名    对所有库和所有表授权所有权限 #授予袁清创建的权限,对于所有的库表生效
grant create on *.* to yuanqing@"%" identified by 'yq666';
#授予袁清用户,只有创建mymysql数据库的权限
grant create on mymysql.* to yuanqing@"%" identified by 'yq666'; #授予用户最大的权限,所有的权限
grant all privileges on *.* to username@'%' identified by 'password'; 8.移除权限
MariaDB [(none)]> revoke all privileges on *.* from yuanqing@"%"; 9.数据库的备份与恢复
#备份
mysqldump -u root -p --all-databases > /tmp/db.sql
#数据导入,方式有2种
source /tmp/db.sql; 第二种
mysql -uroot -p < /tmp/db.sql 第三种
navicat 第四种,如果你数据量特别大的话,使用第三方工具
xtrabackup

三 master主库配置

1.在matser主库上的操作,开启主库功能
systemctl stop mariadb
编辑/etc/my.cnf
写入如下信息
[mysqld]
server-id=10
log-bin=qishi-
logbin
systemctl start mariadb 2.在主库创建用户,用于同步数据
create user yuanqing@'%' identified by 'yq666'; 授予普通用户,slave的身份
grant replication slave on *.* to 'yuanqing'@'%'; 3.锁定数据库的库表,禁止写入
这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。
解锁语句是:UNLOCK TABLES;
flush table with read lock; 记录下主库的状态,记录下,日志文件的名字,和位置
show master status; 4.导出主库的数据(另开一个ssh窗口,到出数据库)
mysqldump -u root -p --all-databases > /tmp/db.sql 5.远程传输主库的数据,给从库,进行导入
scp /tmp/db.sql root@192.168.11.167:/tmp/ 6.解锁主库的锁,写入数据,查看从库是否同步
unlock tables;

配置关键步骤截图

主库状态信息截图

四 slave 从库配置

1.在从库的 /etc/my.cnf中添加参数,添加只读参数
[mysqld]
server-id=3
read-only=true #只读
2.重启数据库
systemctl restart mariadb
在从库中导入主库的数据
在从库机器上192.168.11.167 ,安装mariadb,导入数据
mysql -uroot -p < /tmp/db.sql 3.一条语句,开启主从之间的复制关系
mysql > change master to master_host='192.168.11.37',
master_user='yuanqing',
master_password='yq666',
master_log_file='qishi-logbin.000001',
master_log_pos=759;
4.开启slave同步功能
start slave; 5.检查slave机器的主从是否正确 show slave status\G 查看主从同步是否正确 确保如下两条参数,是yes,即主从复制正确
Relay_Master_Log_File: qishi-logbin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 6.此时mariadb数据库,请退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
6.此时mariadb数据库,请退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
6.此时mariadb数据库,请退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
6.此时mariadb数据库,请退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
6.此时mariadb数据库,请退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果 7. mysql -uyuanqing -p 8.此时在主库写入数据,查看从库是否正确同步 9.从库无法写入数据,即为正常 10.完成主从同步,读写分离实验!!!!

核心步骤截图

开启主从配置关键语句

主从同步开启成功的标记,两个yes

MYSQL 主从复制,读写分离(8)的更多相关文章

  1. mysql主从复制-读写分离

    mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...

  2. mysql主从复制-读写分离-原理

    Mysql主从复制和读写分离 在实际的生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是不能满足实际需求的.因此,一般通过主从复制 ...

  3. MySQL 主从复制&读写分离 简介

    1. 读写分离&读写分离 简介 主从同步延迟 分配机制 解决单点故障 总结 2. 主从复制&读写分离 搭建 搭建主从复制(双主) 搭建读写分离 1. 读写分离&读写分离 简介 ...

  4. Mycat+MySql 主从复制-读写分离 看这一篇就够了

    ​ 通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离. 1.一主一从 1.在node01上修改/etc/my.cnf的文件 ...

  5. mysql主从复制+读写分离 菜鸟入门

    MYsql主从复制 1.mysql主从复制原理: Master将数据变化记录到二进制日志中[binary log] Slave将master的二进制日志[binary log]拷贝到自己的中继日志[r ...

  6. Mycat实现mysql主从复制(读写分离)

    数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...

  7. Mysql主从复制读写分离

    一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来 ...

  8. MySQL主从复制&读写分离&分库分表

    MySQL主从复制 MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据 首先我们说说主从复制的原理,这个是必须要理解的玩意儿: 理解: MySQL之间的数据 ...

  9. MySQL主从复制读写分离如何提高从库性能-实战

    在做主从读写分离时候,需要注意主从的一些不同参数设置,来提高从库的性能,提高应用读取数据的速度,这样做很有必要的. 做读写分离复制主从参数不同设置如下(需要根据自己应用实际情况来设置): parmet ...

随机推荐

  1. restTemplate设置访问超时

    (一)RestTemplate 客户端 1.RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar 2.客户端代码: /** * ...

  2. SSM-SpringMVC-26:SpringMVC异常骇级之自定义异常注解版

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 注解的方法实现异常解析,话不多说,直接搞起,和以前一样的习惯,和上篇博客一样的代码放后面,不一样的在前面 案 ...

  3. linux或Mac中./与/

      mac终端命令和linux中命令是一致的,在执行可执行xxx.sh文件时,需要进入xxx.sh文件所在的目录,然后输入./xxx.sh才可以执行成功 1.为什么需要添加./   因为linux/u ...

  4. React,Node.js,Vue,Webkit技术内幕

  5. web优化(一)

    今天读完了<高性能网站建设进阶指南>,记得博客园的某位前辈说,关于前端方面的书,带指南两个字的一般都是比较牛逼的,上一本看到的好书是<javascript权威指南>是淘宝前段团 ...

  6. 详解MUI顶部选项卡(tab-top-webview-main)的用法

    最近用MUI做手机app的时候,遇到了一点问题.然后就对这个tab-top-webview-main的源码做了点研究,接下来我将和大家详解一下 tab-top-webview-main的用法和应该注意 ...

  7. MySQL中的replace语句

    一.背景 当使用replace语句更新access_apps表时,原有的mark列.remark列的信息丢失. CREATE TABLE `access_apps` (   `base` varcha ...

  8. 将函数声明为Static的作用

    表示静态函数,它为所有类共有的.调用该函数直接使用类名加上修饰符,如:Windows win;Windows::W_SIZE();而不是:win.W_SIZE();静态函数只能处理静态数据成员,不能处 ...

  9. Windows上安装配置SSH教程(3)——在Windows系统上安装与配置WinSCP

    知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html -------------------- 首先确认客户端已经安装了OpenSSH.安装方 ...

  10. Ubuntu配置tomcat9

    buntu 安装jdk:[链接] Ubuntu安装eclipse:[链接] Ubuntu下安装MySQL与mysql workbench:[链接] Ubuntu配置tomcat9:[链接] Ubunt ...