`
wx1569466809
  • 浏览: 69237 次
文章分类
社区版块
存档分类
最新评论

MySQL主从配置

 
阅读更多

第十七章 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                     |
+---------------------------+

即,主从配置成功!

转载于:https://my.oschina.net/1995blog/blog/1594696

分享到:
评论

相关推荐

    MySQL主从配置详解.pdf

    综上所述,MySQL主从配置的原理是通过二进制日志的记录和复制过程,实现数据在主从服务器之间的同步。配置MySQL主从复制可以带来许多好处,如分散查询负载、提升查询效率、数据备份和读写分离等,但同时也需要注意...

    MySQL主从配置完整步骤资料

    ### MySQL主从配置知识点详解 #### 一、主服务器配置 **1.1 创建复制用户** - **目的**: 为了确保从服务器能够连接到主服务器并获取数据更新。 - **命令**: ```sql mysql&gt; GRANT REPLICATION SLAVE ON *.* TO '...

    MySql主从配置

    MySQL主从配置是一种数据库复制技术,它允许一个MySQL服务器(主服务器)的数据更新同步到其他一个或多个服务器(从服务器)上。这种配置在大型应用、分布式系统和高可用性环境中非常常见,因为它提供了数据备份、...

    mysql主从配置资源

    MySQL主从配置是数据库高可用性和负载均衡的一种常见策略,尤其在Windows环境下,为了实现读写分离、主从复制和一主多从架构,可以极大地提高数据库系统的性能和稳定性。结合Spring框架,我们可以轻松地在应用程序中...

    mysql主从配置操作手册

    ### MySQL主从配置操作详解 #### 一、MySQL服务器复制配置背景 MySQL的主从复制是一种常见的高可用性和数据冗余解决方案。通过设置一个主服务器(Master)和一个或多个从服务器(Slave),可以实现数据的实时同步...

    Mysql主从配置.docx

    #### 一、为什么使用MySQL主从配置? 在现代数据库系统中,随着业务规模的不断扩大和用户数量的激增,单一数据库服务器往往难以满足高性能和高可用性的需求。为了提高系统的整体性能和可靠性,采用MySQL主从配置...

    mysql热备及mysql主从配置

    "mysql热备及mysql主从配置"是实现这一目标的关键技术。热备是指在不影响主数据库正常服务的情况下,实时同步主数据库的数据到备用数据库,以确保在主库出现问题时能够快速切换到备库,减少业务中断时间。而MySQL...

    mysql主从数据库配置

    MySQL主从配置的优点主要有两方面: 1. 负载均衡:通过将查询操作分散到多个从服务器上,减轻了主服务器的压力,提高了系统的查询效率。 2. 数据冗余与故障恢复:从服务器可以作为主服务器的备份,一旦主服务器出现...

    Mysql主从配置详解

    ### MySQL主从配置详解 #### 一、MySQL主从配置概述 MySQL的主从复制机制是一种数据同步方式,主要用于实现数据库的数据备份与高可用性。通过设置一个或多个从服务器来复制主服务器上的数据更新操作,可以有效分散...

    小记一次mysql主从配置解决方案

    MySQL主从配置是一种常见的数据库高可用性和负载均衡策略,它主要目标是实现读写分离,提升数据库系统的并发处理能力。在大数据量或者复杂的报表查询场景下,某些SQL语句可能会导致长时间锁定表,从而影响到前端应用...

    mysql主从库配置

    ### MySQL 主从库配置详解 #### 一、MySQL 安装与环境变量设置 在进行 MySQL 主从库配置之前,我们需要确保已经正确安装了 MySQL,并设置了相应的环境变量。以下是具体的步骤: 1. **下载 MySQL 免安装版**: - ...

    mysql5.6安装主从配置

    ### 二、MySQL主从配置 #### 1. 配置主服务器 在主服务器上编辑MySQL配置文件`/etc/my.cnf`,添加主服务器配置: ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=test ``` #### 2. 启动主服务器 ```...

    Mysql主从配置my.cnf.zip

    Mysql主从配置文件,主文件my.cnf,从文件my.cnf完整版。部分配置如下: [client] port = 3306 socket =/tmp/mysql.sock [mysql] no-auto-rehash prompt="\u@\h [\d]&gt;" #pager="less -i -n -S" #tee=/opt/mysql/...

    tp3.2部署mysql主从配置.zip

    "tp3.2部署mysql主从配置"的主题涉及了Laravel框架的一个旧版本(ThinkPHP 3.2)与MySQL数据库的主从设置。以下是对这个主题的详细解释: 首先,ThinkPHP 3.2是一个基于MVC设计模式的PHP开发框架,它简化了Web应用...

Global site tag (gtag.js) - Google Analytics