Mysql replication 配置

MySQL 设定写入 Master 后, 自动 Replication 到 Slave 去, 运作基本原理是:

  1. INSERT/UPDATE/DELETE 语法, 自动写入 Master 的 binlog file.
  2. 由 GRANT REPLICATION 授权的账号, 自动将 SQL 语法 repl 到 Slave 的 DB 执行.
  3. 因而完成 Replication 的动作.

========================================================================

操作系统:Linux

Master端IP:192.168.2.122

Slave端IP:192.168.2.123

注意:在做配置的过程中,最好不要向 Master 数据库做写入操作。

1        主机master设置

1.1       测试用数据库

1.       建立名为test1的数据库

create database test1;

2.       建立表名为test1的表

CREATE TABLE `test1` ( `id` bigint(20) unsignedNOT NULL AUTO_INCREMENT,   `name`  varchar(100)
,   PRIMARY KEY(`id`)  );

3.       在表test1中插入3条测试数据

INSERT INTO `test1` VALUES (1,'name1');

INSERT INTO `test1` VALUES (2,'name2');

INSERT INTO `test1` VALUES (3,'name3');

1.2       设置Mysql Replication

1.       增加一用于数据库同步的用户root

mysql>GRANT REPLICATIONSLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO'root'@'192.168.2.123' IDENTIFIED BY 'password';

(授与从192.168.2.123主机上登录用户root数据复制权限)

2.       使权限生效,这步可不做,因为过会要重启mysql

mysql>flush privileges;

3.       退出mysql命令行界面

mysql> exit

4.       停止mysql服务

service mysqld stop

5.       更改Mysql配置文件/etc/my.cnf

1)       打开mysql配置文件

vi /etc/my.cnf

2)       在配置文件中添加以下内容

   #bind-address           = 127.0.0.1

  
server-id               = 1    (注意不能与其他服务器的配置一样)
log_bin                 = /var/log/mysql/mysql-bin.log

# 若是 innodb, 且有用 transaction 的话, 需再加入下面两行
innodb_flush_log_at_trx_commit=1
sync_binlog=1

#如果指定具体的数据库,需加入下面一行

binlog-do-db= test1

3)      记录 master status

mysql>show master status; #这边资料都要记好,等一下设定slave要用

+----------------------+------------+------------------+----------------------+
| File                     | Position   | Binlog_Do_DB | Binlog_Ignore_DB  |
+----------------------+------------+------------------+----------------------+
| mysql-bin.000014  |      232   |                      |                          |
+----------------------+------------+------------------+----------------------+

6.       将要进行热备的数据库test1打包

tar czvf /var/lib/mysql/test1.tar.gztest1

7.       启动Mysql

service mysqld start

2        备机slave设置

1.       更改Mysql配置文件/etc/my.cnf

3)       打开Mysql的配置文件

vi /etc/my.cnf

4)       在配置文件中添加以下内容

master-host = 192.168.2.122

master-user = root

master-password = password

master-port = 3306

master-connect-retry = 10

master_log_file='mysql-bin.000014'
# 这边就要用到之前 Master 抄下来的值.

master_log_pos=232   # 这边就要用到之前 Master 抄下来的值.

replicate-do-db = test1  #当需要具体到某个数据库的时候,才配置该行

2.       将先前(1.2中第6步)从master打包的数据库文件test1.ter.gz发送到备机slave的相应目录下,本次在/var/lib/mysql目录,解压文件并修改其可执行权限

cd /var/lib/mysql

tar zxvf
 test1.tar.gz

chmod 700 test1

chmod 660 test1

3.       重新启动Mysql服务

service mysqld
 restart

4.       启动slave

mysql> START SLAVE;

查看slave状态:

mysql> show slavestatus\G;

*************************** 1. row***************************

            Slave_IO_State:Waiting for master to
send event

               Master_Host: 192.168.2.122

               Master_User: root

               Master_Port: 3306

             Connect_Retry: 10

           Master_Log_File: mysql-bin.000002

       Read_Master_Log_Pos: 582

            Relay_Log_File: mysqld-relay-bin.000005

             Relay_Log_Pos: 515

     Relay_Master_Log_File: mysql-bin.000002

          Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

           Replicate_Do_DB: test1,test1

       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: 582

           Relay_Log_Space: 515

           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

1 row in set (0.00 sec)

******************************************************

