文档章节

17.1

脑洞老湿_
 脑洞老湿_
发布于 2017/09/01 10:00
字数 1243
阅读 0
收藏 0
点赞 0
评论 0

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主从原理图:

mark
应用环境:备份重要数据、分担主库数据读取压力

17.2准备工作

安装并启动mysql服务;

17.3配置主服务器

主从配置 - 主上操作

安装mysql
修改my.cnf,增加server-id=130和log_bin=aminglinux1
修改完配置文件后,启动或者重启mysqld服务
把mysql库备份并恢复成aming库,作为测试数据
mysqldump -uroot mysql > /tmp/mysql.sql
mysql -uroot -e “create database aming”
mysql -uroot aming < /tmp/mysql.sql
创建用作同步数据的用户
grant replication slave on *.* to 'repl'@slave_ip identified by 'password';
flush tables with read lock;
show master status;

编辑配置文件/etc/my.cnf并重启服务:

[root@localhost ~]# vim /etc/my.cnf
……
server-id=132    //自定义
log_bin=DasonCheng1    //指定log前缀
[root@DasonCheng ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.................. SUCCESS! 

新建一个数据库做准备:

[root@DasonCheng ~]# ls -lt /data/mysql/    //服务重启之后,会生成两个指定前缀的文件;
……
-rw-rw----  1 mysql mysql       20 8月  30 15:52 DasonCheng1.index
-rw-rw----  1 mysql mysql      120 8月  30 15:52 DasonCheng1.000001
……
[root@DasonCheng ~]# cd /data/mysql/
[root@DasonCheng mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql     //备份一个数据库;
[root@DasonCheng mysql]# mysql -uroot -p123456 -e "create database Dasontest"    //新建一个数据库;
[root@DasonCheng mysql]# mysql -uroot -p123456 Dasontest < /tmp/zrlog.sql    //将备份的数据恢复到新建的数据库中;

创建一个用于同步用户:

[root@DasonCheng mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> grant replication slave on *.* to 'repl'@'192.168.8.130' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
#IP为“从”的IP

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.12 sec)
#锁定数据表(目的是暂时使其不能继续写,保持现有状态用于同步)

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| DasonCheng1.000001 |    10844 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#记住file和position(设置主从同步时会使用)
mysql> quit
Bye
[root@DasonCheng mysql]# mysqldump -uroot -p123456 Dason > /tmp/Dason.sql
[root@DasonCheng mysql]# mysqldump -uroot -p123456 Dason2 > /tmp/Dason2.sql

主从配置 - 从上操作

 安装mysql
 查看my.cnf,配置server-id=132,要求和主不一样
 修改完配置文件后,启动或者重启mysqld服务
 把主上aming库同步到从上
 可以先创建aming库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入aming库
 mysql -uroot
 stop slave;
 change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx,
 start slave;
 还要到主上执行 unlock tables

编辑配置文件并重启

[root@localhost ~]# vim /etc/my.cnf
……
server-id=130
……
[root@localhost ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.............................. SUCCESS! 

配置完成后将主中备份的数据发送到从中:

[root@localhost ~]# scp 192.168.8.132:/tmp/*.sql /tmp/
The authenticity of host '192.168.8.132 (192.168.8.132)' can't be established.
ECDSA key fingerprint is 78:22:19:9e:d5:4a:9d:cb:71:54:d7:c0:9a:13:18:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.132' (ECDSA) to the list of known hosts.
root@192.168.8.132's password: 
Dason2.sql                                             100% 1259     1.2KB/s   00:00    
Dason.sql                                              100% 1258     1.2KB/s   00:00    
zrlog.sql                                             100% 9864     9.6KB/s   00:00   

创建库:

[root@localhost ~]# mysql -uroot
Welcome to the MySQL monitor. 
mysql> create database Dason;
Query OK, 1 row affected (0.03 sec)
mysql> create database Dason2;
Query OK, 1 row affected (0.00 sec)
mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)
mysql> quit
Bye

恢复数据库:

[root@localhost ~]# mysql -uroot Dason < /tmp/Dason.sql 
[root@localhost ~]# mysql -uroot Dason2 < /tmp/Dason2.sql 
[root@localhost ~]# mysql -uroot zrlog < /tmp/zrlog.sql 

实现主从同步:

[root@localhost ~]# mysql -uroot
Welcome to the MySQL monitor. 
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.06 sec)
mysql> change master to master_host='192.168.8.132',master_user='repl',master_password='123456',master_log_file='DasonCheng1.000001',master_log_pos=10844;
Query OK, 0 rows affected, 2 warnings (0.46 sec)
#IP为主的IP;file、pos分别为主的filename和position。

检测主从是否建立成功:
mysql> start slave;
Query OK, 0 rows affected (0.22 sec)

mysql> show slave status\G
 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
[root@DasonCheng mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

主从配置搭建完成;

17.5 测试主从

参数:

 主服务器上
 binlog-do-db=      //仅同步指定的库
 binlog-ignore-db= //忽略指定库
 从服务器上
 replicate_do_db=
 replicate_ignore_db=
 replicate_do_table=
 replicate_ignore_table=
 replicate_wild_do_table=   //如aming.%, 支持通配符% 
 replicate_wild_ignore_table=
  • 注: 进行从服务器的配置时尽量使用参数“replicate_wild_”,使匹配更精确,提升使用性能。

测试:

主服务器:

mysql> show tables;
+---------------------------+
| Tables_in_Dasontest        |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
+---------------------------+
删除表:
mysql> drop table db;
mysql> show tables;
+---------------------------+
| Tables_in_Dasontest        |
+---------------------------+
| columns_priv              |
| event                     |
+---------------------------+

从服务器:

主服务器删除表之前:
mysql> show tables;
+---------------------------+
| Tables_in_Dasontest        |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
+---------------------------+
主服务器删除表之后:
mysql> show tables;
+---------------------------+
| Tables_in_Dasontest        |
+---------------------------+
| columns_priv              |
| event                     |
+---------------------------+

配置完成!

© 著作权归作者所有

共有 人打赏支持
脑洞老湿_
粉丝 2
博文 148
码字总数 124412
作品 0
荆州
Linux Mint 17.1 正式发布

Linux Mint 17.1 正式发布,代号为 'Rebecca' MATE。Linux Mint 17.1 是 LTS 版本,将会支持到 2019 年。此版本包括一些改进和大量的新特性,让你的桌面环境更舒适。 Linux Mint 17.1 MATE 版...

oschina ⋅ 2014/11/30 ⋅ 18

Linux Mint 17.1 'Rebecca' Xfce 发布

Linux Mint 17.1 'Rebecca' Xfce 发布,Linux Mint 17.1 'Rebecca' 在年前正式发布了 Mate 和 Cinnamon 桌面(DEs)版本,前几天发布了 Linux Mint 17.1 KDE 版本。现在正式发布 Linux Mint...

oschina ⋅ 2015/01/12 ⋅ 13

Linux Mint 17.1 RC 发布

Linux Mint 17.1 RC 发布,代号为 'Rebecca' MATERC。Linux Mint 17.1 是 LTS 版本,直到 2019 年。此版本包括许多软件更新和桌面新特性。 Linux Mint 17.1 MATE 版本包括两个默认配置的窗口...

oschina ⋅ 2014/11/16 ⋅ 5

OPNsense 17.1 发布,防火墙和路由平台

OPNsense 17.1 发布了。 OPNsense 是一个开源易用,而且易于构建的基于 FreeBSD 的防火墙和路由平台。包括大多数商业防火墙的特性。提供功能完整却易用的 GUI 管理界面。新的测试版本提供了S...

达尔文 ⋅ 2017/02/01 ⋅ 0

Linux Mint 17.1 "KDE" 发布

采用 KDE 桌面系统的 Linux Mint 发布了 17.1 版本,下载地址: linuxmint-17.1-kde-64bit.iso (1,656MB, SHA256, torrent). 该版本基于 KDE 4.14,详细改进记录请看:http://blog.linuxmint...

oschina ⋅ 2015/01/09 ⋅ 9

Linux Mint 支持中文字体

默认情况下,Linux Mint 17.1"Rebecca"使用 Noto 字体,但对于这些字体 (noto-fonts) 程序包没有提供对 CJK (中文/日语/朝鲜语) 的支持。换句话说,这些语言中的文本的呈现效果是通过回退...

Nori ⋅ 2014/11/26 ⋅ 0

Linux Mint 17.1 使用女性代号 'Rebecca'

Linux Mint 17.1 的代码号打破了传统,并不是以 Q 开头的,使用 R 开头。Linux Mint 17.1 决定使用代号‘Rebecca’,这个女性化的代号。 丽贝卡源自于希伯来语,它的意思是“绑定”。人名则是...

oschina ⋅ 2014/09/16 ⋅ 12

Cinnamon 2.4 桌面环境推出新功能

Linux Mint 发布新的 Cinnamon 桌面环境,最新版本已经成为 Linux Mint 17.1 版本的默认桌面,Linux Mint 17.1 是 LTS 版本中一个第一个更新版本。 关于 Cinnamon 2.4: Cinnamon 2.4 配备了...

oschina ⋅ 2014/11/04 ⋅ 9

OPNsense 17.1 rc1 发布,防火墙和路由平台

OPNsense 17.1 rc1 发布了。 OPNsense 是一个开源易用,而且易于构建的基于 FreeBSD 的防火墙和路由平台。包括大多数商业防火墙的特性。提供功能完整却易用的 GUI 管理界面。新的测试版本提供...

达尔文 ⋅ 2017/01/23 ⋅ 0

Manjaro Linux 17.1-rc3,基于 Arch Linux 的操作系统

Manjaro Linux 17.1-rc3 发布了。开发团队的工作重心主要放在 Calamares,Xorg-Server,QT 5.10 和内核上。此外,在新安装包中添加了 Thunderbird。 目前支持的内核: linux316 3.16.51 lin...

达尔文 ⋅ 2017/12/28 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 14分钟前 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 23分钟前 ⋅ 0

springcloud+jps+mybatis多数据库配置

多数据库配置 配置我们目录结构设置: config ---datasource ----jpa ----mybatis ----redis Datasource中是数据的相关配置 Jap中是springDatajpa的相关配置 Mybatis中是mybatis的相关配置 ...

大-智-若-愚 ⋅ 30分钟前 ⋅ 0

Spring mvc HandlerMapping 实现机制

概述 当DispatcherServlet接受到客户端的请求后,SpringMVC 通过 HandlerMapping 找到请求的Controller。 HandlerMapping 在这里起到路由的作用,负责找到请求的Controller。 Spring MVC 默认...

轨迹_ ⋅ 33分钟前 ⋅ 0

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 今天 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 今天 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 今天 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 今天 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部