mysql replication 学习笔记

        Mysql的 replication是一种多个mysql数据库做主从同步的方案,它是一个异步复制的过程,从一个主数据库(master)将数据复制

到一个或者多个从数据库(slave),我们可以将应用对于数据库写的操作写入master,而读的操作则从slave读取,这样可以有效的分

担master的压力,从而更好的支持并发。

        mysql的主从复制配置比较简单,实验中我使用 本机 192.168.2.149作为master,另一台192.168.2.139作为slave进行配置。

        需要注意的是mysql的版本,slave与master最好保持一致,至少要保证salve的版本高于master,否则会存在兼容性的问题。

实验环境:

        master:   操作系统 fedora 17, mysql 版本  5.5.29

        slave: 操作系统 fedora19,mysql版本 5.5.35

首先配置master:

       安装完mysql之后,修改/etc/my.cnf文件,在[mysqld]属性下加入:

        #slave会基于此log-bin来做replication

       log-bin=/var/lib/mysql/mysql-bin.log

        #master的标识

        server-id=1

        #需要同步的数据库

        binlog-do-db=ssh 

        #保持使用事务的InnoDb在复制过程中的一致性

        innodb_flush_log_at_trx_commit=1

        sync_binlog=1

       

        然后保存退出,并且重启mysql。

       进入mysql的命令行模式,执行:

        mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.168.2.%' IDENTIFIED BY 'repl';

        在master上创建账户repl,密码repl,以供slave用这个帐号来做数据同步,其中ip配置 192.168.2.%,%为通配符,可以让ip为

192.168.2.0到192.168.2.255的机子都使用repl账户来登录master。

        然后show master status;  查看master状态:

        +------------------+----------+--------------+------------------+
        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
        +------------------+----------+--------------+------------------+
        | mysql-bin.000001 |     1353 | ssh          |                  |
        +------------------+----------+--------------+------------------+

        记住file和 position的值,slave配置中需要用到。

 

配置slave:

       同样,先配置/etc/my.cnf文件,在[mysqld]属性下加入如下配置:

       #log-bin文件位置,跟master配置成一致,可以方便主从切换

       log-bin=/var/lib/mysql/mysql-bin.log

       #slave的标识,建议使用ip的最后一段

       server-id=139

       #需要复制的数据库

       replicate-do-db=ssh

       #只读

       read-only=1

       修改完成之后重启mysql,然后进入mysql命令行模式,输入

mysql-> CHANGE MASTER TO MASTER_HOST='192.168.2.149',         #指定master
          -> MASTER_USER='repl',                     #登录账户
          -> MASTER_PASSWORD='repl',         #登录密码
          -> MASTER_LOG_FILE='mysql-bin.000001',      #master  log file
          -> MASTER_LOG_POS=1353;                             #master log file position

      配置完成之后,start slave;  这样主从服务器数据同步就开始了。

      执行show slave status; 如果看到 Slave_IO_State的状态是 Waiting for master to send event,则说明配置成功了。

 

      最后是实验阶段,在master数据库中 create database ssh; 会看到 slave 数据库show databases; 看到同样建好了数据库ssh。

     在master创建一个name表,id主键,name字段;  在slave数据库 ssh中一样看到了表name。

      在master执行 insert into (name) values('aaa');  在slave中执行 select * from name;  即可看到刚在master插入的值。

       mysql 的主从复制至此配置完成。

 

半同步复制:

 

        半同步复制只支持mysql 5.5 之后的版本。

        首先要配置好主从复制。

master端:install plugin rpl_semi_sync_master soname 'semisync_master.so'

                     set global rpl_semi_sync_master_enabled=on ;

 

slave端: install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

                   set global rpl_semi_sync_slave_enabled=on ;

 

即可配置完成,通过命令   show variables like 'rpl_semi%'; 可以查看半同步复制的配置状态。

 

 

 

参考:

       http://blog.csdn.net/bluishglc/article/details/5744303

       http://blog.chinaunix.net/uid-25557346-id-3480726.html  

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值