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  







猜你喜欢

转载自blog.csdn.net/zxcvqwer19900720/article/details/25200735