可以看到

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果都是yes,代表已经在同步

至此server服务器上的Mysql设置完毕

3        测试

1.       主机和备机都正常运行情况,对主机进行增加一条记录INSERT
INTO `test1` VALUES(6,'name6');
检测备机是否也增加了此条记录,经检查,数据相同

2.       主机和备机都正常运行情况,在主机没有对数据库操作的情况下测试主备数据是否一致,经查看主机和备机的的test1表,记录相同,说明备机成功复制数据。

3.       主机和备机都正常运行情况,停掉备机mysql,对主机进行添加记录的操作,然后再重启备机mysql,经检查,两边数据完全一致。

4.       主机和备机都正常运行情况,在主机执行mysql>
delete fromtest1 where id=3;
检测两边数据是否一致。经检查,两边数据完全一致。

时间: 2024-10-29 11:28:06

Mysql replication 配置的相关文章

【MySQL】Semisynchronous Replication 配置和参数说明

 前文 Semisynchronous Replication 概述 已经介绍 semi sync的基本原理以及特性,优缺点.本章将进入实践,毕竟"纸上来得终觉浅,绝知此事要躬行".^_^一环境准备   1 MySQL 5.5 + 版本   2 本例已经搭建好的MySQL Replication 同时也有另一种搭建方法先配置好semi sync ,然后再搭建主从. 提示:如何搭建主从 请参考  如何搭建MySQL 主从复制 二 安装 说明:此例演示的是M-M 架构 需要在主库和备库同时

MySQL Replication 主从配置的示例

 mysql replication 主要通过复制二进制日志,在slave上执行master一样的来SQL来保持master 和slave的数据一致.     好处不必多说, 第一个 master-slave的结构首先能实现读写分离, 对于缓解数据库Server的鸭梨会起到一定好处, 另外当master宕机的话, 可以马上切到slave上边,可以提高系统的可用性. 1. mysql 的主从复制是通过 bin log来实现的, 首先master要开启二进制日志  代码如下 复制代码     ser

Mysql主从配置,实现读写分离

原文:Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从

相当简单的MySQL主从复制配置教程

主从复制好处 它可以保证我们数据实时异步备份并且主服务器不受外部影响安全可靠 主从复制原理 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的: 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器.master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环. 这些日志可以记录发送到slave服务器的更新.当一个slaves服务器连接master服务器时,它通知ma

深入解析半同步与异步的MySQL主从复制配置_Mysql

简单来讲MySQL的主从复制就是一个C/S架构的应用.master可以认为是我们通常意义上所认为的server,slave可以当作是一台client.slave上的I/O线程去请求master上数据,而master验证通过slave的信息后就允许slave接入,然后进行数据变化信息的发送.一.MySQL主从复制原理这里我以MySQL5.5为例来说一下MySQL的主从复制的原理: 首先由备节点的I/O线程负责向主节点请求数据,主节点验证通过以后会由dump线程把数据发送给备用节点.备用节点的I/O

MySQL MHA配置常见问题

    MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难以避免这样或那样的错误.本文是对MHA配置中常见问题的一个汇总,供大家参考.   1.非root用户等效性环境等效性配置  a.添加所有节点(含管理节点)主机名及IP到host文件,所有节点操作  b.生成基于非root用户(如使用mysql账户)的对称密钥,使用ssh-keygen  c.

corosync pacemaker mysql replication 实现高可用

对度娘的搜索算法,以及竞价排名,我只想说我去年买了个表. 一,mysql replication主从配置 请参考:mysql replication 主从(master-slave)同步 http://www.111cn.net/database/mysql/83904.htm 二,corosync pacemaker安装配置 请参考:corosync pacemaker nginx 高可用 安装配置上面二篇博客的/etc/hosts是定义的不一样的,以mysql replication为准,也

Docker mysql 主从配置详解及实例_Mysql

Docker mysql 主从配置 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU

MySQL Replication 遇到 error 1236错误的修复方法

  MySQL Replication 遇到 error 1236 就有点麻烦了~ 通常都是 binlog 出问题造成的~ (Master 或 Slave 的 binlog 坏掉都有可能造成此错误) 通常遇到这个状况, 都是 Slave 的 binlog 坏掉, 就 Slave DB 的资料重倒来解决, 但是此次遇到是 Master 的 binlog 坏掉, 就有点苦了~ 错误讯息如下: Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 123