`

MySQL Replication,主从同步( Master-Slave)

阅读更多

 

MySQLReplication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。

 

下图是MySQL官方给出了使用Replication的场景:


 Replication原理

Mysql Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。在 Master Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL 线程和 I/O 线程)在 Slave 端,另外一个线程(I/O 线程)在 Master 端。

要实现 MySQL Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。

看上去MySQLReplication原理非常简单,总结一下:

  • 每个从仅可以设置一个主。
  • 主在执行sql之后,记录二进制log文件(bin-log)。
  • 从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。

从这几条Replication原理来看,可以有这些推论:

  • 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
  • 如果主从的网络断开,从会在网络正常后,批量同步。
  • 如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。
  • 一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。

如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。

 

主从配置:

 

实验环境: Master: 192.168.1.250    已经通过源码安装mysqlmysql-5.1.51

                Slave:  192.168.1.128    已经通过源码安装mysqlmysql-5.1.51

  

1. 登陆Master主机,创建mysql 的slave用户

mysql> grant replication slave,reload,super on *.* to slave@192.168.1.128 identified by 'slave';

2. 修改master的mysql配置文件 my.ini 或 my.cnf

server-id=1 #设置 server id

log-bin= mysql-binlog # 打开二进制日志 ,最好放在不同的硬盘上,减小 IO 消耗

expire_logs_day= 1 0 # 设置二进制日志保存日期

max_binlog_size=500M # 设置 每个 binlog 文件的大小

3. 重新启动mysql服务

# service mysql restart

4. 获取相关的db信息, 供slave链接db时使用

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000027 |      183 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

5. 登陆slave 主机,修改my.ini 或 my.cnf 配置文件

server-id=2 # 配置多个从服务器时依次设置 id 号

slave-skip-errors=all # mysql 复制可能出现主服务器上可以运行的语句,从服务器不能够运行,所以我们在 my.cnf 加一句 slave-skip-errors=all 意思是忽略所有的 sql 语句错误!

relay-log= mysql -relay-bin # 该文件用于存放 Slave 端的 I/O 线程从 Master 端读取的二进制文件信息

关闭 binlog 主要考虑到我们使用 Master 的 binlog 进行增量备份,这里就不需要了。

6. 重启mysql 服务后,slave主机登陆mysql,进行slave服务器授权(这之前可以用mysqldump将master数据库导入到slave数据库)

mysql> change master to master_host='192.168.1.250', master_user='slave', master_password='slave',master_log_file='mysql-bin.000027',master_pos=183;

7. 启动slave同步。

mysql> start slave;

8. 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

mysql> show slave status

这时可以在master数据库新建一个数据库,然后在slave 端show databases; 查看复制是否成功。

  • 大小: 30.5 KB
分享到:
评论

相关推荐

    Mysql主从同步备份策略

    Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...

    mysql5.5 master-slave(Replication)主从配置

    一主一从: Master: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.2 Slave: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.3 修改主机Master配置文件 (/etc/my.cnf) 代码如下: [mysqld] //至少要有...

    mysql主从同步配置.docx

    mysql主从同步配置,要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全按顺序的...

    MySQL主从同步原理介绍

    Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另一个Mysql instance(我们称之 Slave)。在 Master 与 Slave之间的实现整个复制过程主要由三个线程来完成,其中两个...

    mysql5.7 主从配置docker配置文件

    grant replication slave,replication client on *.* to 'user1'@'%' identified by '1'; flush privileges; show master status; 记录file和pos,用在slave中的master_log_file和master_log_pos中。 在slave...

    mysql_cluster.zip

    配置主从同步数据库信息 mysql_db: - {name: test1, replicate: true} - {name: test2, replicate: false} - {name: test3, replicate: false} 配置同步账号 mysql_user: - {name: repl, passwd: repl, priv: '*.*:...

    mysql镜像备份mysql镜像备份

    5、启动从库,可以进行主从库数据同步 /opt/mysql/share/mysql/mysql start /opt/mysql/bin/mysql -u root -p mysql>load data from master; 说明:这一步不这么做也可以,用数据库倒入或者直接目录考过来也行。 6...

    MySQL进阶-高可用、分布式、主从复制原理、备份恢复

    主从复制 (Master-Slave Replication):一个主服务器处理写操作,一个或多个从服务器处理读操作。 集群解决方案:如MySQL Group Replication, MySQL NDB Cluster等。 自动故障转移:当主服务器宕机时,自动将一个从...

    MySQL主从镜像双机

    1、在主控服务器上执行以下命令,为从服务器创建一...GRANT REPLICATION SLAVE ON *.* TO replic@192.168.1.143 IDENTIFIED BY '123456'; 2、修改主从服务器配置文件 主my.cnf内容: log-bin=mysqlmaster server-id=1

    Mysql主从同步Last_IO_Errno:1236错误解决方法

    Mysql主从同步的Last_IO_Errno:1236错误是什么原因呢,我们要如何来解决这个问题呢?下面和小编一起来看看关于此问题的记录与解决办法。 [removed]ec(2);[removed] 从服务器错误代码: Last_IO_Errno: 1236 Last...

    mysql binlog日志恢复【亲测有效,有例子实测】

    二进制日志(binnary log)以事件形式记录了...主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 数据恢复:通过mysqlbinlog工具来恢复数据。

    InnoDB引擎数据库主从复制同步心得

    1)MySQL的replication过程是一个异步同步的过程,并非完全的主从同步,所以同步的过程中是有延迟的,如果做了读写分离的业务的话,建议也要监控此延迟时间;  2)MySQL的master与slave机器记得server-id要保持不...

    MySQL5.1主从同步出现Relay log read failure错误解决方法

    众所周知MySQL5.1的Replication是比较烂的。MySQL的每一个版本更新关于同步方面每次都是可以看到一大堆。但MySQL 5.1性能是比较突出的。所以经不住诱惑使用MySQL 5.1。所以也要经常遇到一些Bug。如: 代码如下: ...

    master and slave have equal MySQL server ids

    代码如下:Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-...

    配置Mysql主从服务实现实例

    配置Mysql主从服务实现实例 ### 配置主数据库 my.cnf server-id=1 log-bin=master-bin log-bin-index=master-bin.index ### 在主数据库上创建同步账号 create user backup; GRANT REPLICATION SLAVE ON *.* TO...

    MySQL5.6主从复制(mysql数据同步配置)

    mysql> grant replication slave on *.* to 'rep1'@'192.168.56.2' identified by '123456'; Query OK, 0 rows affected (0.01 sec) 2、修改主数据库服务器的配置文件my.cnf,开启BINLOG,并设置...

    mysql5.6 主从复制同步详细配置(图文)

    环境:Centos 6.5 mysql5.6 采用的是虚拟机环境 master ip:192.168.17.140 ...grant replication slave,replication client on *.* to ‘root’@’192.168.17.141’ identified by ‘happy123’; show m

    MySQL数据库InnoDB引擎主从复制同步经验总结

    1)MySQL的replication过程是一个异步同步的过程,并非完全的主从同步,所以同步的过程中是有延迟的,如果做了读写分离的业务的话,建议也要监控此延迟时间; 2)MySQL的master与slave机器记得server-id要保持不一致...

    MHA实现mysql主从数据库手动切换的方法

    本文实例讲述了MHA实现mysql主从数据库手动切换的方法,分享给大家供大家参考。具体方法如下: 一、准备工作 1、分别在Master和Slave执行如下,方便mha检查复制: 代码如下:grant all privileges on *.* to ‘root’@...

Global site tag (gtag.js) - Google Analytics