文档章节

MySQL主从配置

阿dai
 阿dai
发布于 2017/08/30 19:26
字数 1161
阅读 106
收藏 0
点赞 0
评论 0

第十七章 MySQL主从配置

17.1 MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

主从过程

  1. 主将更改操作记录到binlog中
  2. 从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中
  3. 从根据relaylog里面的SQL语句按顺序执行

说明: 该过程有三个线程,主上有一个log dump线程,用来和从的i/o线程传递binlog;从上有两个线程,其中i/o线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的SQL语句落地。

工作原理

mark

应用环境

  1. 备份重要数据
  2. 分担主库数据读取压力

17.2 准备工作

安装并启动MySQL服务。

17.3 配置主服务器

编辑配置文件添加如下参数:

[root@localhost ~]# vim /etc/my.cnf
……
server-id=132
#自定义
log_bin=adailinux1
#指定log前缀

编辑完成后重启mysql服务:

[root@adailinux ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.................. SUCCESS! 

查看mysql库文件:

[root@adailinux ~]# ls -lt /data/mysql/
……
-rw-rw----  1 mysql mysql       20 8月  30 15:52 adailinux1.index
-rw-rw----  1 mysql mysql      120 8月  30 15:52 adailinux1.000001
……

说明: 重启后生成两个前缀为adailinux1的二进制文件。

新建一个数据库为试验做准备:

[root@adailinux ~]# cd /data/mysql/

备份一个数据库:
[root@adailinux mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql

新建一个数据库:
[root@adailinux mysql]# mysql -uroot -p123456 -e "create database adaitest"

将备份的数据恢复到新建的数据库中:
[root@adailinux mysql]# mysql -uroot -p123456 adaitest < /tmp/zrlog.sql

创建一个用于同步数据的用户:

[root@adailinux 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 |
+-------------------+----------+--------------+------------------+-------------------+
| adailinux1.000001 |    10844 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#记住file和position(设置主从同步时会使用)
mysql> quit
Bye

备份主库中所有数据库:

[root@adailinux mysql]# mysqldump -uroot -p123456 adai > /tmp/adai.sql
[root@adailinux mysql]# mysqldump -uroot -p123456 adai2 > /tmp/adai2.sql

17.4 配置从服务器

编辑配置文件:

[root@localhost ~]# vim /etc/my.cnf
……
server-id=130
……

[root@localhost ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.............................. SUCCESS! 

说明: 从的server-id要和主的server-id不同。

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

[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: 
adai2.sql                                             100% 1259     1.2KB/s   00:00    
adai.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 adai;
Query OK, 1 row affected (0.03 sec)

mysql> create database adai2;
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 adai < /tmp/adai.sql 
[root@localhost ~]# mysql -uroot adai2 < /tmp/adai2.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='adailinux1.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@adailinux 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_adaitest        |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
+---------------------------+

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

从服务器:

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

即,主从配置成功!

© 著作权归作者所有

共有 人打赏支持
阿dai
粉丝 57
博文 176
码字总数 252289
作品 0
昌平
运维

暂无相关文章

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 32分钟前 ⋅ 0

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 39分钟前 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 40分钟前 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 45分钟前 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 今天 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部