文档章节

17.1

脑洞老湿_
 脑洞老湿_
发布于 2017/09/01 10:00
字数 1243
阅读 1
收藏 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                     |
+---------------------------+

配置完成!

© 著作权归作者所有

共有 人打赏支持
下一篇: 14.4
脑洞老湿_
粉丝 3
博文 152
码字总数 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
8.1K
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
2.8K
13
Linux Mint 17.1 RC 发布

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

oschina
2014/11/16
2.3K
5
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
3.5K
9
OPNsense 17.1 发布,防火墙和路由平台

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

达尔文
2017/02/01
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
39
4
Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
12
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
19
0

中国龙-扬科
昨天
4
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部