mysql主从复制实现(基于mysql5.5版本)

一,mysql主从复制原理介绍:

mysql的复制是基于二进制日志实现的,二进制日志记录的是一切可能引起数据库发生改变的操作,因此,二进制日志对mysql十分重要,利用它可以实现数据库的即时点还原,对于备份恢复数据库意义重大。

mysql复制中,主服务器的事务操作提交后,会将事件记录到二进制日中去,这时从服务器会启动IO_Thread来与主服务器通信,将主服务器中的二进制日志中的事件复制到本地并保存在本地的中继日志中,而后,从服务器会通过SQL_Thread将中继日志中的事件提取出来在数据库中进行重放,以此来与主服务器保持同步。

二,实验规划:

系统平台:rhel6.5 x86_64

mysql版本为5.5.42

主服务器地址:192.168.1.30

从服务器地址:192.168.1.65

三,实验步骤:

1,主服务器配置:

(1)编辑mysql的配置文件

# vim /etc/my.cnf
 [mysqld]
innodb_file_per_table = 1
log-bin = master-bin  #启用二进制日志,必须启用!
log-bin-index = master-bin.index  #二进制日志的索引文件
server-id = 1 #设置一个全局唯一的server id用以标示各服务器,范围是0-(2^32-1)
sync-binlog = ON # 用于事务安全

(2)创建一个具有复制权限的用户

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘testuser‘@‘192.168.1.%‘ IDENTIFIED BY ‘111111‘;

2,从服务器配置:

(1)编辑mysql的配置文件

# vim /etc/my.cnf
[mysqld]
relay-log = relay-log #开启中继日志
relay-log-index = relay-log.index #中继日志的索引文件
server-id = 2 # 全局唯一的server-id 
read-only = YES #从服务器为只读

(2)连接到主服务器,开始复制数据

mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.1.30‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘master-bin.000001‘,MASTER_LOG_FIEL_POS=107,MASTER_USER=‘testuser‘,MASTER_PASSWORD=‘111111‘;
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.1.30
                  Master_User: testuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: relay-log.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: No
            Slave_SQL_Running: No
              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: 107
              Relay_Log_Space: 107
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 0
1 row in set (0.00 sec)
ERROR: 
No query specified

启动IO_Thread和SQL_Thread

mysql> START SLAVE;

再次查看

...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

3,测试复制

在主服务器上创建testdb数据库

mysql> CREATE DATABASE testdb;
mysql> USE testdb;
mysql> CREATE TABLE numbers(ID INT);
mysql> INSERT INTO numbers VALUES (1), (2), (3);

在从服务器上查看:

mysql> SHOW SLAVE STATUS\G;
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 473
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 620
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |               
| mysql              | 
| performance_schema | 
| testdb             | 
+--------------------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM testdb.numbers;
+------+
| id   |
+------+
|    1 | 
|    2 | 
|    3 | 
+------+
3 rows in set (0.00 sec)

可以看到,数据库已从主服务器复制到从服务器,至此mysql的主从复制完成了。

时间: 2024-12-23 15:05:15

mysql主从复制实现(基于mysql5.5版本)的相关文章

Mysql主从复制(基于Log)

Master(主)操作 实验机:两台 IP:192.168.1.5      192.168.1.10 操作系统:Linux RedHat 6.5 Mysql版本:5.6.31 #  vim /etc/my.cnf#log_slave_updates  注释掉这行server-id=1         将id号改为1 Slave(从)操作 #:vim /etc/my.cnf   #log_slave_updates  注释掉这行server-id=2     #将server_id改为2 主从(

基于mysql5.6版本的主从库同步

系统:centos6.4 mysql版本:5.6.17 主库:192.168.31.111 从库:192.168.31.235 主库操作: 1.配置my.cnf文件开启二进制日志 log_bin = on server_id = 1 2.建立用于同步数据库的账号rep grant replication slave on *.* to 'rep'@'192.168.31.%' identified by 'redhat'; select user,host,password from mysql

MySQL主从复制--mysql-proxy实现MySQL-5.6读写分离

大纲

mysql主从复制--mysql-5.5异步、半同步配置

背景介绍 mysql5.5之前版本,mysql主从复制比较简单 mysql5.6:gtid,multi-thread replication master 1 启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2 选择一个唯一的server id server-id = [0~2^32] 3 创建具有复制权限的用户 replication slave,复制的从节点 replication client,联系master,获

MySQL主从复制的配置

MySQL主从复制的配置 环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205     主机名:edu-mysql-01 从节点IP:192.168.1.206     主机名:edu-mysql-02 主机配置:4核CPU.4G内存 依赖课程 <高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)> MySQL主从复制官方文档 ht

【转】解决MySQL主从复制不一致的情况

解决MySQL主从复制不一致的情况 十月 09, 2011 ( NO COMMENTS ) 稍微有些规模的网站,基本上都会配置mysql主从复制,一方面用mysql的主从做数据库的读写分离,另一方面mysql本身的单机备份不是很强,一般采用主从架构,在从上进行数据备份. 在MySQL主从复制过程中或多或少出现一些主从不同步的情况,本文将对数据主从不同步的情况进行简单的总结,请注意本文主要从数据库层面上探讨数据库的主从不一致的情况. 1.网络的延迟 由于mysql主从复制是基于binlog的一种异

mysql5.7:mysql安装和基于SSL加密的主从复制(详细剖析)

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 目录: --------mysql-5.7.13简介及安装 --------配置mysql-5.7.13的ssl加密传输 --------基于SSL加密传输实现mysql-5.7.13的主从复制 一. Mysql5.7.13简介 1. Mysql5.7的主要优化 mysql5.7原生支持centos7.*版本的systemd 更好的性能:对于多核

MySQL主从复制&mdash;&mdash;MySQL-5.6基于GTID及多线程的复制

一.Mysql 5.6 新特性 .... 复制功能的改进 ⒈支持多线程复制,(slave-parallel-workers=0     0: 表示禁用多线程功能:)事实上是针对每个database开启相应的独立线程.即每个库有一个单独的(sql thread),如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了. ⒉支持启用GTID,对运维人员来说应该是一件令人高兴的事情,在配置主从复制,传统的方式里,你需要找到binlog和P

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制

什么是主从复制: 通过将Mysql的某一台主机的 数据复制到其它主机,复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slave).进行复制时,所有对数据表的写操作必须在主服务器上进行.否则,因为主服务器不会同步从服务器的数据,会导致主从数据不一致的问题.mysql的主从复制功能是构建高性能大型应用服务器的基础 主从复制的作用: 1.辅助实现数据的备份 2.实现数据服务的高可用和异地容灾 3.实现多个服务器分摊负载 主从复制的实现原理: 实现整个复制过程主要