mysql数据库实现主从复制

复制是指将主数据库的DDL和DML操作通过二进制日志(二进制日志保存了master上的所有改变,并且可以在slave上重新执行)传到从服务器上,然后在从服务器上对这些日志重新执行,从而使从服务器和主服务器的数据保持同步。
mysql支持一台主服务器同时项多台从服务器进行复制,从服务器同时可以作为其他服务器的主服务器,实现链状的复制。
mysql复制的优点:
    a、如果主服务器出现故障,可以快速切换到从服务器提供服务
    b、可以在从服务器上执行查询操作,降低主服务器的访问压力
    d、可以在从服务器上执行备份,以避免备份期间影响主服务器的服务
横向扩展:使用复制最多的应用。为了减少主机点上的负载,搭建一个从节点来用于相应读操作。通过一个负载均衡服务器,将读操作重定向到合适的从节点上,而写请求交由主节点处理。事务首先在主节点上提交,然后复制给从节点并且在节点上应用;这样使用的异步复制比同步复制更快,更具有可扩展性。

配置Master(10.0.8.29):    
将服务器配置为master,确保该服务器有一个活动的二进制日志和唯一的服务器ID。服务器ID用于区分服务器。具体配置如下:
vi /usr/local/mysql5/etc/my.cnf        //添加如下几行
    log-bin=mysql-bin
    binlog-format=mixed                  //日志类型有普通日志,二进制日志和混合日志。此为mixed混合日志
    server-id=1
添加一个复制用户,并赋予一定的权限
create user repuser;
grant replication slave on *.* to 'repuser'@'10.0.8.30' identified by 'aixocm';
flush privileges;                  //刷新权限
show master status;          //查看主服务器的状态
replication slave权限只是使这个用户可以从master上取得二进制日志的转储数据。

配置slave(10.0.8.30):
与master一样,给slave分配一个唯一的服务器ID。配置如下:
vi /usr/local/mysql5/etc/my.cnf
    log-bin=mysql-bin
    binlog_format=mixed
    server-id       = 10

链接Master和Slave:
将slave指向master,让它知道从哪里进行复制。只需知道主服务器的主机名,端口号,赋予相应权限的用户和用户密码:
mysql> change master to master_host='10.0.8.29',master_user='repuser',master_password='aixocm',master_log_file='mysql-bin.000004',master_log_pos=340;     //此配置中的log_file和log_pos可以在master上利用show master status查看到。
mysql> start slave;
mysql> show slave status\G
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes                //如果有这两个状态,则说明配置成功。
至此,已经建立了master和slave之间的复制关系。在主数据库中增删改数据库内容,然后在slave中查看是否复制过来。

已有数据的主从复制
    (1)锁定主数据库的表
       mysql> flush tables with read lock;

    (2)导出数据库
       # ./mysqldump -u root --opt --all-databases > mysql.sql

    (3)从服务器导入数据库
       # mysql -u root < /usr/src/mysql.sql

    (4)从服务器设定主服务器的相关参数
       mysql> change master to master_host='10.0.8.29',master_user='repuser',master_password='aixocm',master_log_file='mysql-bin.000005',master_log_pos=2447;
       mysql> start slave;
       mysql> show slave status\G

    (5)解锁主服务器
       mysql> unlock tables;

已有数据直接从服务器进行复制操作
    (1)主数据库配置文件配置
       # vim my.cnf
         binlog-do-db    = dear
      binlog-ignore-db        = mysql

    (2)从服务器配置      
       # vim my.cnf
         binlog-do-db    = dear
      binlog-ignore-db        = mysql
         relay_log               = mysqld-relay-log
         read_only = 1

       mysql> change master to master_host='10.0.8.29',master_user='repuser',master_password='aixocm',master_log_file='mysql-bin.000001',master_log_pos=0;

二进制日志的操作
    (1)查看二进制日志
     # mysqlbinlog mysql-bin.000005
     # mysqlbinlog --start-datetime="2013-11-20 14:30:00" mysql-bin.000006
     # mysqlbinlog --stop-datetime="2013-11-20 14:30:00" mysql-bin.000006
     # mysqlbinlog --start-postion=1000 mysql-bin.000007
     # mysqlbinlog --stop-postion=1000 mysql-bin.000007
     mysql> show binlog events in 'mysql-bin.000016';

    (2)删除二进制日志
     mysql>reset master;   \\清除所有日志
     mysql>purge master logs to 'mysql-bin.000004';   \\删除指定编号之前的所有日志
     mysql>purge master logs before '2013-11-20 00:00:00";   \\删除指定时间之前的日志
     # vim my.cnf
     --expire_log_days = 90
    
    (3)使用二进制日志恢复数据库
     # mysqlbinlog --stop-postion=800 mysql-bin.000009 | mysql -u root -p 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值