MySQL 主从复制原理及搭建

一.主从复制的工作过程:

二.MySQL复制类型

  1. 基于SQL语句的复制
  2. 基于行的复制
  3. 混合复制

三.实验环境

OS:CentOS 6.5 x64

master:192.168.0.134

slave:192.168.0.135

三.配置主从复制

1.配置时间同步

master:配置为时间服务器

[[email protected] ~]# yum install ntp
编辑/etc/ntp.conf 添加如下两行:
server 127.127.1.0
fudge 127.127.1.0 stratm 8
service  ntpd start

slave:同步master时间

[[email protected] ~]# yum install ntpdate
[[email protected] ~]# ntpdate  192.168.0.134  
 6 May 06:37:58 ntpdate[6653]: adjust time server 192.168.0.134 offset -0.469705 sec

2.安装MySQL

slave 和 master:

[[email protected] ~]# yum install  mysql-server  mysql -y
[[email protected] ~]# /etc/rc.d/init.d/mysqld start
[[email protected] ~]# chkconfig mysqld on
[[email protected] ~]# mysqladmin -u root password "123.com"

3.编辑配置文件

master:

编辑/etc/my.conf添加如下几行
server-id=134  #设置id,主从不同
log-bin=master-bin #开启二进制日志
log-slave-update=true
重启MySQL服务
[[email protected]~]# service mysqld restart

slave:

编辑/etc/my.conf添加如下几行
server-id=135
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
read-only=1 #这里可以设置mysql为仅读,不对root生效
重启MySQL服务
[[email protected] ~]# service mysqld restart

3.登录mysql,给slave授权

master:

mysql> grant replication slave on *.* to ‘slave‘@‘192.168.0.%‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |      181 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

# File:日志名   Position:偏移量

4.登录MySQL,配置同步

slave:

mysql> change master to master_host=‘192.168.0.134‘,master_user=‘slave‘,master_password=‘123456‘,master_log_file=‘master-bin.000001‘,master_log_pos=181;
Query OK, 0 rows affected (0.12 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.134
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 181
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 252
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 181
              Relay_Log_Space: 405
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)


#查看同步状态Slave_IO和Slave_SQL是YES说明主从同步成功。


四.测试

1.在master上面新建一个数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> create database guoxh charset ‘utf8‘;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| guoxh              |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

2.在slave上面查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| guoxh              |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)


#在slave上面可以看到刚才新建的数据库,则说明主从复制配置成功。

时间: 2024-10-10 07:16:14

MySQL 主从复制原理及搭建的相关文章

【MySQL主从复制原理及搭建全过程】

目录 准备工作 主从复制原理 开始搭建主从复制 本文将使用mariaDB数据库实现主从复制,其步骤与MySQL数据库无差异. MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避免这个风险. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品. Red Hat Enterprise Linux/Ce

MySQL主从复制原理深入解析与练习

MySQL主从复制画图描述: MySQL主从复制原理上图详解: ① 用户做crud操作,写入数据库,更新结果记录到binlog中: ② 主从同步是主找从的,从库IO发起请求,主库的主进程看从库的master change中给的参数是否合法,如果合法主进程交给IO进程进行3操作,否则拒绝: ③ 主库根据master的位置点,从这个位置点的binlog日志一直到binlog最后,将其准备发送给从库: ④ 将找到的binlog日志发给从库,并且还会发送新的日志点: ⑤ 从库收到binlog日志,将其写

MySQL主从复制原理和实践

mysql主从复制 mysql支持单向 双向 链式级联 实时 异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他服务器充当从服务器(Slave) mysql主从复制的应用场景 1.主从服务器互为备份 2.主从服务器读写分离分担网站压力 读写分离 中大型公司:通过程序(php,java) 测试环境:代理软件(mysql-proxy,amoeba) 门户网站:分布式dbproxy(读写分离,hash负载均衡,健康检查) 主从同步实践操作(多实例环境) 1.主库上面设置s

mysql 主从复制原理

主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理 mysql主从复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlo

mysql 主从复制集群搭建

话说一个正确的文章能敌千钧万马,一句善意的点拨能敌百万雄狮,一个好友的帮助能让你拨开云雾见青天.搭建mysql主从同步,这两天看网上的博客教程很多,当然,错误的文章会误导你很多,我就被误导了.现将这两天的搭建过程详细记录: 前期准备:关闭防火墙 关闭SELINUX 关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq  #保存退出 s

Mysql主从复制原理过程

1.自个画的流程图. 2.简单描述mysql主从复制原理过程 2.1(对应上图步骤1) 在SLAVE服务器上执行start slave命令开启主从复制开关,开始进行主从复制. 2.2(对应上图步骤2) 此时,SLAVE服务器的I/O线程会通过在MASTER上已经授权的复制用户权限请求连接MASTER服务器,并请求从指定binlog日志文件的指定位置(日志文件名和位置就是在配置主从配置复制服务时执行change master命令指定的)之后开始发送binlog日志内容. 2.3(对应上图步骤3)

Mysql主从复制原理与实践

Mysql主从复制原理: 1.Mysql支持单双向.链式级联.异步复制.可以一主一从,也可以一主多从. 2.链式级联中的从是下级从的主.类似A-->B-->C-->D. 3.主从复制配好后,数据库的更新必须在主服务器上进行,以免造成主从冲突. 4.主从服务器架构可实现对用户的请求实现读写分离.从处理用户的select,主处理update,insert,delete等更新.以此保持主从实时同步. 5.可以把从服务器根据业务来拆分. 6.mysql主从复制是异步复制.master与slave

[转]MySQL主从复制原理介绍

MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新. MySQL 使用3个线程来执行复制功能,其中1个在主服务器上,另两个在从服务器上.当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句.主服务器创建一个线程将二进制日志中的内容发送到从服务器.该线程

MySQL主从复制原理及实践

第1章 MySQL的主从复制介绍 MySQL的主从复制方案,和上述文件及文件系统级别同步是类似的,都是数据的传输.只不过MySQL无需借助第三方工具,而是其自带的同步复制功能.另外一点,MySQL的主从复制并不是磁盘上文件直接同步,而是逻辑的binlog日志同步到本地再应用执行的过程. 复制可以单向:M=>S,也可以是双向M<==>M,也可以是多M换装同步等.如果设置了链式级联复制,那么,从(slave)服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器.链式级联复制类似