MySQL主从介绍、配置主从、测试主从同步
6月28日任务
说明:有不少同学不能一次性把实验做成功,这是因为还不熟悉,建议至少做3遍
17.1 MySQL主从介绍
17.2 准备工作
17.3 配置主
17.4 配置从
17.5 测试主从同步
有的同学,遇到主从不能正常同步,提示uuid相同的错误。这是因为克隆机器导致。
https://www.2cto.com/database/201412/364479.html
17.1 MySQL主从介绍
MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大致有3个步骤
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
3)从根据relaylog里面的sql语句按顺序执行
主上有一个log dump线程,用来和从的I/O线程传递binlog
从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地。
MySQL主从原理图
使用场景:
第一种、作为单独数据的备份,因为数据很重要,在主上写一份数据,需要单独在存一份数据,只是针对一台主进行读写操作,而从备份的数据就单纯来备份备用着,假如主的主机出现硬件损坏突然宕机,随时可以把从机器启动起来,给客户端提供服务。
第二种、同样也是作为备份,但不仅是备份,web客户端还要在从上面读数据,正常情况下要写到主上,读也是在主上面读,如果主的压力比较大,现在就想在从上面做一个读,那么web服务器就可以在从上面读数据,但是不可以写。(用作存库作为读,减轻主的压力)
17.2 准备工作
把limingsong-001作为主机器,limingsong-002作为从机器,同时把mysql进程启动起来。
启动主上的mysql进程
启动从上的mysql进程
:: [ERROR] Plugin 'InnoDB' init function returned error.
:: [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 查看错误日志发现问题,删除mysql目录下的ib_logfile0和ib_logfile1两个文件,就可以解决问题了。
17.3 配置主
安装并启动好mysql后,修改my.cnf,增加server-id=128和log_bin=jimmy1
修改完配置文件后需要重启mysqld服务
可以查看到在mysql目录下多了2个文件,这2个文件甚至是更多的文件非常重要,是实现主从的根本,如果没这2个文件的话,主从也没办法完成。
备份mysql库并恢复成limingsong数据库作为测试使用
创建用作同步数据的用户
备份mysql2和test数据库,等会需要把tmp下面所有的sql文件拷贝到从上去。
17.4 配置从
编辑my.cnf配置文件,增加server-id=129,要求和主不一样。
[root@jimmylinux- mysql]# vim /etc/my.cnf 增加 server-id=
重启mysql服务
把主上的sql文件拷贝过来并做一个恢复
[root@jimmylinux- mysql]# msyql -uroot
-bash: msyql: 未找到命令 设置alias即可使用 [root@jimmylinux- mysql]# alias 'mysql=/usr/local/mysql/bin/mysql'
[root@jimmylinux- mysql]# alias 'mysqldump=/usr/local/mysql/bin/mysqldump'
登录mysql创建4个数据库
恢复数据库
登录mysql开始实行主从
如果出现Slave_IO_Running: Connecting 的情况,需要把主机器上的firewalld关闭,然后在执行同步即可。
[root@jimmylinux- mysql]# systemctl stop firewalld
这个时候主从就已经建立起来了,记得要把主机器上面解锁恢复写数据。
[root@jimmylinux- mysql]# mysql -uroot -pabcd1234 登录主机器的mysql mysql> unlock tables; 解锁恢复写数据
Query OK, rows affected (0.00 sec)
到此整个主从就已经搭建完成了
17.5 测试主从同步
测试主从同步之前先了解下主、从服务器上面的配置参数
配置文件都是my.cnf
主服务器上
binlog-do-db= //仅同步指定的库
binlog-ignore-db= //忽略指定库 从服务器上
replicate_do_db=
replicate_ignore_db=
replicate_do_table=
replicate_ignore_table=
replicate_wild_do_table= //如jimmy.%, 支持通配符%
replicate_wild_ignore_table=
开始测试主、从同步
查看主机器的数据库信息
mysql> use mysql2
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql2 |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
rows in set (0.00 sec) mysql> select count(*) user;
+------+
| user |
+------+
| |
+------+
row in set (0.00 sec)
查看从机器的数据库信息
mysql> use mysql2
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql2 |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
rows in set (0.00 sec) mysql> select count(*) user;
+------+
| user |
+------+
| |
+------+
row in set (0.00 sec)
现在要在主上把这个表做一个清空操作
从上显示为0
再测试一个删除表的操作
mysql> drop table user; 主上删除user表
Query OK, rows affected (0.01 sec) mysql> select * from user; 从上的表也同样没有了,所以会报错不存在。
ERROR (42S02): Table 'mysql2.user' doesn't exist
MySQL主从介绍、配置主从、测试主从同步的更多相关文章
- MySQL安装、配置、测试
MySQL安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.MySQL安装配置 4.Java访问MySQL测试 5.注事事项 6.相关博文 >>看不清的图片 ...
- MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
配置主: • 安装mysql • 修改my.cnf,增加server-id=130和log_bin=xiaobo1 • 添加环境变量 Vim /root/.bash_profile PATH=$PAT ...
- Mysql主从复制的配置(双机互为主从)
目的: 让两台mysql服务器可以互为主从提供同步服务. 优点: 1. mysql的主从复制的主要优点是同步"备份", 在从机上的数据库就相当于一个(基本实时)备份库. 2. 在主 ...
- Mysql主从安装配置
Mysql主从安装配置 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置 ...
- Eclipse For JavaEE安装、配置、测试
Eclipse For JavaEE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试(确保JDK已正确安装) 5.JavaEE开发 ...
- Myeclipse安装、配置、测试
Myeclipse安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与激活 4.JavaSE开发测试(确保JDK已正确安装) 5.JavaEE开发测试(确保服务器和 ...
- Navicat(数据库可视化操作软件)安装、配置、测试
Navicat(数据库可视化操作软件)安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.Navicat安装.激活与配置 4.简单测试 5.注意事项 6.相关博文 > ...
- Linux centosVMware MySQL主从介绍、准备工作、配置主、配置从、测试主从同步
一.MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binl ...
- MySQL主从备份配置实例
转载自:https://www.cnblogs.com/ahaii/p/6307648.html MySQL主从备份配置实例 场景: 1.主服务器192.168.0.225.从服务器192.168.0 ...
随机推荐
- JNI技术实现--Java调C/C++
废话不多说,首先我们来看Java调用C/C++步骤: 1.编写Java代码,在代码中使用native关键字标明该方法是调用本地库,不需要实现. 2.使用javah -jni 命令,生成对应的头文件,此 ...
- 优化 Git Commit Message
目前很多项目都是通过 Git 进行管理的,Git 每次提交代码的过程中 提交说明 commit message 是必须的.但仅仅必须是不够的,好的提交说明可以帮助我们提高项目的整体质量. 作用与优点 ...
- CSPS模拟 72
状态..找不回来了.. T2 简单的期望 考试的时候忘考虑一个事,就是连续多位进位的情况 考试的时候打出$n^2$复杂度dp还没引起怀疑真是不应该. T3 简单的操作 最后一刻才想到图不联通,已经想不 ...
- 如何在Vue项目中给路由跳转加上进度条
1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...
- python学习之【第四篇】:Python中的列表及其所具有的方法
1.前言 列表是Python中最常用的数据类型之一,是以[ ]括起来,每个元素以逗号隔开,而且里面可以存放各种数据类型,而且列表是有序的,有索引值,可切片,方便取值. 2.创建列表 li = ['he ...
- Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
不知道一些同学有没有这种疑问,为什么Mybtis中要配置dataSource,Spring的事务中也要配置dataSource?那么Mybatis和Spring事务中用的Connection是同一个吗 ...
- 浅谈OI中的底层优化!
众所周知,OI中其实就是算法竞赛,所以时间复杂度非常重要,一个是否优秀的算法或许就决定了人生,而在大多数情况下,我们想出的算法或许并不那么尽如人意,所以这时候就需要一中神奇的的东西,就是底层优化: 其 ...
- Java 博客系统 Tale
Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...
- php debug_backtrace方法跟踪代码调用
php debug_backtrace方法跟踪代码调用<pre>function string 当前的函数名,参见: __FUNCTION__.line integer 当前的行号.参见: ...
- ADO.NET学习心得《一》
大家好,我是代号六零一,很高兴又开始重启博客了,为了更好的加深自己的记忆和复习,今天开始坚持写写心得体会,刚开始学习ADO.NET的时候也是一脸懵逼的,代码只有动手敲打才会知道其实并不难,只要多敲几遍 ...