博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL主从配置
阅读量:6990 次
发布时间:2019-06-27

本文共 5447 字,大约阅读时间需要 18 分钟。

hot3.png

第十七章 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语句落地。

工作原理

181041_KcYy_3706800.png

应用环境

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

17.2 准备工作

安装并启动MySQL服务。

17.3 配置主服务器

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

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

编辑完成后重启mysql服务:

[root@1 ~]# /etc/init.d/mysqld restartShutting down MySQL...... SUCCESS! Starting MySQL.................. SUCCESS!

查看mysql库文件:

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

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

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

[root@1 ~]# cd /data/mysql/备份一个数据库:[root@1 mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql新建一个数据库:[root@1 mysql]# mysql -uroot -p123456 -e "create database a1test"将备份的数据恢复到新建的数据库中:[root@1 mysql]# mysql -uroot -p123456 a1test < /tmp/zrlog.sql

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

[root@1 mysql]# mysql -uroot -p123456Welcome 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为“从”的IPmysql> 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 |+-------------------+----------+--------------+------------------+-------------------+| a1linux1.000001 |    10844 |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)#记住file和position(设置主从同步时会使用)mysql> quitBye

备份主库中所有数据库:

[root@1 mysql]# mysqldump -uroot -p123456 1 > /tmp/1.sql[root@1 mysql]# mysqldump -uroot -p123456 12 > /tmp/12.sql

17.4 配置从服务器

编辑配置文件:

[root@localhost ~]# vim /etc/my.cnf……server-id=130……[root@localhost ~]# /etc/init.d/mysqld restartShutting 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)? yesWarning: Permanently added '192.168.8.132' (ECDSA) to the list of known hosts.root@192.168.8.132's password: 12.sql                                             100% 1259     1.2KB/s   00:00    1.sql                                              100% 1258     1.2KB/s   00:00    zrlog.sql                                             100% 9864     9.6KB/s   00:00

创建库:

[root@localhost ~]# mysql -urootWelcome 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> quitBye

恢复数据库:

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

注意: 该过程要保证主从数据库内容的一致。

实现主从同步

[root@localhost ~]# mysql -urootWelcome 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: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

以上操作完成后,解锁主库的表(在主上操作):

[root@1 mysql]# mysql -uroot -p123456Welcome 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                     |+---------------------------+

即,主从配置成功!

转载于:https://my.oschina.net/u/3706800/blog/1813717

你可能感兴趣的文章
IOS的三种CallBack
查看>>
VC++编程中常用的字符串转换函数
查看>>
.NET与Java互通AES算法加密解密
查看>>
C++ 结构体初始化
查看>>
POJ 1416
查看>>
Classic Binary Search
查看>>
论文阅读笔记三十二:YOLOv3: An Incremental Improvement
查看>>
条件、循环、函数定义、字符串操作练习
查看>>
关于list在转json时的一点小问题
查看>>
Ubuntu 查看文件以及磁盘空间大小管理
查看>>
ExtJS与jQuery的一点细节上的对比
查看>>
Struts2源码浅析-初始化
查看>>
nginx安装
查看>>
angularjs 利用filter进行表单查询及分页查询
查看>>
stack
查看>>
SCAU 8588 表达式求值
查看>>
OD使用教程5 - 调试篇05|解密系列
查看>>
kindeditor 操作时同步到textarea
查看>>
修改已经释放了的请求号
查看>>
重写和强制转换再调用能编译但不能运行
查看>>