• MySQL 5.5主从复制(Replication)


    简介

    MySQL的主从复制(Replication),可以保持两台MySQL数据库的内容一致。因为其同步过程是异步的,所以备份数据库上做任何操作,都不会影响主数据库的性能。对游戏后台数据库而言,这是一个重大的优势:对备份数据库的查询、备份等操作都不会影响游戏的线上运行。配置主从复制有许多教程,但都很繁琐。我根据官方文档,总结出一个简单的配置流程。

    配置

    • 线上运行的数据库,称之为Master服务器;备份的数据库,称之为Slave服务器

    • 分别修改两台服务器上的MySQL配置文件/etc/mysql/my.cnf:

      • Master服务器上加入这两行(直接去掉注释即可):

          server-id = 1
          log_bin = /var/log/mysql/mysql-bin.log
        
      • 然后重启MySQL:

         service mysql restart
        
      • Slave服务器加入这一行:

          server-id = 2
        
      • 然后重启MySQL:

          service mysql restart
        
    • 把Master数据库备份传给Slave数据库:

      • 方法一:MyISAM格式可以直接拷贝,速度快:

        • 在Master服务器上备份数据库,可以只有指定的数据库,不同步mysql库:

            mkdir /masterdb
            mysqlhotcopy --resetmaster --flushlog --addtodest --regexp=<数据库匹配正则表达式> /masterdb
          
        • 如果原来已经设置过slave,现在要恢复数据,那么

          • 先在Slave服务器上mysql中停止slave模式并重置:

              stop slave;
              reset slave;
            
          • 然后关闭mysql:

              stop mysql
            
          • 删除原有同名的数据库。

        • 停止mysql后,把备份的Master数据库目录传到Slave服务器上的mysql目录中,可以用scp命令拷贝:

            scp -r -P <端口> /masterdb/* root@<IP地址>:/Jpcq/MySQL/
          
        • 拷贝到Slave的文件需要修改owner:

            chown -R mysql:mysql *
          
        • 修改Slave的my.cnf文件,禁止同步mysql库:

            replicate-ignore-db=mysql
          
        • 启动mysql:

            start mysql
          
        • 重新开启slave模式,在mysql中执行:

            change master to master_host='<Master IP地址>', master_user='<用户名>', master_password='<密码>';
            start slave;
          
      • 方法二:使用mysqldump,通用,但是慢:

        • 在Master服务器上备份数据库:

            mysqldump --all-databases --master-data >apply_slave.sql
          
        • 把备份文件dbdump.db传到Slave服务器上,恢复数据库:

            mysql <apply_slave.sql
          
        • 在Slave服务器上开启slave模式,在mysql中执行:

            change master to master_host='<Master IP地址>', master_user='<用户名>', master_password='<密码>';
            start slave;
          

    维护

    • Slave显示同步状态:

        show slave statusG;
      
    • 显示进程列表:

        show processlistG;
      
    • Master显示正在同步的Slaves:

        show slave hosts;
      
    • Master显示最新binlog位置:

        show master status;
      

    MySQL 5.5 - 5.7的改进

    • MySQL 5.5的主从复制是单线程的,性能受限。
    • MySQL 5.6的不同数据库可以并行,单个数据库还是顺序执行的。
    • MySQL 5.7不再受限制,所有Master数据库并行执行的事务,Slave也可以并行执行。
    • MySQL 5.7的Slave还支持从多个Master同步数据库。
  • 相关阅读:
    完美解决IE8有两个进程的问题
    用ccproxy + stunnel做个加密代理
    Hyper-V 共享式网络链接 端口映射
    NET Framework 4.0的安装失败处理
    c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .
    设置IE8 多个Table只产生一个进程
    SSH Secure Shell Client中文乱码的解决办法
    OOD设计模式
    MVC设计模式
    乐观锁和悲观锁
  • 原文地址:https://www.cnblogs.com/tinyfish/p/5177490.html
Copyright © 2020-2023  润新知